metanorma-nist 0.1.5 → 0.2.0

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: e605d8d42f719740cb4c9de5c9cc7cecfe0e71566067ece25d619f1ce1fb095a
4
- data.tar.gz: 78ca48431b9d32a30ae5cf8de2ed6b88e364e3c468b4c1fa64db89155a0e675c
3
+ metadata.gz: 53bb2d233e8d14f8dea275aec0532f9c6d91e2248f7f1128b89850f666201d50
4
+ data.tar.gz: 3c39f1c061185dbf87e0ef8c66d477effa41e3b7694fd7bf1bf4ad57112746fe
5
5
  SHA512:
6
- metadata.gz: 67bc90cf9c955322fc823240df276d139fb1fcdd08b318c509f003945dcad9684bdd093bc39e49a1a70940c200dd11c288234bfb0231a9aa4af1af5a1aaa6a68
7
- data.tar.gz: a3e78549156b699cd83fae721ce4d218de9205779453f16af6fa4b45e285a4306dc936439e49aa63f9f983e24b3bfe827f0550ff00be78c54f4443f4e845037d
6
+ metadata.gz: 6a64e2d06c7cb26477e6dd86df42e64b1b3800858429c2c1fe42ed6a3f73d709114bb81d80b9b94845fa9a7c3c15ef40685620d67c3f019ea2ed9d0f9a4b508e
7
+ data.tar.gz: 239c4c3d89d8a6031e06e726f390b00eaebcf2d0fe9bbf3a7609e6a6cc0cd3af4b89db345b915680a67b6eb5115e41cff8789403e39cb35abe7954051dccf245
@@ -87,7 +87,7 @@
87
87
  </element>
88
88
  </define>
89
89
  <define name="reqinherit">
90
- <element name="subject">
90
+ <element name="inherit">
91
91
  <text/>
92
92
  </element>
93
93
  </define>
@@ -1,5 +1,6 @@
1
1
  require "isodoc"
2
2
  require_relative "metadata"
3
+ require_relative "xrefs"
3
4
  require "fileutils"
4
5
 
5
6
  module IsoDoc
@@ -60,10 +61,6 @@ module IsoDoc
60
61
  end
61
62
  end
62
63
 
63
- def i18n_init(lang, script)
64
- super
65
- end
66
-
67
64
  def fileloc(loc)
68
65
  File.join(File.dirname(__FILE__), loc)
69
66
  end
@@ -156,29 +153,29 @@ module IsoDoc
156
153
  end
157
154
 
158
155
  def errata_head(t)
159
- t.thead do |h|
160
- h.tr do |tr|
161
- %w(Date Type Change Pages).each do |hdr|
162
- tr.th hdr
163
- end
156
+ t.thead do |h|
157
+ h.tr do |tr|
158
+ %w(Date Type Change Pages).each do |hdr|
159
+ tr.th hdr
164
160
  end
165
161
  end
162
+ end
166
163
  end
167
164
 
168
165
  def errata_body(t, node)
169
- t.tbody do |b|
170
- node.xpath(ns("./row")).each do |row|
171
- b.tr do |tr|
172
- %w{date type change pages}.each do |hdr|
173
- tr.td do |td|
174
- row&.at(ns("./#{hdr}"))&.children.each do |n|
175
- parse(n, td)
176
- end
166
+ t.tbody do |b|
167
+ node.xpath(ns("./row")).each do |row|
168
+ b.tr do |tr|
169
+ %w{date type change pages}.each do |hdr|
170
+ tr.td do |td|
171
+ row&.at(ns("./#{hdr}"))&.children.each do |n|
172
+ parse(n, td)
177
173
  end
178
174
  end
179
175
  end
180
176
  end
181
177
  end
178
+ end
182
179
  end
183
180
 
184
181
  MIDDLE_CLAUSE = "//clause[parent::sections] | "\
@@ -200,50 +197,6 @@ module IsoDoc
200
197
  super
201
198
  end
202
199
 
