metanorma-standoc 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3e25ec1e8d5bc7bd069b096125a76184bd1349bc64bc79a4e5c51f2441d3fb89
4
- data.tar.gz: 888e53e4d5a11a260d74a520715c9343cf6d5889430e8491c91a1abf2476e057
3
+ metadata.gz: 7d40164559c6167d8a76a56feec14ad218ad6b3151419dd7f5069859daf39945
4
+ data.tar.gz: 55b683b4abb435f27648c042092526121b9235cebe9dfc95ce633efe9af3e057
5
5
  SHA512:
6
- metadata.gz: d0b4f072611604bd9d6859676f98baaa6f09c95d886dbac7e5e21172fa34ccaec156c7560eccbb69a1e9bca784aae39325dce0e82bbbdf64dd0f27d05835b3b2
7
- data.tar.gz: 405c4e68f48462b48249cc5d76de89b80b412f546a47992b37bd36ff68cce0a52f0cb82467439e7fe666b3b03fbf102831e17f3fb8b47757b56093627914581d
6
+ metadata.gz: 94f95a9f73f40f7037fccda3c15f7608e570f3cef8903aa3f11e4540d370bf9f84809dd2566fdf27106a263c5cf16fcef2757be434ff9d85f7ee424224240012
7
+ data.tar.gz: 17579d0d6cd9d1401a847d0cc9fe519a95b6708d181f621a8592b615d2b09ef9376452c20aa8e8baaa55ca3b6630a1a28c26dc38d557304f10086ab369b23188
@@ -384,7 +384,7 @@
384
384
  </define>
385
385
  <define name="LocalityType">
386
386
  <data type="string">
387
- <param name="pattern">section|clause|part|paragraph|chapter|page|whole|table|annex|figure|note|example|volume|issue|locality:[a-zA-Z0-9_]+</param>
387
+ <param name="pattern">section|clause|part|paragraph|chapter|page|whole|table|annex|figure|note|list|example|volume|issue|locality:[a-zA-Z0-9_]+</param>
388
388
  </data>
389
389
  </define>
390
390
  <define name="referenceFrom">
@@ -700,8 +700,12 @@
700
700
  <ref name="btitle"/>
701
701
  <ref name="formattedref"/>
702
702
  </choice>
703
- <ref name="bplace"/>
704
- <ref name="seriesorganization"/>
703
+ <optional>
704
+ <ref name="bplace"/>
705
+ </optional>
706
+ <optional>
707
+ <ref name="seriesorganization"/>
708
+ </optional>
705
709
  <optional>
706
710
  <ref name="abbreviation"/>
707
711
  </optional>
@@ -6,7 +6,7 @@ module Asciidoctor
6
6
  # extending localities to cover ISO referencing
7
7
  LOCALITY_REGEX_STR = <<~REGEXP.freeze
