metanorma 1.7.4 → 1.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d3a50d8116aadebecaf6fbdcdc1b9ffaee19cb233bf38ad6ea2f7b6b1b320fa8
4
- data.tar.gz: 67283cbe9df47b100e3b6598f08bb7a00e9be1602d3a6cc7d41ff3b527673556
3
+ metadata.gz: f574203232cd03cda37b838dadb48b3c1b6a8f5c77e014baa361d520c7849690
4
+ data.tar.gz: d13191d73999401fc80e40eac105a1561d7275e423e86eb61a1c6bb29b660145
5
5
  SHA512:
6
- metadata.gz: 195226d8f70127bfe659d1a032824482ec02911ca8f7f1e9d0f75f14f5b319e90912300345a50c05422b6dd87fc5b0b1674b11f66471e06c8ff79c39a4ab3db3
7
- data.tar.gz: 4fbf96851ca7857e83767abbb86c13cc9a28130b289543f82b9d30841d55298703149b82d48597c6d25acc8ea7a0667ff00a49784187f471d0f685c0598a2104
6
+ metadata.gz: 128ccdcbb3366e183dce6e0e2de0a6b68be1275fd5d159ac4c6326daa3be1ceba039e810a65f569260d2315f8e1f295c0a524717b43acc88bafc02b076edf3f9
7
+ data.tar.gz: 01562ff056874fb738098f843952a80de45aa71d9bfac65b61209233b8942bb77ab3bc43fbc2572a74e87d68b8e8f9b0002f4a1643853be10d19ecc39206cce4
data/Gemfile.devel ADDED
@@ -0,0 +1,2 @@
1
+ gem "metanorma-cli"
2
+ gem "isodoc", git: "https://github.com/metanorma/isodoc", branch: "main"
@@ -13,10 +13,11 @@ module Metanorma
13
13
 
14
14
  # @return [Array<String>] documents-inline to inject the XML into
15
15
  # the collection manifest; documents-external to keeps them outside
16
- attr_accessor :directives, :documents, :bibdatas, :coverpage
16
+ attr_accessor :directives, :documents, :bibdatas, :coverpage, :dirname
17
17
  attr_accessor :disambig, :manifest
18
18
 
19
19
  # @param file [String] path to source file
20
+ # @param dirname [String] directory of source file
20
21
  # @param directives [Array<String>] documents-inline to inject the XML into
21
22
  # the collection manifest; documents-external to keeps them outside
22
23
  # @param bibdata [RelatonBib::BibliographicItem]
@@ -28,30 +29,33 @@ module Metanorma
28
29
  # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
29
30
  def initialize(**args)
30
31
  @file = args[:file]
32
+ @dirname = File.dirname(@file)
31
33
  @directives = args[:directives] || []
32
34
  @bibdata = args[:bibdata]
33
35
  @manifest = args[:manifest]
34
36
  @manifest.collection = self
35
- c = @directives.detect { |x| x.is_a?(Hash) && x["coverpage"] }
36
- c and @coverpage = c["coverpage"]
37
- c = @directives.detect { |x| x.is_a?(Hash) && x["coverpage-style"] }
38
- c and @coverpage_style = c["coverpage-style"]
37
+ @coverpage = Util::hash_key_detect(@directives, "coverpage", @coverpage)
38
+ @coverpage_style = Util::hash_key_detect(@directives, "coverpage-style",
39
+ @coverpage_style)
39
40
  @documents = args[:documents] || {}
40
41
  @bibdatas = args[:documents] || {}
41
42
  if @documents.any? && !@directives.include?("documents-inline")
42
43
  @directives << "documents-inline"
43
44
  end
44
- @documents.merge! @manifest.documents(File.dirname(@file))
45
- @bibdatas.merge! @manifest.documents(File.dirname(@file))
45
+ @documents.merge! @manifest.documents(@dirname)
46
+ @bibdatas.merge! @manifest.documents(@dirname)
47
+ @documents.transform_keys { |k| Util::key(k) }
48
+ @bibdatas.transform_keys { |k| Util::key(k) }
46
49
  @prefatory = args[:prefatory]
47
50
  @final = args[:final]
51
+ @compile = Metanorma::Compile.new
48
52
  @log = Metanorma::Utils::Log.new
49
53
  @disambig = Util::DisambigFiles.new
50
54
  end
51
55
 
52
56
  # rubocop:enable Metrics/AbcSize,Metrics/MethodLength
53
57
  def clean_exit