203
- SECTIONS_XPATH =
204
- "//foreword | //introduction | //reviewnote | //executivesummary | //annex | "\
205
- "//sections/clause | //bibliography/references | "\
206
- "//bibliography/clause".freeze
207
-
208
- def initial_anchor_names(d)
209
- d.xpath("//xmlns:boilerplate/child::* | //xmlns:preface/child::*").each do |c|
210
- preface_names(c)
211
- end
212
- @in_execsummary = true
213
- hierarchical_asset_names(d.xpath("//xmlns:executivesummary"), "ES")
214
- @in_execsummary = false
215
- clause_names(d, 0)
216
- middle_section_asset_names(d)
217
- termnote_anchor_names(d)
218
- termexample_anchor_names(d)
219
- end
220
-
221
- def back_anchor_names(docxml)
222
- docxml.xpath(ns("//annex")).each_with_index do |c, i|
223
- annex_names(c, (65 + i).chr.to_s)
224
- end
225
- docxml.xpath(ns("//bibliography/clause | "\
226
- "//bibliography/references")).each do |b|
227
- preface_names(b)
228
- end
229
- docxml.xpath(ns("//bibitem[not(ancestor::bibitem)]")).each do |ref|
230
- reference_names(ref)
231
- end
232
- end
233
-
234
- def middle_section_asset_names(d)
235
- middle_sections = "//xmlns:preface/child::*[not(self::xmlns:executivesummary)] | "\
236
- "//xmlns:sections/child::*"
237
- sequential_asset_names(d.xpath(middle_sections))
238
- end
239
-
240
- def clause_names(docxml, sect_num)
241
- q = "//xmlns:sections/child::*"
242
- docxml.xpath(q).each_with_index do |c, i|
243
- section_names(c, (i + sect_num), 1)
244
- end
245
- end
246
-
247
200
  def get_linkend(node)
248
201
  link = anchor_linkend(node, docid_l10n(node["target"] || "[#{node['citeas']}]"))
249
202
  link += eref_localities(node.xpath(ns("./locality")), link)
@@ -264,47 +217,6 @@ module IsoDoc
264
217
  super.merge(y)
265
218
  end
266
219
 
267
- def annex_name_lbl(clause, num)
268
- l10n("<b>#{@annex_lbl} #{num}</b>")
269
- end
270
-
271
- def annex_name(annex, name, div)
272
- div.h1 **{ class: "Annex" } do |t|
273
- t << "#{anchor(annex['id'], :label)} &mdash; "
274
- t.b do |b|
275
- if @bibliographycount == 1 && annex.at(ns("./references"))
276
- b << "References"
277
- else
278
- name&.children&.each { |c2| parse(c2, b) }
279
- end
280
- end
281
- end
282
- end
283
-
284
- def hiersep
285
- "-"
286
- end
287
-
288
- def annex_names(clause, num)
289
- @anchors[clause["id"]] = { label: annex_name_lbl(clause, num), type: "clause",
290
- xref: "#{@annex_lbl} #{num}", level: 1 }
291
- clause.xpath(ns("./clause")).each_with_index do |c, i|
292
- annex_names1(c, "#{num}.#{i + 1}", 2)
293
- end
294
- clause.xpath(ns("./terms | ./term | ./references")).each_with_index do |c, i|
295
- annex_names1(c, "#{num}", 1)
296
- end
297
- hierarchical_asset_names(clause, num)
298
- end
299
-
300
- def annex_names1(clause, num, level)
301
- @anchors[clause["id"]] = { label: num, xref: "#{@annex_lbl} #{num}",
302
- level: level, type: "clause" }
303
- clause.xpath(ns("./clause | ./terms | ./term | ./references")).each_with_index do |c, i|
304
- annex_names1(c, "#{num}.#{i + 1}", level + 1)
305
- end
306
- end
307
-
308
220
  def terms_parse(node, out)
309
221
  out.div **attr_code(id: node["id"]) do |div|
310
222
  node.at(ns("./title")) and
@@ -334,7 +246,7 @@ module IsoDoc
334
246
  "organization[abbreviation = 'NIST' or xmlns:name = 'NIST']".freeze
335
247
 
336
248
  # we are taking the ref number/code out as prefix to reference
337
- def noniso_bibitem(list, b, ordinal, bibliography)
249
+ def nonstd_bibitem(list, b, ordinal, bibliography)
338
250
  list.p **attr_code(iso_bibitem_entry_attrs(b, bibliography)) do |r|
339
251
  if !b.at(ns("./formattedref"))
340
252
  nist_reference_format(b, r)
@@ -344,18 +256,22 @@ module IsoDoc
344
256
  end
345
257
  end
346
258
 
259
+ def std_bibitem_entry(list, b, ordinal, biblio)
260
+ nonstd_bibitem(list, b, ordinal, biblio)
261
+ end
262
+
347
263
  def reference_format(b, r)
348
- code = iso_bibitem_ref_code(b)
349
- if /^\[\d+\]$/.match(code)
350
- r << "#{code} "
264
+ code = bibitem_ref_code(b)
265
+ if /^\d+$/.match(code)
266
+ r << "[#{code}] "
351
267
  insert_tab(r, 1)
352
268
  end