8
8
  ^((?<locality>section|clause|part|paragraph|chapter|page|
9
- table|annex|figure|example|note|formula|
9
+ table|annex|figure|example|note|formula|list|
10
10
  locality:[^ \\t\\n\\r:,]+)(\\s+|=)
11
11
  (?<ref>[^"][^ \\t\\n,:-]*|"[^"]+")
12
12
  (-(?<to>[^"][^ \\t\\n,:-]*|"[^"]"))?|
@@ -115,10 +115,12 @@ module Asciidoctor
115
115
  def reference_names(xmldoc)
116
116
  xmldoc.xpath("//bibitem[not(ancestor::bibitem)]").each do |ref|
117
117
  isopub = ref.at(ISO_PUBLISHER_XPATH)
118
- docid = ref.at("./docidentifier")
118
+ docid = ref.at("./docidentifier[not(@type = 'DOI')]")
119
119
  date = ref.at("./date[@type = 'published']")
120
+ allparts = ref.at("./allparts")
120
121
  reference = format_ref(docid.text, isopub)
121
122
  reference += ":#{date_range(date)}" if date
123
+ reference += " (all parts)" if allparts
122
124
  @anchors[ref["id"]] = { xref: reference }
123
125
  end
124
126
  end
@@ -129,11 +131,12 @@ module Asciidoctor
129
131
  # <locality type="clause"><referenceFrom>101-01-01</referenceFrom></locality></eref>
130
132
  def linksIev2iec60050part(xmldoc)
131
133
  parts = Set.new()
132
- xmldoc.xpath("//eref[@citeas = 'IEC 60050'] | //origin[@citeas = 'IEC 60050']").each do |x|
134
+ xmldoc.xpath("//eref[@citeas = 'IEC 60050:2011'] | "\
135
+ "//origin[@citeas = 'IEC 60050:2011']").each do |x|
133
136
  cl = x&.at("./locality[@type = 'clause']/referenceFrom")&.text || next
134
137
  m = /^(\d+)/.match cl || next
135
138
  parts << m[0]
136
- x["citeas"] += "-#{m[0]}"
139
+ x["citeas"] = x["citeas"].sub(/60050/, "60050-#{m[0]}")
137
140
  end
138
141
  parts
139
142
  end
@@ -58,29 +58,39 @@ module Asciidoctor
58
58
  t.title(**plaintxt) { |i| i << ref_normalise(m[:text]) }
59
59
  t.docidentifier m[:code]
60
60
  t.date **{ type: "published" } do |d|
61
- d.on "--"
61
+ d.on "--"
62
62
  end
63
63
  iso_publisher(t, m[:code])
64
64
  t.note(**plaintxt) { |p| p << "ISO DATE: #{m[:fn]}" }
65
65
  end
66
66
  end
67
67
 
68
+ def conditional_date(t, m, noyr)
69
+ m.names.include?("year") and
70
+ t.date(**{ type: "published" }) do |d|
71
+ if noyr then d.on "--"
72
+ else
73
+ set_date_range(d, m[:year])
74
+ end
75
+ end
76
+ end
77
+
68
78
  def isorefmatches3(xml, m)
69
- hasyr = m.names.include?("year")
70
- ref = fetch_ref xml, m[:code], hasyr ? m[:year] : nil, all_parts: true
79
+ hasyr = m.names.include?("year") && m[:year] != "--"
80
+ noyr = m.names.include?("year") && m[:year] == "--"
81
+ ref = fetch_ref xml, m[:code], hasyr ? m[:year] : nil, all_parts: true, no_year: noyr
71
82
  return use_my_anchor(ref, m[:anchor]) if ref
72
83
  xml.bibitem(**attr_code(ref_attributes(m))) do |t|
73
84
  t.title(**plaintxt) { |i| i << ref_normalise(m[:text]) }
74
85
  t.docidentifier "#{m[:code]}"
75
- hasyr and
76
- t.date(**{ type: "published" }) { |d| set_date_range(d, m[:year]) }
86
+ conditional_date(t, m, noyr)
77
87
  iso_publisher(t, m[:code])
78
- t.allParts "true"
88
+ t.note(**plaintxt) { |p| p << "ISO DATE: #{m[:fn]}" } if m.names.include?("fn") && m[:fn]
89
+ t.allparts "true"
79
90
  end
80
91
  end
81
92
 
82
93
  def fetch_ref(xml, code, year, **opts)
83
- #require "byebug"; byebug
84
94
  hit = @bibdb&.fetch(code, year, opts)
85
95
  return nil if hit.nil?
86
96
  xml.parent.add_child(hit.to_xml)
@@ -135,9 +145,9 @@ module Asciidoctor
135
145
  <fn[^>]*>\s*<p>(?<fn>[^\]]+)</p>\s*</fn>,?\s?(?<text>.*)$}xm
136
146
 
137
147
  ISO_REF_ALL_PARTS = %r{^<ref\sid="(?<anchor>[^"]+)">
138
- \[(?<code>(ISO|IEC)[^0-9]*\s[0-9]+)(:(?<year>[0-9][0-9-]+))?\s
148
+ \[(?<code>(ISO|IEC)[^0-9]*\s[0-9]+)(:(?<year>--|[0-9][0-9-]+))?\s
139
149
  \(all\sparts\)\]</ref>,?\s
140
- (?<text>.*)$}xm
150
+ (<fn[^>]*>\s*<p>(?<fn>[^\]]+)</p>\s*</fn>,?\s?)?(?<text>.*)$}xm
141
151
 
142
152
  NON_ISO_REF = %r{^<ref\sid="(?<anchor>[^"]+)">
143
153
  \[(?<code>[^\]]+?)([:-](?<year>(19|20)[0-9][0-9]))?\]</ref>,?\s
@@ -133,7 +133,7 @@ module Asciidoctor
133
133
  xml.terms **attr_code(attrs) do |section|
134
134
  section.title { |t| t << term_def_title(toplevel, node) }
135
135
  (s = node.attr("source")) && s.split(/,/).each do |s1|
136
- section.termdocsource(nil, **attr_code(bibitemid: s1, type: "inline"))
136
+ section.termdocsource(nil, **attr_code(bibitemid: s1))
137
137
  end
138
138
  section << node.content
139
139
  end
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Standoc
3
- VERSION = "1.0.1".freeze
3
+ VERSION = "1.0.2".freeze
4
4
  end
5
5
  end
@@ -790,25 +790,28 @@ r = 1 %</stem>
790
790
  <terms id="_" obligation="normative"><title>Terms and definitions</title><term id="_">
791
791
  <preferred>Automation1</preferred>
792
792
  <termsource status="identical">
793
- <origin bibitemid="iev" type="inline" citeas="IEC 60050-103"><locality type="clause"><referenceFrom>103-01-02</referenceFrom></locality></origin>
793
+ <origin bibitemid="iev" type="inline" citeas="IEC 60050-103:2011"><locality type="clause"><referenceFrom>103-01-02</referenceFrom></locality></origin>
794
794
  </termsource>
795
795
  </term>
796
796
  <term id="_">
797
797
  <preferred>Automation2</preferred>
798
798
  <termsource status="identical">
799
- <origin bibitemid="iev" type="inline" citeas="IEC 60050-102"><locality type="clause"><referenceFrom>102-01-02</referenceFrom></locality></origin>
799
+ <origin bibitemid="iev" type="inline" citeas="IEC 60050-102:2011"><locality type="clause"><referenceFrom>102-01-02</referenceFrom></locality></origin>
800
800
  </termsource>