54
- @log.write(File.join(File.dirname(@file),
58
+ @log.write(File.join(@dirname,
55
59
  "#{File.basename(@file, '.*')}.err.html"))
56
60
  end
57
61
 
@@ -195,7 +199,7 @@ module Metanorma
195
199
  def content_to_xml(elm, builder)
196
200
  return unless (cnt = send(elm))
197
201
 
198
- require "metanorma-#{doctype}"
202
+ @compile.load_flavor(doctype)
199
203
  out = sections(dummy_header + cnt.strip)
200
204
  builder.send("#{elm}-content") { |b| b << out }
201
205
  end
@@ -8,6 +8,7 @@ module Metanorma
8
8
  .targetfile_id(docid, relative: true, read: false,
9
9
  doc: !@files.get(docid, :attachment))
10
10
  dest = newbib.at("./docidentifier") || newbib.at(ns("./docidentifier"))
11
+ dest or dest = newbib.elements[-1]
11
12
  dest.previous = "<uri type='citation'>#{url}</uri>"
12
13
  bib.replace(newbib)
13
14
  end
@@ -178,8 +179,9 @@ module Metanorma
178
179
  def indirect_ref_key(schema, id, docxml)
179
180
  /^#{schema}_/.match?(id) and return id
180
181
  ret = "#{schema}_#{id}"
181
- (k = docxml.root["type"]) && k != schema and
182
- ret = "#{ret}_#{docxml.root['document_suffix']}"
182
+ suffix = docxml.root['document_suffix']
183
+ (k = docxml.root["type"]) && k != schema && suffix and
184
+ ret = "#{ret}_#{suffix}"
183
185
  ret
184
186
  end
185
187
 
@@ -56,7 +56,7 @@ module Metanorma
56
56
  # process each file in the collection
57
57
  # files are held in memory, and altered as postprocessing
58
58
  def files # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
59
- warn "\n\n\n\n\nInternal Refs: #{DateTime.now.strftime('%H:%M:%S')}"
59
+ warn "\n\n\n\n\nRender Files: #{DateTime.now.strftime('%H:%M:%S')}"
60
60
  internal_refs = locate_internal_refs
61
61
  @files.keys.each_with_index do |ident, i|
62
62
  i.positive? && Array(@directives).include?("bare-after-first") and
@@ -121,6 +121,7 @@ module Metanorma
121
121
 
122
122
  # resolve file location for the target of each internal reference
123
123
  def locate_internal_refs
124
+ warn "\n\n\n\n\nInternal Refs: #{DateTime.now.strftime('%H:%M:%S')}"
124
125
  refs = populate_internal_refs(gather_internal_refs)
125
126
  refs.each do |schema, ids|
126
127
  ids.each do |id, key|
@@ -67,8 +67,8 @@ module Metanorma
67
67
  def documents(dir = "")
68
68
  docs = @docref.each_with_object({}) do |dr, m|
69
69
  dr["fileref"] or next m
70
- m[dr["identifier"]] = Document.parse_file(
71
- rel_path_resolve(dir, dr["fileref"]),
70
+ m[Util::key dr["identifier"]] = Document.parse_file(
71
+ Util::rel_path_resolve(dir, dr["fileref"]),
72
72
  dr["attachment"], dr["identifier"], dr["index"]
73
73
  )
74
74
  m
@@ -76,11 +76,6 @@ module Metanorma
76
76
  @manifest.reduce(docs) { |mem, mnf| mem.merge mnf.documents(dir) }
77
77
  end
78
78
 
79
- def rel_path_resolve(dir, path)
80
- p = Pathname.new(path)
81
- p.absolute? ? path : File.join(dir, path)
82
- end
83
-
84
79
  # @param builder [Nokogiri::XML::Builder]
85
80
  def to_xml(builder)
86
81
  builder.manifest do |b|
@@ -114,7 +109,7 @@ module Metanorma
114
109
  drf = builder.docref do |b|
115
110
  b.identifier { |i| i << dr["identifier"] }
116
111
  !dr["attachment"] && !dr["sectionsplit"] &&
117
- d = @collection.bibdatas[dr["identifier"]] and
112
+ d = @collection.bibdatas[Util::key dr["identifier"]] and
118
113
  b.parent.add_child(d.bibitem.to_xml(bibdata: true))
119
114
  end
120
115
  docref_to_xml_attrs(drf, dr)
@@ -148,10 +148,10 @@ module Metanorma
148
148
  "final-content": isodoc_builder(@xml.at(ns("//final-content"))),
149
149
  doctitle: m.at(ns("../bibdata/title"))&.text,
150
150
  docnumber: m.at(ns("../bibdata/docidentifier"))&.text }.each do |k, v|
151
- v and @isodoc.meta.set(
152
- k, v
153
- )
154
- end
151
+ v and @isodoc.meta.set(
152
+ k, v
153
+ )
154
+ end
155
155
  end
156
156
 
157
157
  def isodoc_builder(node)
@@ -0,0 +1,131 @@
1
+ module Metanorma
2
+ class CollectionRenderer
3
+ def docconv
4
+ @tempfile_cache ||= []
5
+ doctype = @doctype.to_sym
6
+ x = Asciidoctor.load nil, backend: doctype
7
+ x.converter.doc_converter(DocOptionsNode.new(@directives, @dirname))
8
+ end
9
+
10
+ def concat_extract_files(filename)
11
+ xml = Nokogiri::XML(File.read(filename, encoding: "UTF-8"), &:huge)
12
+ docs = xml.xpath(ns("//doc-container")).each_with_object([]) do |x, m|
13
+ n = Nokogiri::XML::Document.new
14
+ n.add_child(x.elements.first.remove)
15
+ m << n
16
+ end
17
+ [wrapping_doc(docs.first.dup, xml), docs]
18
+ end
19
+
20
+ def wrapping_doc(doc, xml)
21
+ doc.at(ns("//bibdata")).replace(xml.at(ns("//bibdata")).to_xml)
22
+ sections = wrapping_doc_body(doc)
23
+ wrapping_doc_intro_outro(xml, sections)
24
+ set_displayorder_wrapping_doc(doc)
25
+ end
26
+
27
+ def wrapping_doc_intro_outro(xml, sections)
28
+ p = xml.at(ns("//prefatory-content")) and
29
+ sections.previous = "<preface>#{p.children.to_xml}</preface>"
30
+ p = xml.at(ns("//final-content")) and
31
+ sections.next = "<annex>#{p.children.to_xml}</annex>"
32
+ end
33
+
34
+ def wrapping_doc_body(doc)
35
+ doc.xpath(ns("//annex | //preface | //bibliography")).each(&:remove)
36
+ s = doc.at(ns("//sections"))
37
+ repl = <<~BODY
38
+ <sections><clause id='_collection_placeholder'><p>PLACEHOLDER</p></clause></sections>
39
+ BODY
40
+ s.replace(repl)
41
+ doc.at(ns("//sections"))
42
+ end
43
+
44
+ def set_displayorder_wrapping_doc(doc)
45
+ doc.xpath(ns("//preface/* | //sections/* | //annex"))
46
+ .each_with_index do |x, i|
47
+ x["displayorder"] = i + 1
48
+ end
49
+ doc
50
+ end
51
+
52
+ SECTION_BREAK = '<p class="MsoNormal"><br clear="all" class="section"/></p>'
53
+ .freeze
54
+ DIV1 = '<div class="WordSection1">&#xa0;</div>'.freeze
55
+ DIV2 = '<div class="WordSection2">&#xa0;</div>'.freeze
56
+
57
+ def docconv_convert1(docs)
58
+ docs.each_with_index.with_object([]) do |(d, i), m|
59
+ conv = docconv
60
+ conv.convert_init(d.to_xml(encoding: "UTF-8"), "xxxx", false)
61
+ html = conv.postprocess_cleanup(conv.convert1(d, "xxx", "."))
62
+ @tempfile_cache += conv.tempfile_cache # hold on to the temp img files
63
+ b = Nokogiri::XML(html).at("//body")
64
+ i == docs.size - 1 or
65
+ b << '<p class="MsoNormal"><br clear="all" class="section"/></p>'
66
+ m << b.children
67
+ end
68
+ end
69
+
70
+ def collection_coverpages(conv, docs)
71
+ conv.wordintropage and [DIV2, SECTION_BREAK].reverse.each do |s|
72
+ docs.unshift(Nokogiri::XML(s).root)
73
+ end
74
+ conv.wordcoverpage and [DIV1, SECTION_BREAK].reverse.each do |s|
75
+ docs.unshift(Nokogiri::XML(s).root)
76
+ end
77
+ docs
78
+ end
79
+
80
+ def docconv_convert(filename)
81
+ pref_file, docs = concat_extract_files(filename)
82
+ body = docconv_convert1(docs)
83
+ collection_conv = overall_docconv_converter(body)
84
+ collection_coverpages(collection_conv, body)
85
+ collection_conv.convert(filename, pref_file.to_xml, false)
86
+ end
87
+
88
+ def overall_docconv_cover(collection_conv)
89
+ p = Util::hash_key_detect(@directives, "collection-word-coverpage", nil)
90
+ collection_conv.wordcoverpage =
91
+ Util::rel_path_resolve(@dirname, p)
92
+ p = Util::hash_key_detect(@directives, "collection-word-intropage", nil)
93
+ collection_conv.wordintropage =
94
+ Util::rel_path_resolve(@dirname, p)
95
+ end
96
+
97
+ def overall_docconv_converter(body)
98
+ collection_conv = docconv
99
+ collection_conv.options[:collection_doc] = body.map(&:to_xml).join
100
+ overall_docconv_cover(collection_conv)
101
+
102
+ def collection_conv.postprocess_cleanup(result)
103
+ ret = to_xhtml(super)
104
+ b = ret.at("//div[@id = '_collection_placeholder']")
105
+ b.replace(@options[:collection_doc])
106
+ from_xhtml(ret)
107
+ end
108
+
109
+ collection_conv
110
+ end
111
+
112
+ class DocOptionsNode
113
+ def initialize(directives, dir)
114
+ @dir = dir
115
+ @wordcoverpage =
116
+ Util::hash_key_detect(directives, "document-word-coverpage",
117
+ @wordcoverpage)
118
+ @wordintropage =
119
+ Util::hash_key_detect(directives, "document-word-intropage",
120
+ @wordintropage)
121
+ end
122
+
123
+ def attr(key)
124
+ case key
125
+ when "wordcoverpage" then Util::rel_path_resolve(@dir, @wordcoverpage)
126
+ when "wordintropage" then Util::rel_path_resolve(@dir, @wordintropage)
127
+ end
128
+ end
129
+ end
130
+ end
131
+ end
@@ -5,6 +5,7 @@ require_relative "fontist_utils"
5
5
  require_relative "util"
6
6
  require_relative "files_lookup"
7
7
  require_relative "collection_render_utils"
8
+ require_relative "collection_render_word"
8
9
 
9
10
  module Metanorma
10
11
  # XML collection renderer
@@ -33,7 +34,8 @@ module Metanorma
33
34
  @script = @xml.at("//xmlns:bibdata/xmlns:script")&.text || "Latn"
34
35
  @locale = @xml.at("//xmlns:bibdata/xmlns:locale")&.text
35
36
  @doctype = doctype
36
- require "metanorma-#{@doctype}"
37
+ @compile = Compile.new
38
+ @compile.load_flavor(@doctype)
37
39
 
38
40
  @isodoc = isodoc_create # output processor for flavour
39
41
  @outdir = dir_name_cleanse(options[:output_folder])
@@ -45,8 +47,8 @@ module Metanorma
45
47
  @documents = collection.documents
46
48
  @bibdata = collection.documents
47
49
  @directives = collection.directives
50
+ @dirname = collection.dirname
48
51
  @disambig = Util::DisambigFiles.new
49
- @compile = Compile.new
50
52
  @c = HTMLEntities.new
51
53
  @files_to_delete = []
52
54
  @nested = options[:nested] # if false, this is the root instance of Renderer
@@ -61,6 +63,7 @@ module Metanorma
61
63
  end
62
64
 
63
65
  def flush_files
66
+ warn "\n\n\n\n\nDone: #{DateTime.now.strftime('%H:%M:%S')}"
64
67
  warn @files.files_to_delete
65
68
  @files.files_to_delete.each { |f| FileUtils.rm_f(f) }
66
69
  @files_to_delete.each { |f| FileUtils.rm_f(f) }
@@ -72,31 +75,37 @@ module Metanorma
72
75
  # @option options [Array<Symbol>] :format list of formats
73
76
  # @option options [Strong] :ourput_folder output directory
74
77
  def self.render(col, options = {})
75
- folder = File.dirname col.file
76
78
  warn "\n\n\n\n\nRender Init: #{DateTime.now.strftime('%H:%M:%S')}"
77
- cr = new(col, folder, options)
78
- warn "\n\n\n\n\nRender Files: #{DateTime.now.strftime('%H:%M:%S')}"
79
+ cr = new(col, File.dirname(col.file), options)
79
80
  cr.files
80
- warn "\n\n\n\n\nConcatenate: #{DateTime.now.strftime('%H:%M:%S')}"
81
81
  cr.concatenate(col, options)
82
- warn "\n\n\n\n\nCoverpage: #{DateTime.now.strftime('%H:%M:%S')}"
83
- cr.coverpage if options[:format]&.include?(:html)
84
- warn "\n\n\n\n\nDone: #{DateTime.now.strftime('%H:%M:%S')}"
82
+ options[:format]&.include?(:html) and cr.coverpage
85
83
  cr.flush_files
86
84
  cr
87
85
  end
88
86
 
89
87
  def concatenate(col, options)
90
- options[:format] << :presentation if options[:format].include?(:pdf)
91
- options[:format].uniq.each do |e|
92
- %i(presentation xml).include?(e) or next
88
+ warn "\n\n\n\n\nConcatenate: #{DateTime.now.strftime('%H:%M:%S')}"
89
+ (options[:format] & %i(pdf doc)).empty? or
90
+ options[:format] << :presentation
91
+ concatenate_prep(col, options)
92
+ concatenate_outputs(options)
93
+ end
94
+
95
+ def concatenate_prep(col, options)
96
+ %i(xml presentation).each do |e|
97
+ options[:format].include?(e) or next
93
98
  ext = e == :presentation ? "presentation.xml" : e.to_s
94
99
  File.open(File.join(@outdir, "collection.#{ext}"), "w:UTF-8") do |f|
95
100
  f.write(concatenate1(col.clone, e).to_xml)
96
101
  end
97
102
  end
98
- options[:format].include?(:pdf) and
99
- pdfconv.convert(File.join(@outdir, "collection.presentation.xml"))
103
+ end
104
+
105
+ def concatenate_outputs(options)
106
+ pres = File.join(@outdir, "collection.presentation.xml")
107
+ options[:format].include?(:pdf) and pdfconv.convert(pres)
108
+ options[:format].include?(:doc) and docconv_convert(pres)
100
109
  end
101
110
 
102
111
  def concatenate1(out, ext)
@@ -104,8 +113,7 @@ module Metanorma
104
113
  out.bibdatas.each_key do |ident|
105
114
  id = @isodoc.docid_prefix(nil, ident.dup)
106
115
  @files.get(id, :attachment) || @files.get(id, :outputs).nil? and next
107
-
108
- out.documents[id] =
116
+ out.documents[Util::key id] =
109
117
  Metanorma::Document.raw_file(@files.get(id, :outputs)[ext])
110
118
  end
111
119
  out
@@ -127,6 +135,7 @@ module Metanorma
127
135
  # collection manifest
128
136
  def coverpage
129
137
  @coverpage or return
138
+ warn "\n\n\n\n\nCoverpage: #{DateTime.now.strftime('%H:%M:%S')}"
130
139
  File.open(File.join(@outdir, "index.html"), "w:UTF-8") do |f|
131
140
  f.write @isodoc.populate_template(File.read(@coverpage))
132
141
  end
@@ -153,8 +162,7 @@ module Metanorma
153
162
  # @param builder [Nokogiri::XML::Builder]
154
163
  def docrefs(elm, builder)
155
164
  elm.xpath(ns("./docref[@index = 'true']")).each do |d|
156
- ident = d.at(ns("./identifier")).children.to_xml
157
- ident = @c.decode(@isodoc.docid_prefix(nil, ident))
165
+ ident = docref_ident(d)
158
166
  builder.li do |li|
159
167
  li.a href: index_link(d, ident) do |a|
160
168
  a << ident.split(/([<>&])/).map do |x|
@@ -165,6 +173,11 @@ module Metanorma
165
173
  end
166
174
  end
167
175
 
176
+ def docref_ident(docref)
177
+ ident = docref.at(ns("./identifier")).children.to_xml
178
+ @c.decode(@isodoc.docid_prefix(nil, ident))
179
+ end
180
+
168
181
  def index_link(docref, ident)
169
182
  if docref["fileref"]
170
183
  @files.get(ident, :out_path).sub(/\.xml$/, ".html")
@@ -21,19 +21,25 @@ module Metanorma
21
21
  end
22
22
  end
23
23
 
24
- private
25
-
26
24
  def load_flavor(stdtype)
27
- flavor = "metanorma-#{stdtype}"
28
- unless @registry.supported_backends.include? stdtype
25
+ stdtype = stdtype.to_sym
26
+ flavor = stdtype2flavor(stdtype)
27
+ @registry.supported_backends.include? stdtype or
29
28
  Util.log("[metanorma] Info: Loading `#{flavor}` gem "\
30
29
  "for standard type `#{stdtype}`.", :info)
31
- end
32
30
  require_flavor(flavor)
33
- unless @registry.supported_backends.include? stdtype
31
+ @registry.supported_backends.include? stdtype or
34
32
  Util.log("[metanorma] Error: The `#{flavor}` gem does not "\
35
33
  "support the standard type #{stdtype}. Exiting.", :fatal)
36
- end
34
+ end
35
+
36
+ private
37
+
38
+ STDTYPE2FLAVOR = { plateau: "jis" }.freeze
39
+
40
+ def stdtype2flavor(stdtype)
41
+ flavor = STDTYPE2FLAVOR[stdtype] || stdtype
42
+ "metanorma-#{flavor}"
37
43
  end
38
44
 
39
45
  def require_flavor(flavor)
@@ -67,7 +67,7 @@ module Metanorma
67
67
  out = ref["attachment"] ? ref["fileref"] : File.basename(ref["fileref"])
68
68
  out1 = @disambig.source2dest_filename(out)
69
69
  ret = if ref["fileref"]
70
- { type: "fileref", ref: @documents[identifier].file,
70
+ { type: "fileref", ref: @documents[Util::key identifier].file,
71
71
  rel_path: ref["fileref"],
72
72
  out_path: out1 } # @disambig.source2dest_filename(out) }
73
73
  else { type: "id", ref: ref["id"] }
@@ -74,6 +74,24 @@ module Metanorma
74
74
  end
75
75
  end
76
76
 
77
+ def self.hash_key_detect(directives, key, variable)
78
+ c = directives.detect { |x| x.is_a?(Hash) && x.has_key?(key) } or
79
+ return variable
80
+ c[key]
81
+ end
82
+
83
+ def self.rel_path_resolve(dir, path)
84
+ path.nil? and return path
85
+ path.empty? and return path
86
+ p = Pathname.new(path)
87
+ p.absolute? ? path : File.join(dir, path)
88
+ end
89
+
90
+ def self.key(ident)
91
+ @c ||= HTMLEntities.new
92
+ @c.decode(ident).gsub(/(\p{Zs})+/, " ")
93
+ end
94
+
77
95
  class DisambigFiles
78
96
  def initialize
79
97
  @seen_filenames = []
@@ -1,3 +1,3 @@
1
1
  module Metanorma
2
- VERSION = "1.7.4".freeze
2
+ VERSION = "1.7.6".freeze
3
3
  end
data/metanorma.gemspec CHANGED
@@ -44,4 +44,5 @@ Gem::Specification.new do |spec|
44
44
  spec.add_development_dependency "rspec-command", "~> 1.0"
45
45
  spec.add_development_dependency "rubocop", "~> 1.5.2"
46
46
  spec.add_development_dependency "sassc", "~> 2.4.0"
47
+ spec.add_development_dependency "simplecov", "~> 0.15"
47
48
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.4
4
+ version: 1.7.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-11 00:00:00.000000000 Z
11
+ date: 2024-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciidoctor
@@ -234,6 +234,20 @@ dependencies:
234
234
  - - "~>"
235
235
  - !ruby/object:Gem::Version
236
236
  version: 2.4.0
237
+ - !ruby/object:Gem::Dependency
238
+ name: simplecov
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: '0.15'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - "~>"
249
+ - !ruby/object:Gem::Version
250
+ version: '0.15'
237
251
  description: Library to process any Metanorma standard.
238
252
  email:
239
253
  - open.source@ribose.com
@@ -251,6 +265,7 @@ files:
251
265
  - CHANGELOG.adoc
252
266
  - CODE_OF_CONDUCT.md
253
267
  - Gemfile
268
+ - Gemfile.devel
254
269
  - LICENSE.txt
255
270
  - README.adoc
256
271
  - lib/metanorma.rb
@@ -261,6 +276,7 @@ files:
261
276
  - lib/metanorma/collection_fileprocess.rb
262
277
  - lib/metanorma/collection_manifest.rb
263
278
  - lib/metanorma/collection_render_utils.rb
279
+ - lib/metanorma/collection_render_word.rb
264
280
  - lib/metanorma/collection_renderer.rb
265
281
  - lib/metanorma/compile.rb
266
282
  - lib/metanorma/compile_options.rb