353
269
  reference_format1(b, r)
354
- r << " [#{code}] " unless /^\[\d+\]$/.match(code)
270
+ r << " [#{code}] " unless /^\d+$/.match(code)
355
271
  end
356
272
 
357
273
  def reference_format1(b, r)
358
- if ftitle = b.at(ns("./formattedref"))
274
+ if ftitle = b.at(ns("./formattedref"))
359
275
  ftitle&.children&.each { |n| parse(n, r) }
360
276
  else
361
277
  title = b.at(ns("./title[@language = '#{@language}']")) || b.at(ns("./title"))
@@ -367,7 +283,7 @@ module IsoDoc
367
283
 
368
284
  def omit_docid_prefix(prefix)
369
285
  return true if prefix.nil? || prefix.empty?
370
- return ["ISO", "IEC", "NIST"].include? prefix
286
+ super || prefix == "NIST"
371
287
  end
372
288
 
373
289
  def nist_reference_format(b, r)
@@ -52,13 +52,25 @@ module IsoDoc
52
52
  end
53
53
 
54
54
  def toclevel
55
- <<~HEAD.freeze
56
- function toclevel() { var i; var text = "";
57
- for(i = 1; i <= #{@htmlToClevels}; i++) {
58
- if (i > 1) { text += ","; } text += "h" + i + ":not(:empty):not(.TermNum):not(.AbstractTitle):not(.IntroTitle):not(.ForewordTitle)"; }
59
- return text;}
60
- HEAD
55
+ ret = toclevel_classes.map { |l| "#{l}:not(:empty):not(.TermNum):not(.noTOC):not(.AbstractTitle):not(.IntroTitle):not(.ForewordTitle)" }
56
+ <<~HEAD.freeze
57
+ function toclevel() { return "#{ret.join(',')}";}
58
+ HEAD
59
+ end
60
+
61
+ def html_toc(docxml)
62
+ idx = docxml.at("//div[@id = 'toc']") or return docxml
63
+ toc = "<ul>"
64
+ path = toclevel_classes.map do |l|
65
+ "//main//#{l}[not(@class = 'TermNum')][not(@class = 'noTOC')][not(text())][not(@class = 'AbstractTitle')][not(@class = 'IntroTitle')][not(@class = 'ForewordTitle')]"
66
+ end
67
+ docxml.xpath(path.join(" | ")).each_with_index do |h, tocidx|
68
+ h["id"] ||= "toc#{tocidx}"
69
+ toc += html_toc_entry(h.name, h)
61
70
  end
71
+ idx.children = "#{toc}</ul>"
72
+ docxml
73
+ end
62
74
 
63
75
  def make_body(xml, docxml)
64
76
  body_attr = { lang: "EN-US", link: "blue", vlink: "#954F72", "xml:lang": "EN-US", class: "container" }
