Module: Metanorma::Release::PublicationSerializer

Defined in:
lib/metanorma/release/publication_serializer.rb

Constant Summary collapse

METADATA_COMMENT_PATTERN =
/<!--\s*mn-release-metadata\s*\n(.*?)\n-->/m

Class Method Summary collapse

Class Method Details

.from_json(json_string) ⇒ Object

Raises:

  • (ArgumentError)


27
28
29
30
31
32
33
34
35
36
# File 'lib/metanorma/release/publication_serializer.rb', line 27

def self.from_json(json_string)
  data = JSON.parse(json_string)
  raise ArgumentError, "Missing required field: id" unless data["id"]
  unless data["title"]
    raise ArgumentError,
          "Missing required field: title"
  end

  Publication.(data)
end

.from_release_body(body) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/metanorma/release/publication_serializer.rb', line 12

def self.from_release_body(body)
  return nil if body.nil? || body.empty?

  match = body.match(METADATA_COMMENT_PATTERN)
  return nil unless match

  from_json(match[1])
rescue JSON::ParserError
  nil
end

.to_json(publication) ⇒ Object



23
24
25
# File 'lib/metanorma/release/publication_serializer.rb', line 23

def self.to_json(publication)
  JSON.generate((publication))
end

.to_release_body(publication) ⇒ Object



8
9
10
# File 'lib/metanorma/release/publication_serializer.rb', line 8

def self.to_release_body(publication)
  "<!-- mn-release-metadata\n#{JSON.generate((publication))}\n-->"
end