Class: Metanorma::Release::ReleaseMetadata
- Inherits:
-
Object
- Object
- Metanorma::Release::ReleaseMetadata
- Defined in:
- lib/metanorma/release/release_metadata.rb
Constant Summary collapse
- SCHEMA_VERSION =
1
Class Method Summary collapse
- .from_document(metadata, channels:) ⇒ Object
- .from_json(json_string) ⇒ Object
- .from_release_body(body) ⇒ Object
Instance Method Summary collapse
- #channels ⇒ Object
- #doctype ⇒ Object
- #edition ⇒ Object
- #flavor ⇒ Object
- #formats ⇒ Object
- #id ⇒ Object
-
#initialize(data) ⇒ ReleaseMetadata
constructor
A new instance of ReleaseMetadata.
- #revdate ⇒ Object
- #source_path ⇒ Object
- #stage ⇒ Object
- #title ⇒ Object
- #to_h ⇒ Object
- #to_json(*_args) ⇒ Object
- #to_release_body ⇒ Object
Constructor Details
#initialize(data) ⇒ ReleaseMetadata
Returns a new instance of ReleaseMetadata.
49 50 51 52 |
# File 'lib/metanorma/release/release_metadata.rb', line 49 def initialize(data) @data = data freeze end |
Class Method Details
.from_document(metadata, channels:) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/metanorma/release/release_metadata.rb', line 10 def self.from_document(, channels:) data = { 'version' => SCHEMA_VERSION, 'id' => .id.to_s, 'title' => .title, 'edition' => .version.edition, 'stage' => .version.stage.to_s, 'doctype' => .doctype.to_s, 'revdate' => .revdate, 'formats' => .formats, 'channels' => channels.map(&:to_s), 'flavor' => .flavor, 'sourcePath' => .source_path } new(data) end |
.from_json(json_string) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/metanorma/release/release_metadata.rb', line 27 def self.from_json(json_string) data = JSON.parse(json_string) raise ArgumentError, 'Missing required field: id' unless data['id'] raise ArgumentError, 'Missing required field: title' unless data['title'] new(data) end |
.from_release_body(body) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/metanorma/release/release_metadata.rb', line 35 def self.from_release_body(body) return nil if body.nil? || body.empty? match = body.match(/<!--\s*mn-release-metadata\s*\n(.*?)\n-->/m) return nil unless match json_str = match[1] begin from_json(json_str) rescue JSON::ParserError nil end end |
Instance Method Details
#channels ⇒ Object
74 |
# File 'lib/metanorma/release/release_metadata.rb', line 74 def channels = @data['channels'] || [] |
#doctype ⇒ Object
71 |
# File 'lib/metanorma/release/release_metadata.rb', line 71 def doctype = @data['doctype'] |
#edition ⇒ Object
69 |
# File 'lib/metanorma/release/release_metadata.rb', line 69 def edition = @data['edition'] |
#flavor ⇒ Object
75 |
# File 'lib/metanorma/release/release_metadata.rb', line 75 def flavor = @data['flavor'] |
#formats ⇒ Object
73 |
# File 'lib/metanorma/release/release_metadata.rb', line 73 def formats = @data['formats'] || [] |
#id ⇒ Object
67 |
# File 'lib/metanorma/release/release_metadata.rb', line 67 def id = @data['id'] |
#revdate ⇒ Object
72 |
# File 'lib/metanorma/release/release_metadata.rb', line 72 def revdate = @data['revdate'] |
#source_path ⇒ Object
76 |
# File 'lib/metanorma/release/release_metadata.rb', line 76 def source_path = @data['sourcePath'] |
#stage ⇒ Object
70 |
# File 'lib/metanorma/release/release_metadata.rb', line 70 def stage = @data['stage'] |
#title ⇒ Object
68 |
# File 'lib/metanorma/release/release_metadata.rb', line 68 def title = @data['title'] |
#to_h ⇒ Object
63 64 65 |
# File 'lib/metanorma/release/release_metadata.rb', line 63 def to_h @data.dup end |
#to_json(*_args) ⇒ Object
54 55 56 |
# File 'lib/metanorma/release/release_metadata.rb', line 54 def to_json(*_args) JSON.generate(@data) end |
#to_release_body ⇒ Object
58 59 60 61 |
# File 'lib/metanorma/release/release_metadata.rb', line 58 def to_release_body json_str = JSON.generate(@data) "<!-- mn-release-metadata\n#{json_str}\n-->" end |