@@ -0,0 +1,106 @@
1
+ require "isodoc"
2
+ require_relative "metadata"
3
+ require "fileutils"
4
+
5
+ module IsoDoc
6
+ module NIST
7
+ module BaseConvert
8
+ SECTIONS_XPATH =
9
+ "//foreword | //introduction | //reviewnote | //executivesummary | //annex | "\
10
+ "//sections/clause | //bibliography/references | "\
11
+ "//bibliography/clause".freeze
12
+
13
+ def initial_anchor_names(d)
14
+ d.xpath("//xmlns:boilerplate/child::* | //xmlns:preface/child::*").each do |c|
15
+ preface_names(c)
16
+ end
17
+ @in_execsummary = true
18
+ hierarchical_asset_names(d.xpath("//xmlns:executivesummary"), "ES")
19
+ @in_execsummary = false
20
+ clause_names(d, 0)
21
+ middle_section_asset_names(d)
22
+ termnote_anchor_names(d)
23
+ termexample_anchor_names(d)
24
+ end
25
+
26
+ def back_anchor_names(docxml)
27
+ docxml.xpath(ns("//annex")).each_with_index do |c, i|
28
+ annex_names(c, (65 + i).chr.to_s)
29
+ end
30
+ docxml.xpath(ns("//bibliography/clause | "\
31
+ "//bibliography/references")).each do |b|
32
+ preface_names(b)
33
+ end
34
+ docxml.xpath(ns("//bibitem[not(ancestor::bibitem)]")).each do |ref|
35
+ reference_names(ref)
36
+ end
37
+ end
38
+
39
+ def middle_section_asset_names(d)
40
+ middle_sections = "//xmlns:preface/child::*[not(self::xmlns:executivesummary)] | "\
41
+ "//xmlns:sections/child::*"
42
+ sequential_asset_names(d.xpath(middle_sections))
43
+ end
44
+
45
+ def clause_names(docxml, sect_num)
46
+ q = "//xmlns:sections/child::*"
47
+ docxml.xpath(q).each_with_index do |c, i|
48
+ section_names(c, (i + sect_num), 1)
49
+ end
50
+ end
51
+
52
+ def annex_name_lbl(clause, num)
53
+ l10n("<b>#{@annex_lbl} #{num}</b>")
54
+ end
55
+
56
+ def annex_name(annex, name, div)
57
+ div.h1 **{ class: "Annex" } do |t|
58
+ t << "#{anchor(annex['id'], :label)} &mdash; "
59
+ t.b do |b|
60
+ if @bibliographycount == 1 && annex.at(ns("./references"))
61
+ b << "References"
62
+ else
63
+ name&.children&.each { |c2| parse(c2, b) }
64
+ end
65
+ end
66
+ end
67
+ end
68
+
69
+ def hiersep
70
+ "-"
71
+ end
72
+
73
+ def annex_names(clause, num)
74
+ @anchors[clause["id"]] = { label: annex_name_lbl(clause, num), type: "clause",
75
+ xref: "#{@annex_lbl} #{num}", level: 1 }
76
+ clause.xpath(ns("./clause")).each_with_index do |c, i|
77
+ annex_names1(c, "#{num}.#{i + 1}", 2)
78
+ end
79
+ clause.xpath(ns("./terms | ./term | ./references")).each_with_index do |c, i|
80
+ annex_names1(c, "#{num}", 1)
81
+ end
82
+ hierarchical_asset_names(clause, num)
83
+ end
84
+
85
+ def annex_names1(clause, num, level)
86
+ @anchors[clause["id"]] = { label: num, xref: "#{@annex_lbl} #{num}",
87
+ level: level, type: "clause" }
88
+ clause.xpath(ns("./clause | ./terms | ./term | ./references")).each_with_index do |c, i|
89
+ annex_names1(c, "#{num}.#{i + 1}", level + 1)
90
+ end
91
+ end
92
+
93
+ def terms_parse(node, out)
94
+ out.div **attr_code(id: node["id"]) do |div|
95
+ node.at(ns("./title")) and
96
+ clause_parse_title(node, div, node.at(ns("./title")), out)
97
+ term_defs_boilerplate(div, node.xpath(ns(".//termdocsource")),
98
+ node.at(ns(".//term")), node.at(ns("./p")))
99
+ node.elements.each do |e|
100
+ parse(e, div) unless %w{title source}.include? e.name
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module NIST
3
- VERSION = "0.1.5"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -30,9 +30,9 @@ Gem::Specification.new do |spec|
30
30
  spec.add_dependency "twitter_cldr"
31
31
  spec.add_dependency "tzinfo-data" # we need this for windows only
32
32
 
33
- spec.add_dependency "metanorma-standoc", "~> 1.2.0"
34
- spec.add_dependency "isodoc", "~> 0.10.0"
35
- spec.add_dependency "relaton-nist", "~> 0.3.0"
33
+ spec.add_dependency "metanorma-standoc", "~> 1.3.0"
34
+ spec.add_dependency "isodoc", "~> 1.0.0"
35
+ #spec.add_dependency "relaton-nist", "~> 0.3.0"
36
36
 
37
37
  spec.add_development_dependency "bundler", "~> 2.0.1"
38
38
  spec.add_development_dependency "byebug", "~> 9.1"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-nist
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-08-05 00:00:00.000000000 Z
11
+ date: 2019-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciidoctor
@@ -86,42 +86,28 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 1.2.0
89
+ version: 1.3.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 1.2.0
96
+ version: 1.3.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: isodoc
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.10.0
103
+ version: 1.0.0
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 0.10.0
111
- - !ruby/object:Gem::Dependency
112
- name: relaton-nist
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: 0.3.0
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: 0.3.0
110
+ version: 1.0.0
125
111
  - !ruby/object:Gem::Dependency
126
112
  name: bundler
127
113
  requirement: !ruby/object:Gem::Requirement
@@ -330,6 +316,7 @@ files:
330
316
  - lib/isodoc/nist/pdf_convert.rb
331
317
  - lib/isodoc/nist/render.rb
332
318
  - lib/isodoc/nist/word_convert.rb
319
+ - lib/isodoc/nist/xrefs.rb
333
320
  - lib/metanorma-nist.rb
334
321
  - lib/metanorma/nist.rb
335
322
  - lib/metanorma/nist/processor.rb