801
801
  </term>
802
802
  <term id="_">
803
803
  <preferred>Automation3</preferred>
804
804
  <termsource status="identical">
805
- <origin bibitemid="iev" type="inline" citeas="IEC 60050-103"><locality type="clause"><referenceFrom>103-01-02</referenceFrom></locality></origin>
805
+ <origin bibitemid="iev" type="inline" citeas="IEC 60050-103:2011"><locality type="clause"><referenceFrom>103-01-02</referenceFrom></locality></origin>
806
806
  </termsource>
807
807
  </term></terms></sections><bibliography><references id="_" obligation="informative">
808
808
  <title>Normative References</title>
809
809
  <bibitem type="international-standard" id="IEC60050-102">
810
810
  <title format="text/plain" language="en" script="Latn">International Electrotechnical Vocabulary</title>
811
811
  <docidentifier>IEC 60050-102</docidentifier>
812
+ <date type="published">
813
+ <on>2011</on>
814
+ </date>
812
815
  <contributor>
813
816
  <role type="publisher"/>
814
817
  <organization>
@@ -836,6 +839,9 @@ r = 1 %</stem>
836
839
  </bibitem><bibitem type="international-standard" id="IEC60050-103">
837
840
  <title format="text/plain" language="en" script="Latn">International Electrotechnical Vocabulary</title>
838
841
  <docidentifier>IEC 60050-103</docidentifier>
842
+ <date type="published">
843
+ <on>2011</on>
844
+ </date>
839
845
  <contributor>
840
846
  <role type="publisher"/>
841
847
  <organization>
@@ -332,7 +332,7 @@ RSpec.describe Asciidoctor::Standoc do
332
332
  <name>ISO</name>
333
333
  </organization>
334
334
  </contributor>
335
- <allParts>true</allParts>
335
+ <allparts>true</allparts>
336
336
  </bibitem>
337
337
  </references>
338
338
  </bibliography>
@@ -347,16 +347,27 @@ RSpec.describe Asciidoctor::Standoc do
347
347
  [bibliography]
348
348
  == Normative References
349
349
 
350
- * [[[iso123,IETF RFC 8341]]] _Standard_
350
+ * [[[iso123,IETF RFC 8341]]], _Standard_
351
+
352
+ == Clause 4
353
+
354
+ <<iso123>>
351
355
  INPUT
352
356
  #{BLANK_HDR}
353
357
  <sections>
358
+ <clause id="_" inline-header="false" obligation="normative">
359
+ <title>Clause 4</title>
360
+ <p id="_">
361
+ <eref type="inline" bibitemid="iso123" citeas="RFC 8341:2018"/>
362
+ </p>
363
+ </clause>
354
364
 
355
365
  </sections><bibliography><references id="_" obligation="informative">
356
366
  <title>Normative References</title>
357
367
  <bibitem type="" id="iso123">
358
368
  <title format="text/plain" language="en" script="Latn">Network Configuration Access Control Model</title>
359
- <docidentifier>8341</docidentifier>
369
+ <docidentifier type="DOI">10.17487/RFC8341</docidentifier>
370
+ <docidentifier type="IETF">RFC 8341</docidentifier>
360
371
  <date type="published">
361
372
  <on>2018</on>
362
373
  </date>
@@ -588,19 +599,20 @@ OUTPUT
588
599
  end
589
600
  end
590
601
 
591
- def mock_rfcbib_get_rfc8341
602
+ def mock_rfcbib_get_rfc8341
592
603
  expect(RfcBib::RfcBibliography).to receive(:get).with("RFC 8341", nil, {}) do
593
- IsoBibItem.from_xml(<<~"OUTPUT")
604
+ IsoBibItem.from_xml(<<~"OUTPUT")
594
605
  <bibitem id="RFC8341">
595
606
  <title format="text/plain" language="en" script="Latn">Network Configuration Access Control Model</title>
596
- <docidentifier>8341</docidentifier>
607
+ <docidentifier type="DOI">10.17487/RFC8341</docidentifier>
608
+ <docidentifier type="IETF">RFC 8341</docidentifier>
597
609
  <date type="published">
598
610
  <on>2018</on>
599
611
  </date>
600
612
  <status>published</status>
601
613
  </bibitem>
602
- OUTPUT
614
+ OUTPUT
615
+ end
603
616
  end
604
- end
605
617
 
606
618
  end
@@ -298,7 +298,7 @@ RSpec.describe Asciidoctor::Standoc do
298
298
 
299
299
  INPUT
300
300
  #{BLANK_HDR}
301
- <termdocsource bibitemid="iso1234" type="inline"/><termdocsource bibitemid="iso5678" type="inline"/>
301
+ <termdocsource bibitemid="iso1234"/><termdocsource bibitemid="iso5678"/>
302
302
  <preface><foreword obligation="informative">
303
303
  <title>Foreword</title>
304
304
  <p id="_">Foreword</p>
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.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-21 00:00:00.000000000 Z
11
+ date: 2018-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciidoctor