metanorma-standoc 1.3.18 → 1.3.19

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: 29fb2b3bd1b2182033a91de521a848994d54d41592d3c1f850572fd9e4ab6bd5
4
- data.tar.gz: 1cdecf3c34899fb71b342eafdf16a249e399e35c5382d41fc5965e2870b80988
3
+ metadata.gz: d8ed2615aea35bf1ce9472e6b55f99bffd6f918cefb1bd88e4758d5091577d31
4
+ data.tar.gz: bf4d2b5b381b834127f46a25705fb577705d3b72e55553a0d3de55239029feb1
5
5
  SHA512:
6
- metadata.gz: 61be98b3231edd09a06711527c2c482cf276fc57bc09eaa10f83316574a9c13aba58b16ab32df29879ffe821d908dc6ad5ea72673328a440da232bd769c8b912
7
- data.tar.gz: 9f41b2ccbb3e865c7b738a67d00f26c7ddd5230e67af501fc696fb5b80793e933dcd56b08f21e56fab318ad877af77a0c24cce2e454aac85dd1f8d3febc8793a
6
+ metadata.gz: 96a49389924a2a96eac3a31d6eb75925e4f9da49fd9030cc40fc17bab7bceac68b24e29359e8e25bf5240da827e35d90194758ba9263277c1c165c7e1862e01c
7
+ data.tar.gz: 0e1bb4980154384666bec21167709b1363acc2c5a466421f94ca63185fe47f894a79ab20567916ef32abecf0fefce9fc676daa4443cbb73459516c2743fd6206
@@ -64,10 +64,11 @@ module Asciidoctor
64
64
 
65
65
  def boilerplate_cleanup(xmldoc)
66
66
  isodoc = boilerplate_isodoc(xmldoc)
67
- f = xmldoc.at(self.class::TERM_CLAUSE) and
67
+ xmldoc.xpath(self.class::TERM_CLAUSE).each do |f|
68
68
  term_defs_boilerplate(f.at("./title"),
69
69
  xmldoc.xpath(".//termdocsource"),
70
70
  f.at(".//term"), f.at(".//p"), isodoc)
71
+ end
71
72
  f = xmldoc.at(self.class::NORM_REF) and
72
73
  norm_ref_preface(f)
73
74
  initial_boilerplate(xmldoc, isodoc)
@@ -91,14 +92,14 @@ module Asciidoctor
91
92
  end
92
93
 
93
94
  def boilerplate_file(xmldoc)
94
- File.join(@libdir, "boilerplate.xml")
95
+ File.join(@libdir, "boilerplate.xml")
95
96
  end
96
97
 
97
98
  def boilerplate(xml, conv)
98
99
  file = boilerplate_file(xml)
99
100
  file = File.join(@localdir, @boilerplateauthority) if @boilerplateauthority
100
101
  !file.nil? and File.exists?(file) or return
101
- conv.populate_template((File.read(file, encoding: "UTF-8")), nil)
102
+ conv.populate_template((File.read(file, encoding: "UTF-8")), nil)
102
103
  end
103
104
 
104
105
  def bibdata_cleanup(xmldoc)
@@ -14,13 +14,15 @@ module Asciidoctor
14
14
  c.gsub(/ id="[^"]+"/, "")
15
15
  end
16
16
 
17
- # include footnotes inside figure
17
+ # include footnotes inside figure if they are the only content
18
+ # of the paras following
18
19
  def figure_footnote_cleanup(xmldoc)
19
20
  nomatches = false
20
21
  until nomatches
21
22
  q = "//figure/following-sibling::*[1][self::p and *[1][self::fn]]"
22
23
  nomatches = true
23
24
  xmldoc.xpath(q).each do |s|
25
+ next if s.children.map { |c| c.text? && /[[:alpha:]]/.match(c.text) }.any?
24
26
  s.previous_element << s.first_element_child.remove
25
27
  s.remove
26
28
  nomatches = false
@@ -67,7 +67,7 @@ module Asciidoctor
67
67
 
68
68
  def omit_docid_prefix(prefix)
69
69
  return true if prefix.nil? || prefix.empty?
70
- %(ISO IEC IEV ITU).include? prefix
70
+ %(ISO IEC IEV ITU metanorma).include? prefix
71
71
  end
72
72
 
73
73
  def format_ref(ref, type, isopub)
@@ -85,7 +85,8 @@ module Asciidoctor
85
85
  def reference_names(xmldoc)
86
86
  xmldoc.xpath("//bibitem[not(ancestor::bibitem)]").each do |ref|
87
87
  isopub = ref.at(ISO_PUBLISHER_XPATH)
88
- docid = ref.at("./docidentifier[not(@type = 'DOI')]") or next
88
+ docid = ref.at("./docidentifier[@type = 'metanorma']") ||
89
+ ref.at("./docidentifier[not(@type = 'DOI')]") or next
89
90
  reference = format_ref(docid.text, docid["type"], isopub)
90
91
  @anchors[ref["id"]] = { xref: reference }
91
92
  end
@@ -9,20 +9,29 @@ require "mathml2asciimath"
9
9
  module Asciidoctor
10
10
  module Standoc
11
11
  module Cleanup
12
- def make_preface(x, s)
13
- if x.at("//foreword | //introduction")
12
+ def make_preface(x, s)
13
+ if x.at("//foreword | //introduction | //acknowledgements | "\
14
+ "//clause[@preface]")
14
15
  preface = s.add_previous_sibling("<preface/>").first
15
- foreword = x.at("//foreword")
16
- preface.add_child foreword.remove if foreword
17
- introduction = x.at("//introduction")
18
- preface.add_child introduction.remove if introduction
16
+ f = x.at("//foreword") and preface.add_child f.remove
17
+ f = x.at("//introduction") and preface.add_child f.remove
18
+ move_clauses_into_preface(x, preface)
19
+ f = x.at("//acknowledgements") and preface.add_child f.remove
19
20
  end
20
21
  make_abstract(x, s)
21
22
  end
22
23
 
24
+ def move_clauses_into_preface(x, preface)
25
+ x.xpath("//clause[@preface]").each do |c|
26
+ c.delete("preface")
27
+ preface.add_child c.remove
28
+ end
29
+ end
30
+
23
31
  def make_abstract(x, s)
24
32
  if x.at("//abstract[not(ancestor::bibitem)]")
25
- preface = s.at("//preface") || s.add_previous_sibling("<preface/>").first
33
+ preface = s.at("//preface") ||
34
+ s.add_previous_sibling("<preface/>").first
26
35
  abstract = x.at("//abstract[not(ancestor::bibitem)]").remove
27
36
  preface.prepend_child abstract.remove
28
37
  bibabstract = bibabstract_location(x)
@@ -39,9 +48,10 @@ module Asciidoctor
39
48
  x.at("//bibdata/contributor[not(following-sibling::contributor)]") ||
40
49
  x.at("//bibdata/date[not(following-sibling::date)]") ||
41
50
  x.at("//docnumber") ||
42
- x.at("//bibdata/docidentifier[not(following-sibling::docidentifier)]") ||
43
- x.at("//bibdata/uri[not(following-sibling::uri)]") ||
44
- x.at("//bibdata/title[not(following-sibling::title)]")
51
+ x.at("//bibdata/docidentifier"\
52
+ "[not(following-sibling::docidentifier)]") ||
53
+ x.at("//bibdata/uri[not(following-sibling::uri)]") ||
54
+ x.at("//bibdata/title[not(following-sibling::title)]")
45
55
  end
46
56
 
47
57
  def make_bibliography(x, s)
@@ -93,7 +103,9 @@ module Asciidoctor
93
103
  def obligations_cleanup_info(x)
94
104
  (s = x.at("//foreword")) && s["obligation"] = "informative"
95
105
  (s = x.at("//introduction")) && s["obligation"] = "informative"
106
+ (s = x.at("//acknowledgements")) && s["obligation"] = "informative"
96
107
  x.xpath("//references").each { |r| r["obligation"] = "informative" }
108
+ x.xpath("//preface//clause").each { |r| r["obligation"] = "informative" }
97
109
  end
98
110
 
99
111
  def obligations_cleanup_norm(x)
@@ -109,7 +121,7 @@ module Asciidoctor
109
121
  r["obligation"] = "normative" unless r["obligation"]
110
122
  end
111
123
  x.xpath(Utils::SUBCLAUSE_XPATH).each do |r|
112
- r["obligation"] = r.at("./ancestor::*/@obligation").text
124
+ o = r&.at("./ancestor::*/@obligation")&.text and r["obligation"] = o
113
125
  end
114
126
  end
115
127
 
@@ -61,6 +61,7 @@ module Asciidoctor
61
61
  noko do |xml|
62
62
  case sectiontype(node)
63
63
  when "introduction" then introduction_parse(a, xml, node)
64
+ when "foreword" then foreword_parse(a, xml, node)
64
65
  when "normative references" then norm_ref_parse(a, xml, node)
65
66
  when "terms and definitions"
66
67
  @term_def = true
@@ -68,6 +69,8 @@ module Asciidoctor
68
69
  @term_def = false
69
70
  when "symbols and abbreviated terms"
70
71
  symbols_parse(a, xml, node)
72
+ when "acknowledgements"
73
+ acknowledgements_parse(a, xml, node)
71
74
  when "bibliography" then bibliography_parse(a, xml, node)
72
75
  else
73
76
  if @term_def then term_def_subclause_parse(a, xml, node)
@@ -115,6 +118,7 @@ module Asciidoctor
115
118
  def clause_parse(attrs, xml, node)
116
119
  attrs["inline-header".to_sym] = node.option? "inline-header"
117
120
  attrs[:bibitem] = true if node.option? "bibitem"
121
+ attrs[:preface] = true if node.role == "preface" || node.attr("style") == "preface"
118
122
  attrs[:level] = node.attr("level")
119
123
  set_obligation(attrs, node)
120
124
  xml.send "clause", **attr_code(attrs) do |xml_section|
@@ -228,6 +232,22 @@ module Asciidoctor
228
232
  xml_section << content
229
233
  end
230
234
  end
235
+
236
+ def foreword_parse(attrs, xml, node)
237
+ xml.foreword **attr_code(attrs) do |xml_section|
238
+ xml_section.title { |t| t << node.title }
239
+ content = node.content
240
+ xml_section << content
241
+ end
242
+ end
243
+
244
+ def acknowledgements_parse(attrs, xml, node)
245
+ xml.acknowledgements **attr_code(attrs) do |xml_section|
246
+ xml_section.title { |t| t << node.title || "Acknowledgements" }
247
+ content = node.content
248
+ xml_section << content
249
+ end
250
+ end
231
251
  end
232
252
  end
233
253
  end
@@ -222,8 +222,7 @@ module Asciidoctor
222
222
  type
223
223
  end
224
224
 
225
- SUBCLAUSE_XPATH = "//clause[ancestor::clause or ancestor::annex or "\
226
- "ancestor::introduction]".freeze
225
+ SUBCLAUSE_XPATH = "//clause[not(parent::sections)]".freeze
227
226
  end
228
227
  end
229
228
  end
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Standoc
3
- VERSION = "1.3.18".freeze
3
+ VERSION = "1.3.19".freeze
4
4
  end
5
5
  end
@@ -694,6 +694,8 @@ RSpec.describe Asciidoctor::Standoc do
694
694
  footnote:[This is a footnote to a figure]
695
695
 
696
696
  footnote:[This is another footnote to a figure]
697
+
698
+ A footnote:[This is a third footnote]
697
699
  INPUT
698
700
  #{BLANK_HDR}
699
701
  <sections><figure id="_">
@@ -703,6 +705,12 @@ RSpec.describe Asciidoctor::Standoc do
703
705
  </fn><fn reference="b">
704
706
  <p id="_">This is another footnote to a figure</p>
705
707
  </fn></figure>
708
+ <p id='_'>
709
+ A
710
+ <fn reference='1'>
711
+ <p id='_'>This is a third footnote</p>
712
+ </fn>
713
+ </p>
706
714
 
707
715
  </sections>
708
716
 
@@ -99,6 +99,10 @@ RSpec.describe Asciidoctor::Standoc do
99
99
  mock_isobib_get_123_no_docid_lbl
100
100
  input = <<~"INPUT"
101
101
  #{ISOBIB_BLANK_HDR}
102
+
103
+ <<iso123>>
104
+ <<iso124>>
105
+
102
106
  [bibliography]
103
107
  == Normative References
104
108
 
@@ -107,6 +111,15 @@ RSpec.describe Asciidoctor::Standoc do
107
111
  INPUT
