metanorma 1.4.14 → 1.5.1

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: 1dac5b5e07f1da6269c97d7b1b0e0f5854f83eb1f91337395228b7b7f3354bc4
4
- data.tar.gz: 848eb435ee3b51e989fc94e99c757e6ce920ff42a4ab137b7f6f5e765b4effc1
3
+ metadata.gz: 8c62d15c313b6595ca184016faa8f0996de7d1d8f1321e932e6adc89d230682d
4
+ data.tar.gz: f13f182618c3fec66f42e412bfe3d4baa142b877421458fb2555912ce077f8e5
5
5
  SHA512:
6
- metadata.gz: 8364f0a11089ca85aa958a141c992922dd6366443e6d053197860ce14403961b9cb4069aba120ce4054242ebf5a9e40bf1d786fb9c4659dee89ea8ab4b57f22c
7
- data.tar.gz: 578e518e52ed9d3404e576e957f0f523010dd2b0dcbd2376760185b92bbdd9aacac8bc2adb962425c3c3dc0ccd7fac528b377277d02b4f63c777696f77fd43b4
6
+ metadata.gz: 3d7e934fa1d1f0348a9877f25e037294e09513a3df04873ec6394b908d443cb2152480bd14c3e5948071657a6c4bcee2907964b8a2b408c7bb0d67a3f99e37c5
7
+ data.tar.gz: e1e626b4795c18b5a934262bc37faf0c4fe997832661f73e27e852f6bf66f67bde8c2b2edc86343463e3fde70eefd722e9af19fca186957761048193c70fc29b
@@ -18,6 +18,9 @@ jobs:
18
18
  uses: metanorma/ci/.github/workflows/rubygems-release.yml@main
19
19
  with:
20
20
  next_version: ${{ github.event.inputs.next_version }}
21
+ release_command: rake release
22
+ bundler_cache: false
23
+ post_install: gem install bundler rake rspec
21
24
  secrets:
22
25
  rubygems-api-key: ${{ secrets.METANORMA_CI_RUBYGEMS_API_KEY }}
23
26
  pat_token: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
@@ -8,7 +8,8 @@ module Metanorma
8
8
  # UUIDs, so that their IDs can at least be registered to be tracked
9
9
  # as existing.
10
10
  def read_anchors(xml)
11
- xrefs = @isodoc.xref_init(@lang, @script, @isodoc, @isodoc.i18n, {})
11
+ xrefs = @isodoc.xref_init(@lang, @script, @isodoc, @isodoc.i18n,
12
+ { locale: @locale })
12
13
  xrefs.parse xml
13
14
  xrefs.get.each_with_object({}) do |(k, v), ret|
14
15
  read_anchors1(k, v, ret)
@@ -37,10 +38,8 @@ module Metanorma
37
38
 
38
39
  # @param bib [Nokogiri::XML::Element]
39
40
  # @param identifier [String]
40
- def update_bibitem(bib, identifier) # rubocop:disable Metrics/AbcSize
41
- docid = bib&.at(ns("./docidentifier"))&.children&.to_xml
42
- return fail_update_bibitem(docid, identifier) unless @files[docid]
43
-
41
+ def update_bibitem(bib, identifier)
42
+ docid = get_bibitem_docid(bib, identifier) or return
44
43
  newbib = dup_bibitem(docid, bib)
45
44
  bib.replace(newbib)
46
45
  _file, url = targetfile(@files[docid], relative: true, read: false,
@@ -51,6 +50,19 @@ module Metanorma
51
50
  newbib.at(ns("./docidentifier")).previous = uri_node
52
51
  end
53
52
 
53
+ def get_bibitem_docid(bib, identifier)
54
+ # IDs for repo references are untyped by default
55
+ docid = bib.at(ns("./docidentifier[not(@type)]")) ||
56
+ bib.at(ns("./docidentifier"))
57
+ docid &&= docid.children.to_xml
58
+ if @files[docid]
59
+ docid
60
+ else
61
+ fail_update_bibitem(docid, identifier)
62
+ nil
63
+ end
64
+ end
65
+
54
66
  def fail_update_bibitem(docid, identifier)
55
67
  error = "[metanorma] Cannot find crossreference to document #{docid} "\
56
68
  "in document #{identifier}."
@@ -74,7 +86,8 @@ module Metanorma
74
86
  # in another file in the collection)
75
87
  # @param file [String] XML content
76
88
  # @param identifier [String] docid
77
- # @param internal_refs [Hash{String=>Hash{String=>String}] schema name to anchor to filename
89
+ # @param internal_refs [Hash{String=>Hash{String=>String}] schema name to
90
+ # anchor to filename
78
91
  # @return [String] XML content
79
92
  def update_xrefs(file, identifier, internal_refs)
80
93
  docxml = Nokogiri::XML(file) { |config| config.huge }
@@ -141,11 +154,12 @@ module Metanorma
141
154
  def update_direct_refs_to_docs(docxml, identifier)
142
155
  erefs = collect_erefs(docxml)
143
156
  docxml.xpath(ns("//bibitem[not(ancestor::bibitem)]")).each do |b|
144
- docid = b&.at(ns("./docidentifier[@type = 'repository']"))&.text
157
+ docid = b.at(ns("./docidentifier[@type = 'repository']"))&.text
145
158
  next unless docid && %r{^current-metanorma-collection/}.match(docid)
146
159
 
147
160
  update_bibitem(b, identifier)
148
- docid = b&.at(ns("./docidentifier"))&.children&.to_xml or next
161
+ docid = b.at(ns("./docidentifier")) or next
162
+ docid = docid.children.to_xml
149
163
  erefs[:citeas][docid] and update_anchors(b, docxml, docid)
150
164
  end
151
165
  end
@@ -210,9 +224,9 @@ module Metanorma
210
224
  # anchor given the locality, and insert it into the crossref
211
225
  def update_anchor_create_loc(_bib, eref, docid)
212
226
  ins = eref.at(ns("./localityStack")) or return
213
- type = ins&.at(ns("./locality/@type"))&.text
227
+ type = ins.at(ns("./locality/@type"))&.text
214
228
  type = "clause" if type == "annex"
215
- ref = ins&.at(ns("./locality/referenceFrom"))&.text
229
+ ref = ins.at(ns("./locality/referenceFrom"))&.text
216
230
  anchor = @files[docid][:anchors].dig(type, ref) or return
217
231
  ins << "<locality type='anchor'><referenceFrom>#{anchor.sub(/^_/, '')}"\
218
232
  "</referenceFrom></locality>"
@@ -25,8 +25,9 @@ module Metanorma
25
25
  def initialize(collection, folder, options = {}) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
26
26
  check_options options
27
27
  @xml = Nokogiri::XML collection.to_xml # @xml is the collection manifest
28
- @lang = @xml&.at(ns("//bibdata/language"))&.text || "en"
29
- @script = @xml&.at(ns("//bibdata/script"))&.text || "Latn"
28
+ @lang = @xml.at(ns("//bibdata/language"))&.text || "en"
29
+ @script = @xml.at(ns("//bibdata/script"))&.text || "Latn"
30
+ @locale = @xml.at(ns("//bibdata/locale"))&.text
30
31
  @doctype = doctype
31
32
  require "metanorma-#{@doctype}"
32
33
 
@@ -47,8 +48,7 @@ module Metanorma
47
48
  # list of files in the collection
48
49
  @files = read_files folder
49
50
  isodoc_populate(@isodoc)
50
- FileUtils.rm_rf @outdir
51
- FileUtils.mkdir_p @outdir
51
+ create_non_existing_directory(@outdir)
52
52
  end
53
53
 
54
54
  def dir_name_cleanse(name)
@@ -96,7 +96,7 @@ module Metanorma
96
96
  def concatenate1(out, ext)
97
97
  out.directives << "documents-inline"
98
98
  out.documents.each_key do |id|
99
- next if @files[id][:attachment] || @files[id][:outputs].nil?
99
+ @files[id][:attachment] || @files[id][:outputs].nil? and next
100
100
 
101
101
  out.documents[id] =
102
102
  Metanorma::Document.raw_file(@files[id][:outputs][ext])
@@ -134,8 +134,8 @@ module Metanorma
134
134
  def isodoc
135
135
  x = Asciidoctor.load nil, backend: @doctype.to_sym
136
136
  isodoc = x.converter.html_converter(Dummy.new)
137
- isodoc.i18n_init(@lang, @script) # read in internationalisation
138
- isodoc.metadata_init(@lang, @script, isodoc.i18n)
137
+ isodoc.i18n_init(@lang, @script, @locale) # read in internationalisation
138
+ isodoc.metadata_init(@lang, @script, @locale, isodoc.i18n)
139
139
  isodoc.info(@xml, nil)
140
140
  isodoc
141
141
  end
@@ -146,7 +146,7 @@ module Metanorma
146
146
  nav = indexfile(@xml.at(ns("//manifest")))
147
147
  i18n = isodoc.i18n
148
148
  i18n.set("navigation", nav)
149
- isodoc.metadata_init(@lang, @script, i18n)
149
+ isodoc.metadata_init(@lang, @script, @locale, i18n)
150
150
  # populate the @meta class of isodoc with the various metadata fields
151
151
  # native to the flavour; used to populate Liquid
152
152
  isodoc.info(@xml, nil)
@@ -240,6 +240,12 @@ module Metanorma
240
240
 
241
241
  private
242
242
 
243
+ def create_non_existing_directory(output_directory)
244
+ if !File.exist?(output_directory)
245
+ FileUtils.mkdir_p(output_directory)
246
+ end
247
+ end
248
+
243
249
  def format_sort(formats)
244
250
  ret = []
245
251
  formats.include?(:xml) and ret << :xml
@@ -29,31 +29,32 @@ module Metanorma
29
29
  Util.log("[metanorma] Info: Loading `#{flavor}` gem "\
30
30
  "for standard type `#{stdtype}`.", :info)
31
31
  end
32
- require_flavor(flavor, stdtype)
32
+ require_flavor(flavor)
33
33
  unless @registry.supported_backends.include? stdtype
34
- Util.log("[metanorma] Error: The `#{flavor}` gem "\
35
- "still doesn't support `#{stdtype}`. Exiting.", :fatal)
34
+ Util.log("[metanorma] Error: The `#{flavor}` gem does not "\
35
+ "support the standard type #{stdtype}. Exiting.", :fatal)
36
36
  end
37
37
  end
38
38
 
39
- def require_flavor(flavor, stdtype)
39
+ def require_flavor(flavor)
40
40
  require flavor
41
41
  Util.log("[metanorma] Info: gem `#{flavor}` loaded.", :info)
42
- rescue Gem::ConflictError
43
- Util.log("[metanorma] Error: Couldn't resolve dependencies for "\
44
- "`metanorma-#{stdtype}`, Please add it to your Gemfile "\
45
- "and run bundle install first", :fatal)
46
- rescue LoadError
42
+ rescue LoadError => e
43
+ error_log = "#{Date.today}-error.log"
44
+ File.write(error_log, e)
45
+
47
46
  msg = <<~MSG
48
- [metanorma] Error: loading gem `#{flavor}` failed. Exiting.
47
+ Error: #{e.message}
48
+ Metanorma has encountered an exception.
49
+
50
+ If this problem persists, please report this issue at the following link:
51
+
52
+ * https://github.com/metanorma/metanorma/issues/new
49
53
 
50
- Troubleshooting:
51
- 1. If you are using metanorma via bundler/ruby, make sure that your
52
- Gemfile contains a line:
53
- gem "metanorma-#{stdtype}"
54
+ Please attach the #{error_log} file.
55
+ Your valuable feedback is very much appreciated!
54
56
 
55
- 2. If you are using brew/choco/snap packages, please report an issue
56
- to https://github.com/metanorma/packed-mn/issues/new"
57
+ - The Metanorma team
57
58
  MSG
58
59
  Util.log(msg, :fatal)
59
60
  end
@@ -40,9 +40,9 @@ module Metanorma
40
40
  end
41
41
 
42
42
  def attachment_bibitem(identifier)
43
- Nokogiri::XML(
44
- "<bibdata><docidentifier>#{identifier}</docidentifier></bibdata>",
45
- )
43
+ Nokogiri::XML <<~DOCUMENT
44
+ <bibdata><docidentifier>#{identifier}</docidentifier></bibdata>
45
+ DOCUMENT
46
46
  end
47
47
 
48
48
  private
@@ -94,9 +94,10 @@ module Metanorma
94
94
 
95
95
  # @return [String]
96
96
  def type
97
- @type ||= (@bibitem.docidentifier.first&.type&.downcase ||
98
- @bibitem.docidentifier.first&.id&.match(/^[^\s]+/)&.to_s)&.downcase ||
99
- "standoc"
97
+ first = @bibitem.docidentifier.first
98
+ @type ||= (first&.type&.downcase ||
99
+ first&.id&.match(/^[^\s]+/)&.to_s)&.downcase ||
100
+ "standoc"
100
101
  end
101
102
 
102
103
  private
@@ -70,7 +70,8 @@ module Metanorma
70
70
  pdf-allow-print pdf-allow-print-hq pdf-allow-fill-in-forms
71
71
  toc-figures toc-tables toc-recommendations fonts
72
72
  font-license-agreement pdf-allow-access-content
73
- pdf-encrypt-metadata iso-word-template document-scheme).freeze
73
+ pdf-encrypt-metadata iso-word-template document-scheme
74
+ localize-number).freeze
74
75
 
75
76
  def extract_options(file)
76
77
  header = file.sub(/\n\n.*$/m, "\n")
@@ -1,3 +1,3 @@
1
1
  module Metanorma
2
- VERSION = "1.4.14".freeze
2
+ VERSION = "1.5.1".freeze
3
3
  end
data/metanorma.gemspec CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_runtime_dependency "asciidoctor"
26
26
  spec.add_runtime_dependency "fontist", ">= 1.14.3"
27
27
  spec.add_runtime_dependency "htmlentities"
28
- spec.add_runtime_dependency "isodoc", ">= 2.2.3.1"
28
+ spec.add_runtime_dependency "isodoc", ">= 2.3.1"
29
29
  spec.add_runtime_dependency "metanorma-utils", "~> 1.4.0"
30
30
  spec.add_runtime_dependency "mn2pdf", "~> 1"
31
31
  spec.add_runtime_dependency "nokogiri"
@@ -37,7 +37,7 @@ Gem::Specification.new do |spec|
37
37
 
38
38
  spec.add_development_dependency "debug"
39
39
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
40
- spec.add_development_dependency "metanorma-iso", "~> 2.1.7"
40
+ spec.add_development_dependency "metanorma-iso"
41
41
  spec.add_development_dependency "mnconvert"
42
42
  spec.add_development_dependency "rake", "~> 13.0"
43
43
  spec.add_development_dependency "rspec", "~> 3.0"
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.4.14
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-06 00:00:00.000000000 Z
11
+ date: 2022-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciidoctor
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 2.2.3.1
61
+ version: 2.3.1
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 2.2.3.1
68
+ version: 2.3.1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: metanorma-utils
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -154,16 +154,16 @@ dependencies:
154
154
  name: metanorma-iso
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - "~>"
157
+ - - ">="
158
158
  - !ruby/object:Gem::Version
159
- version: 2.1.7
159
+ version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - "~>"
164
+ - - ">="
165
165
  - !ruby/object:Gem::Version
166
- version: 2.1.7
166
+ version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: mnconvert
169
169
  requirement: !ruby/object:Gem::Requirement