108
112
  expect(xmlpp(strip_guid(Asciidoctor.convert(input, backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp( <<~"OUTPUT")
109
113
  #{BLANK_HDR}
114
+ <preface>
115
+ <foreword obligation='informative'>
116
+ <title>Foreword</title>
117
+ <p id='_'>
118
+ <eref type='inline' bibitemid='iso123' citeas='ISO 123'/>
119
+ <eref type='inline' bibitemid='iso124' citeas='[1]'/>
120
+ </p>
121
+ </foreword>
122
+ </preface>
110
123
  <sections>
111
124
  </sections><bibliography><references id="_" obligation="informative"><title>Normative References</title>
112
125
  #{NORM_REF_BOILERPLATE}
@@ -17,6 +17,11 @@ RSpec.describe Asciidoctor::Standoc do
17
17
 
18
18
  === Introduction Subsection
19
19
 
20
+ == Acknowledgements
21
+
22
+ [.preface]
23
+ == Dedication
24
+
20
25
  == Scope
21
26
 
22
27
  Text
@@ -86,7 +91,14 @@ RSpec.describe Asciidoctor::Standoc do
86
91
  <clause id="_" inline-header="false" obligation="informative">
87
92
  <title>Introduction Subsection</title>
88
93
  </clause>
89
- </introduction></preface><sections>
94
+ </introduction>
95
+ <clause id='_' inline-header='false' obligation='informative'>
96
+ <title>Dedication</title>
97
+ </clause>
98
+ <acknowledgements id='_' obligation='informative'>
99
+ <title>Acknowledgements</title>
100
+ </acknowledgements>
101
+ </preface><sections>
90
102
 
91
103
 
92
104
  <clause id="_" inline-header="false" obligation="normative">
@@ -102,7 +114,9 @@ RSpec.describe Asciidoctor::Standoc do
102
114
  <preferred>Term1</preferred>
103
115
  </term>
104
116
  </terms>
105
- <clause id="_" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><clause id="_" inline-header="false" obligation="normative">
117
+ <clause id="_" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title>
118
+ <p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
119
+ <clause id="_" inline-header="false" obligation="normative">
106
120
  <title>Introduction</title>
107
121
  <clause id="_" inline-header="false" obligation="normative">
108
122
  <title>Intro 1</title>
@@ -169,7 +183,8 @@ RSpec.describe Asciidoctor::Standoc do
169
183
  it "processes sections with language and script attributes" do
170
184
  expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
171
185
  #{ASCIIDOC_BLANK_HDR}
172
- .Foreword
186
+ [language=en,script=Latn]
187
+ == Foreword
173
188
 
174
189
  Text
175
190
 
@@ -184,6 +199,13 @@ RSpec.describe Asciidoctor::Standoc do
184
199
  [language=en,script=Latn]
185
200
  === Introduction Subsection
186
201
 
202
+ [language=en,script=Latn]
203
+ == Acknowledgements
204
+
205
+ [.preface]
206
+ [language=en,script=Latn]
207
+ == Dedication
208
+
187
209
  [language=en,script=Latn]
188
210
  == Scope
189
211
 
@@ -266,7 +288,7 @@ RSpec.describe Asciidoctor::Standoc do
266
288
  #{BLANK_HDR.sub(/<status>/, "<abstract> <p>Text</p> </abstract><status>")}
267
289
  <preface><abstract id="_" language="en" script="Latn">
268
290
  <p id="_">Text</p>
269
- </abstract><foreword obligation="informative">
291
+ </abstract><foreword id='_' language='en' script='Latn' obligation='informative'>
270
292
  <title>Foreword</title>
271
293
  <p id="_">Text</p>
272
294
  </foreword><introduction id="_" language="en" script="Latn" obligation="informative">
@@ -274,7 +296,14 @@ RSpec.describe Asciidoctor::Standoc do
274
296
  <clause id="_" language="en" script="Latn" inline-header="false" obligation="informative">
275
297
  <title>Introduction Subsection</title>
276
298
  </clause>
277
- </introduction></preface><sections>
299
+ </introduction>
300
+ <clause id='_' language='en' script='Latn' inline-header='false' obligation='informative'>
301
+ <title>Dedication</title>
302
+ </clause>
303
+ <acknowledgements id='_' language='en' script='Latn' obligation='informative'>
304
+ <title>Acknowledgements</title>
305
+ </acknowledgements>
306
+ </preface><sections>
278
307
 
279
308
 
280
309
  <clause id="_" language="en" script="Latn" inline-header="false" obligation="normative">
@@ -290,7 +319,9 @@ RSpec.describe Asciidoctor::Standoc do
290
319
  <preferred>Term1</preferred>
291
320
  </term>
292
321
  </terms>
293
- <clause id="_" language="en" script="Latn" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><clause id="_" language="en" script="Latn" inline-header="false" obligation="normative">
322
+ <clause id="_" language="en" script="Latn" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title>
323
+ <p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
324
+ <clause id="_" language="en" script="Latn" inline-header="false" obligation="normative">
294
325
  <title>Introduction</title>
295
326
  <clause id="_" inline-header="false" obligation="normative">
296
327
  <title>Intro 1</title>
@@ -371,6 +402,9 @@ RSpec.describe Asciidoctor::Standoc do
371
402
 
372
403
  === Introduction Subsection
373
404
 
405
+ [heading=acknowledgements]
406
+ == Ευχαριστίες
407
+
374
408
  [heading=normative references]
375
409
  == Κανονιστικές Παραπομπές
376
410
 
@@ -423,6 +457,9 @@ RSpec.describe Asciidoctor::Standoc do
423
457
  <title>Introduction Subsection</title>
424
458
  </clause>
425
459
  </introduction>
460
+ <acknowledgements id='_' obligation='informative'>
461
+ <title>Ευχαριστίες</title>
462
+ </acknowledgements>
426
463
  </preface>
427
464
  <sections>
428
465
  <terms id='_' obligation='normative'>
@@ -434,6 +471,7 @@ RSpec.describe Asciidoctor::Standoc do
434
471
  </terms>
435
472
  <clause id='_' obligation='normative'>
436
473
  <title>Terms and definitions</title>
474
+ <p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
437
475
  <terms id='_' obligation='normative'>
438
476
  <title>Normal Terms</title>
439
477
  <term id='_'>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-standoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.18
4
+ version: 1.3.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-17 00:00:00.000000000 Z
11
+ date: 2020-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciidoctor