metanorma-standoc 1.3.29 → 1.4.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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/lib/asciidoctor/standoc/base.rb +2 -25
  4. data/lib/asciidoctor/standoc/biblio.rng +13 -3
  5. data/lib/asciidoctor/standoc/blocks.rb +20 -17
  6. data/lib/asciidoctor/standoc/cleanup.rb +2 -0
  7. data/lib/asciidoctor/standoc/cleanup_block.rb +2 -2
  8. data/lib/asciidoctor/standoc/cleanup_section.rb +8 -125
  9. data/lib/asciidoctor/standoc/cleanup_terms.rb +134 -0
  10. data/lib/asciidoctor/standoc/datamodel/attributes_table_preprocessor.rb +57 -0
  11. data/lib/asciidoctor/standoc/datamodel/diagram_preprocessor.rb +102 -0
  12. data/lib/asciidoctor/standoc/datamodel/plantuml_renderer.rb +408 -0
  13. data/lib/asciidoctor/standoc/inline.rb +10 -5
  14. data/lib/asciidoctor/standoc/isodoc.rng +17 -1
  15. data/lib/asciidoctor/standoc/macros.rb +13 -8
  16. data/lib/asciidoctor/standoc/macros_yaml2text.rb +19 -13
  17. data/lib/asciidoctor/standoc/ref.rb +13 -56
  18. data/lib/asciidoctor/standoc/ref_sect.rb +124 -0
  19. data/lib/asciidoctor/standoc/section.rb +2 -46
  20. data/lib/asciidoctor/standoc/views/datamodel/model_representation.adoc.erb +30 -0
  21. data/lib/asciidoctor/standoc/views/datamodel/plantuml_representation.adoc.erb +20 -0
  22. data/lib/metanorma/standoc/version.rb +1 -1
  23. data/metanorma-standoc.gemspec +1 -1
  24. data/spec/asciidoctor-standoc/cleanup_spec.rb +51 -0
  25. data/spec/asciidoctor-standoc/datamodel/attributes_table_preprocessor_spec.rb +76 -0
  26. data/spec/asciidoctor-standoc/datamodel/diagram_preprocessor_spec.rb +72 -0
  27. data/spec/asciidoctor-standoc/inline_spec.rb +5 -1
  28. data/spec/asciidoctor-standoc/macros_spec.rb +50 -0
  29. data/spec/asciidoctor-standoc/macros_yaml2text_spec.rb +2 -1
  30. data/spec/asciidoctor-standoc/refs_spec.rb +0 -4
  31. data/spec/examples/datamodel/address_class_profile.adoc +4 -0
  32. data/spec/examples/datamodel/address_component_profile.adoc +4 -0
  33. data/spec/examples/datamodel/common_models_diagram.adoc +4 -0
  34. data/spec/examples/datamodel/models/models/AddressClassProfile.yml +90 -0
  35. data/spec/examples/datamodel/models/models/AddressComponentProfile.yml +63 -0
  36. data/spec/examples/datamodel/models/models/AddressComponentSpecification.yml +15 -0
  37. data/spec/examples/datamodel/models/models/AddressProfile.yml +36 -0
  38. data/spec/examples/datamodel/models/models/AttributeProfile.yml +32 -0
  39. data/spec/examples/datamodel/models/models/InterchangeAddressClassProfile.yml +79 -0
  40. data/spec/examples/datamodel/models/models/Localization copy.yml +23 -0
  41. data/spec/examples/datamodel/models/models/Localization.yml +23 -0
  42. data/spec/examples/datamodel/models/models/ProfileCompliantAddress.yml +36 -0
  43. data/spec/examples/datamodel/models/models/ProfileCompliantAddressComponent.yml +15 -0
  44. data/spec/examples/datamodel/models/models/Signature copy.yml +20 -0
  45. data/spec/examples/datamodel/models/models/Signature.yml +20 -0
  46. data/spec/examples/datamodel/models/models/TextDirectionCode copy.yml +16 -0
  47. data/spec/examples/datamodel/models/models/TextDirectionCode.yml +16 -0
  48. data/spec/examples/datamodel/models/models/Validity.yml +14 -0
  49. data/spec/examples/datamodel/models/models/iso19160-1/Address.yml +22 -0
  50. data/spec/examples/datamodel/models/models/iso19160-1/AddressComponent.yml +2 -0
  51. data/spec/examples/datamodel/models/style.uml.inc +37 -0
  52. data/spec/examples/datamodel/models/views/CommonModels.yml +9 -0
  53. data/spec/examples/datamodel/models/views/TopDown.yml +62 -0
  54. data/spec/examples/datamodel/top_down_diagram.adoc +4 -0
  55. data/spec/fixtures/macros_datamodel/address_class_profile.xml +149 -0
  56. data/spec/fixtures/macros_datamodel/address_component_profile.xml +71 -0
  57. data/spec/fixtures/macros_datamodel/common_models_diagram.xml +7 -0
  58. data/spec/fixtures/macros_datamodel/top_down_diagram.xml +7 -0
  59. data/spec/spec_helper.rb +13 -2
  60. data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +66 -66
  61. data/spec/vcr_cassettes/isobib_get_123.yml +36 -36
  62. data/spec/vcr_cassettes/isobib_get_123_2001.yml +16 -16
  63. data/spec/vcr_cassettes/isobib_get_124.yml +17 -17
  64. data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +8 -8
  65. data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +41 -38
  66. metadata +41 -4
@@ -32,12 +32,13 @@ module Asciidoctor
32
32
  end
33
33
 
34
34
  def inline_anchor_xref(node)
35
- matched = /^fn(:\s*(?<text>.*))?$/.match node.text
36
- f = matched.nil? ? "inline" : "footnote"
37
- c = matched.nil? ? node.text : matched[:text]
35
+ m = /^(?<case>capital%|lowercase%)?(?<fn>fn(:\s*(?<text>.*))?)?$/.match node.text
36
+ casing = m.nil? ? nil : m[:case]&.sub(/%$/, "")
37
+ f = (m.nil? || m[:fn].nil?) ? "inline" : "footnote"
38
+ c = (!m.nil? && (!m[:fn].nil? || !m[:case].nil?)) ? m[:text] : node.text
38
39
  t = node.target.gsub(/^#/, "").gsub(%r{(\.xml|\.adoc)(#.*$)}, "\\2")
39
40
  noko do |xml|
40
- xml.xref **attr_code(target: t, type: f) do |x|
41
+ xml.xref **attr_code(target: t, type: f, case: casing) do |x|
41
42
  x << c
42
43
  end
43
44
  end.join
@@ -187,7 +188,11 @@ module Asciidoctor
187
188
  return uri if /^data:/.match(uri)
188
189
  types = MIME::Types.type_for(@localdir + uri)
189
190
  type = types ? types.first.to_s : 'text/plain; charset="utf-8"'
190
- bin = File.open(@localdir + uri, 'rb') {|io| io.read}
191
+ # FIXME: nested uri path error(
192
+ # sources/plantuml/plantuml20200524-90467-1iqek5i.png ->
193
+ # sources/sources/plantuml/plantuml20200524-90467-1iqek5i.png)
194
+ path = File.file?(uri) ? uri : @localdir + uri
195
+ bin = File.open(path, 'rb', &:read)
191
196
  data = Base64.strict_encode64(bin)
192
197
  "data:#{type};base64,#{data}"
193
198
  end
@@ -53,6 +53,14 @@
53
53
  <optional>
54
54
  <attribute name="alt"/>
55
55
  </optional>
56
+ <optional>
57
+ <attribute name="case">
58
+ <choice>
59
+ <value>capital</value>
60
+ <value>lowercase</value>
61
+ </choice>
62
+ </attribute>
63
+ </optional>
56
64
  <text/>
57
65
  </element>
58
66
  </define>
@@ -902,7 +910,15 @@
902
910
  <attribute name="id">
903
911
  <data type="ID"/>
904
912
  </attribute>
905
- <ref name="paragraph"/>
913
+ <oneOrMore>
914
+ <choice>
915
+ <ref name="paragraph"/>
916
+ <ref name="ul"/>
917
+ <ref name="ol"/>
918
+ <ref name="dl"/>
919
+ <ref name="formula"/>
920
+ </choice>
921
+ </oneOrMore>
906
922
  </element>
907
923
  </define>
908
924
  <define name="termexample">
@@ -1,8 +1,11 @@
1
1
  require "asciidoctor/extensions"
2
2
  require "fileutils"
3
3
  require "uuidtools"
4
- require_relative "./macros_plantuml.rb"
5
- require_relative "./macros_yaml2text.rb"
4
+ require 'yaml'
5
+ require_relative './macros_plantuml.rb'
6
+ require_relative './datamodel/attributes_table_preprocessor.rb'
7
+ require_relative './datamodel/diagram_preprocessor.rb'
8
+ require_relative './macros_yaml2text.rb'
6
9
 
7
10
  module Asciidoctor
8
11
  module Standoc
@@ -97,23 +100,25 @@ module Asciidoctor
97
100
  end
98
101
 
99
102
  def supply_br(lines)
103
+ ignore = false
100
104
  lines.each_with_index do |l, i|
105
+ /^(--+|====+|\|===|\.\.\.\.+|\*\*\*\*+|\+\+\+\++|\`\`\`\`+|____\+)$/.match(l) and
106
+ ignore = !ignore
101
107
  next if l.empty? || l.match(/ \+$/)
108
+ next if /^\[.*\]$/.match(l)
109
+ next if ignore
102
110
  next if i == lines.size - 1 || i < lines.size - 1 && lines[i+1].empty?
103
111
  lines[i] += " +"
104
112
  end
105
113
  lines
106
114
  end
107
115
 
108
- def prevent_smart_quotes(m)
109
- m.gsub(/'/, "&#x27;").gsub(/"/, "&#x22;")
110
- end
111
-
112
116
  def process parent, reader, attrs
113
117
  attrs['role'] = 'pseudocode'
114
- lines = reader.lines.map { |m| prevent_smart_quotes(init_indent(m)) }
115
- create_block(parent, :example, supply_br(lines),
118
+ lines = reader.lines.map { |m| init_indent(m) }
119
+ ret = create_block(parent, :example, supply_br(lines),
116
120
  attrs, content_model: :compound)
121
+ ret
117
122
  end
118
123
  end
119
124
 
@@ -44,8 +44,8 @@ module Asciidoctor
44
44
  end
45
45
 
46
46
  class Yaml2TextPreprocessor < Asciidoctor::Extensions::Preprocessor
47
- BLOCK_START_REGEXP = /\{(.+?)\.\*,(.+),(.+)\}/.freeze
48
- BLOCK_END_REGEXP = /\A\{[A-Z]+\}\z/.freeze
47
+ BLOCK_START_REGEXP = /\{(.+?)\.\*,(.+),(.+)\}/
48
+ BLOCK_END_REGEXP = /\A\{[A-Z]+\}\z/
49
49
  # search document for block `yaml2text`
50
50
  # after that take template from block and read file into this template
51
51
  # example:
@@ -107,35 +107,41 @@ module Asciidoctor
107
107
 
108
108
  def parse_blocks_recursively(lines:,
109
109
  attributes:,
110
- context_name:,
111
- parent_context: nil)
110
+ context_name:)
112
111
  lines = lines.to_enum
113
112
  result = []
114
113
  loop do
115
114
  line = lines.next
116
115
  if line.match(BLOCK_START_REGEXP)
117
- line.gsub!(BLOCK_START_REGEXP, '<% \1.each.with_index do |\2,index| %>')
116
+ line.gsub!(BLOCK_START_REGEXP,
117
+ '<% \1.each&.with_index do |\2,index| %>')
118
118
  end
119
119
 
120
- if line.match(BLOCK_END_REGEXP)
120
+ if line.strip.match(BLOCK_END_REGEXP)
121
121
  line.gsub!(BLOCK_END_REGEXP, '<% end %>')
122
122
  end
123
- line = line.gsub(/{(.+?[^}]*)}/, '<%= \1 %>').gsub(/[a-z\.]+\#/, 'index')
123
+ line.gsub!(/{\s*if\s*([^}]+)}/, '<% if \1 %>')
124
+ line.gsub!(/{\s*?end\s*?}/, '<% end %>')
125
+ line = line
126
+ .gsub(/{(.+?[^}]*)}/, '<%= \1 %>')
127
+ .gsub(/[a-z\.]+\#/, 'index')
124
128
  result.push(line)
125
129
  end
126
130
  result = parse_context_block(context_lines: result,
127
131
  context_items: attributes,
128
- context_name: context_name,
129
- parent_context: parent_context)
132
+ context_name: context_name)
130
133
  result
131
134
  end
132
135
 
133
136
  def parse_context_block(context_lines:,
134
137
  context_items:,
135
- context_name:,
136
- parent_context: nil)
137
- renderer = YamlContextRenderer.new(context_object: context_items, context_name: context_name)
138
- renderer.render(context_lines.join('\n')).split('\n')
138
+ context_name:)
139
+ renderer = YamlContextRenderer
140
+ .new(
141
+ context_object: context_items,
142
+ context_name: context_name
143
+ )
144
+ renderer.render(context_lines.join("\n")).split("\n")
139
145
  end
140
146
  end
141
147
  end
@@ -46,7 +46,15 @@ module Asciidoctor
46
46
  ["metanorma", mn_code(code)] :
47
47
  @bibdb&.docid_type(code) || [nil, code]
48
48
  code1.sub!(/^nofetch\((.+)\)$/, "\\1")
49
- t.docidentifier code1, **attr_code(type: type)
49
+ t.docidentifier **attr_code(type: type) do |d|
50
+ d << code1
51
+ end
52
+ end
53
+
54
+ def docnumber(t, code)
55
+ t.docnumber do |d|
56
+ d << HTMLEntities.new.decode(code).sub(/^[^\d]*/, "")
57
+ end
50
58
  end
51
59
 
52
60
  def norm_year(yr)
@@ -62,7 +70,7 @@ module Asciidoctor
62
70
  t.title(**plaintxt) { |i| i << ref_normalise(m[:text]) }
63
71
  docid(t, m[:usrlbl]) if m[:usrlbl]
64
72
  docid(t, id_and_year(m[:code], yr))
65
- t.docnumber m[:code].sub(/^[^\d]*/, "")
73
+ docnumber(t, m[:code])
66
74
  yr and t.date **{ type: "published" } do |d|
67
75
  set_date_range(d, yr)
68
76
  end
@@ -79,7 +87,7 @@ module Asciidoctor
79
87
  t.title(**plaintxt) { |i| i << ref_normalise(m[:text]) }
80
88
  docid(t, m[:usrlbl]) if m[:usrlbl]
81
89
  docid(t, id_and_year(m[:code], "--"))
82
- t.docnumber m[:code].sub(/^[^\d]*/, "")
90
+ docnumber(t, m[:code])
83
91
  t.date **{ type: "published" } do |d|
84
92
  d.on "--"
85
93
  end
@@ -110,7 +118,7 @@ module Asciidoctor
110
118
  t.title(**plaintxt) { |i| i << ref_normalise(m[:text]) }
111
119
  docid(t, m[:usrlbl]) if m[:usrlbl]
112
120
  docid(t, id_and_year(m[:code], yr) + " (all parts)")
113
- t.docnumber m[:code].sub(/^[^\d]*/, "")
121
+ docnumber(t, m[:code])
114
122
  conditional_date(t, m, noyr)
115
123
  iso_publisher(t, m[:code])
116
124
  m.names.include?("fn") && m[:fn] and
@@ -121,20 +129,6 @@ module Asciidoctor
121
129
  end
122
130
  end
123
131
 
124
- def fetch_ref(xml, code, year, **opts)
125
- return nil if opts[:no_year]
126
- code = code.sub(/^\([^)]+\)/, "")
127
- hit = @bibdb&.fetch(code, year, opts)
128
- return nil if hit.nil?
129
- xml.parent.add_child(smart_render_xml(hit, code, opts[:title],
130
- opts[:usrlbl]))
131
- xml
132
- rescue RelatonBib::RequestError
133
- @log.add("Bibliography", nil, "Could not retrieve #{code}: "\
134
- "no access to online site")
135
- nil
136
- end
137
-
138
132
  def refitem_render(xml, m)
139
133
  xml.bibitem **attr_code(id: m[:anchor]) do |t|
140
134
  t.formattedref **{ format: "application/x-isodoc+xml" } do |i|
@@ -142,7 +136,7 @@ module Asciidoctor
142
136
  end
143
137
  docid(t, m[:usrlbl]) if m[:usrlbl]
144
138
  docid(t, /^\d+$/.match(m[:code]) ? "[#{m[:code]}]" : m[:code])
145
- t.docnumber m[:code].sub(/^[^\d]*/, "") unless /^\d+$|^\(.+\)$/.match(m[:code])
139
+ docnumber(t, m[:code]) unless /^\d+$|^\(.+\)$/.match(m[:code])
146
140
  end
147
141
  end
148
142
 
@@ -214,46 +208,9 @@ module Asciidoctor
214
208
  end.join
215
209
  end
216
210
 
217
- def global_ievcache_name
218
- "#{Dir.home}/.iev/cache"
219
- end
220
-
221
- def local_ievcache_name(cachename)
222
- return nil if cachename.nil?
223
- cachename += "_iev" unless cachename.empty?
224
- cachename = "iev" if cachename.empty?
225
- "#{cachename}/cache"
226
- end
227
-
228
211
  def mn_code(code)
229
212
  code.sub(/^\(/, "[").sub(/\).*$/, "]").sub(/^nofetch\((.+)\)$/, "\\1")
230
213
  end
231
-
232
- def emend_biblio(xml, code, title, usrlbl)
233
- unless xml.at("/bibitem/docidentifier[not(@type = 'DOI')][text()]")
234
- @log.add("Bibliography", nil,
235
- "ERROR: No document identifier retrieved for #{code}")
236
- xml.root << "<docidentifier>#{code}</docidentifier>"
237
- end
238
- unless xml.at("/bibitem/title[text()]")
239
- @log.add("Bibliography", nil,
240
- "ERROR: No title retrieved for #{code}")
241
- xml.root << "<title>#{title || "(MISSING TITLE)"}</title>"
242
- end
243
- usrlbl and xml.at("/bibitem/docidentifier").next =
244
- "<docidentifier type='metanorma'>#{mn_code(usrlbl)}</docidentifier>"
245
- end
246
-
247
- def smart_render_xml(x, code, title, usrlbl)
248
- xstr = x.to_xml if x.respond_to? :to_xml
249
- xml = Nokogiri::XML(xstr)
250
- emend_biblio(xml, code, title, usrlbl)
251
- xml.xpath("//date").each { |d| Utils::endash_date(d) }
252
- xml.traverse do |n|
253
- n.text? and n.replace(Utils::smartformat(n.text))
254
- end
255
- xml.to_xml.sub(/<\?[^>]+>/, "")
256
- end
257
214
  end
258
215
  end
259
216
  end
@@ -0,0 +1,124 @@
1
+ module Asciidoctor
2
+ module Standoc
3
+ module Section
4
+ def in_biblio?
5
+ @biblio
6
+ end
7
+
8
+ def in_norm_ref?
9
+ @norm_ref
10
+ end
11
+
12
+ def bibliography_parse(attrs, xml, node)
13
+ node.option? "bibitem" and return bibitem_parse(attrs, xml, node)
14
+ node.attr("style") == "bibliography" or
15
+ @log.add("AsciiDoc Input", node, "Section not marked up as [bibliography]!")
16
+ @biblio = true
17
+ xml.references **attr_code(attrs.merge(normative: false)) do |xml_section|
18
+ title = node.level == 1 ? "Bibliography" : node.title
19
+ xml_section.title { |t| t << title }
20
+ xml_section << node.content
21
+ end
22
+ @biblio = false
23
+ end
24
+
25
+ def bibitem_parse(attrs, xml, node)
26
+ norm_ref = @norm_ref
27
+ biblio = @biblio
28
+ @biblio = false
29
+ @norm_ref = false
30
+ clause_parse(attrs, xml, node)
31
+ @biblio = biblio
32
+ @norm_ref = norm_ref
33
+ end
34
+
35
+ def norm_ref_parse(attrs, xml, node)
36
+ node.option? "bibitem" and return bibitem_parse(attrs, xml, node)
37
+ node.attr("style") == "bibliography" or
38
+ @log.add("AsciiDoc Input", node, "Section not marked up as [bibliography]!")
39
+ @norm_ref = true
40
+ xml.references **attr_code(attrs.merge(normative: true)) do |xml_section|
41
+ xml_section.title { |t| t << "Normative References" }
42
+ xml_section << node.content
43
+ end
44
+ @norm_ref = false
45
+ end
46
+
47
+ def global_ievcache_name
48
+ "#{Dir.home}/.iev/cache"
49
+ end
50
+
51
+ def local_ievcache_name(cachename)
52
+ return nil if cachename.nil?
53
+ cachename += "_iev" unless cachename.empty?
54
+ cachename = "iev" if cachename.empty?
55
+ "#{cachename}/cache"
56
+ end
57
+
58
+ def fetch_ref(xml, code, year, **opts)
59
+ return nil if opts[:no_year]
60
+ code = code.sub(/^\([^)]+\)/, "")
61
+ hit = @bibdb&.fetch(code, year, opts)
62
+ return nil if hit.nil?
63
+ xml.parent.add_child(smart_render_xml(hit, code, opts[:title],
64
+ opts[:usrlbl]))
65
+ xml
66
+ rescue RelatonBib::RequestError
67
+ @log.add("Bibliography", nil, "Could not retrieve #{code}: "\
68
+ "no access to online site")
69
+ nil
70
+ end
71
+
72
+ def emend_biblio(xml, code, title, usrlbl)
73
+ unless xml.at("/bibitem/docidentifier[not(@type = 'DOI')][text()]")
74
+ @log.add("Bibliography", nil,
75
+ "ERROR: No document identifier retrieved for #{code}")
76
+ xml.root << "<docidentifier>#{code}</docidentifier>"
77
+ end
78
+ unless xml.at("/bibitem/title[text()]")
79
+ @log.add("Bibliography", nil,
80
+ "ERROR: No title retrieved for #{code}")
81
+ xml.root << "<title>#{title || "(MISSING TITLE)"}</title>"
82
+ end
83
+ usrlbl and xml.at("/bibitem/docidentifier").next =
84
+ "<docidentifier type='metanorma'>#{mn_code(usrlbl)}</docidentifier>"
85
+ end
86
+
87
+ def smart_render_xml(x, code, title, usrlbl)
88
+ xstr = x.to_xml if x.respond_to? :to_xml
89
+ xml = Nokogiri::XML(xstr)
90
+ emend_biblio(xml, code, title, usrlbl)
91
+ xml.xpath("//date").each { |d| Utils::endash_date(d) }
92
+ xml.traverse do |n|
93
+ n.text? and n.replace(Utils::smartformat(n.text))
94
+ end
95
+ xml.to_xml.sub(/<\?[^>]+>/, "")
96
+ end
97
+
98
+ def init_bib_caches(node)
99
+ return if @no_isobib
100
+ global = !@no_isobib_cache && !node.attr("local-cache-only")
101
+ local = node.attr("local-cache") || node.attr("local-cache-only")
102
+ local = nil if @no_isobib_cache
103
+ @bibdb = Relaton::DbCache.init_bib_caches(
104
+ local_cache: local,
105
+ flush_caches: node.attr("flush-caches"),
106
+ global_cache: global)
107
+ end
108
+
109
+ def init_iev_caches(node)
110
+ unless (@no_isobib_cache || @no_isobib)
111
+ node.attr("local-cache-only") or
112
+ @iev_globalname = global_ievcache_name
113
+ @iev_localname = local_ievcache_name(node.attr("local-cache") ||
114
+ node.attr("local-cache-only"))
115
+ if node.attr("flush-caches")
116
+ FileUtils.rm_f @iev_globalname unless @iev_globalname.nil?
117
+ FileUtils.rm_f @iev_localname unless @iev_localname.nil?
118
+ end
119
+ end
120
+ #@iev = Iev::Db.new(globalname, localname) unless @no_isobib
121
+ end
122
+ end
123
+ end
124
+ end
@@ -1,5 +1,6 @@
1
1
  require "htmlentities"
2
2
  require "uri"
3
+ require_relative "ref_sect"
3
4
 
4
5
  module Asciidoctor
5
6
  module Standoc
@@ -8,18 +9,10 @@ module Asciidoctor
8
9
  @term_def = false
9
10
  @norm_ref = false
10
11
 
11
- def in_biblio?
12
- @biblio
13
- end
14
-
15
12
  def in_terms?
16
13
  @term_def
17
14
  end
18
15
 
19
- def in_norm_ref?
20
- @norm_ref
21
- end
22
-
23
16
  def sectiontype(node, level = true)
24
17
  ret = node&.attr("heading")&.downcase ||
25
18
  node.title.gsub(/<[^>]+>/, "").downcase
@@ -41,9 +34,7 @@ module Asciidoctor
41
34
  "terms, definitions and abbreviated terms"
42
35
  "terms and definitions"
43
36
  when "symbols and abbreviated terms",
44
- "symbols",
45
- "abbreviated terms",
46
- "abbreviations"
37
+ "symbols", "abbreviated terms", "abbreviations"
47
38
  "symbols and abbreviated terms"
48
39
  else
49
40
  ret
@@ -148,19 +139,6 @@ module Asciidoctor
148
139
  end
149
140
  end
150
141
 
151
- def bibliography_parse(attrs, xml, node)
152
- node.option? "bibitem" and return bibitem_parse(attrs, xml, node)
153
- node.attr("style") == "bibliography" or
154
- @log.add("AsciiDoc Input", node, "Section not marked up as [bibliography]!")
155
- @biblio = true
156
- xml.references **attr_code(attrs.merge(normative: false)) do |xml_section|
157
- title = node.level == 1 ? "Bibliography" : node.title
158
- xml_section.title { |t| t << title }
159
- xml_section << node.content
160
- end
161
- @biblio = false
162
- end
163
-
164
142
  def nonterm_symbols_parse(attrs, xml, node)
165
143
  @definitions = false
166
144
  clause_parse(attrs, xml, node)
@@ -236,28 +214,6 @@ module Asciidoctor
236
214
  end
237
215
  end
238
216
 
239
- def bibitem_parse(attrs, xml, node)
240
- norm_ref = @norm_ref
241
- biblio = @biblio
242
- @biblio = false
243
- @norm_ref = false
244
- clause_parse(attrs, xml, node)
245
- @biblio = biblio
246
- @norm_ref = norm_ref
247
- end
248
-
249
- def norm_ref_parse(attrs, xml, node)
250
- node.option? "bibitem" and return bibitem_parse(attrs, xml, node)
251
- node.attr("style") == "bibliography" or
252
- @log.add("AsciiDoc Input", node, "Section not marked up as [bibliography]!")
253
- @norm_ref = true
254
- xml.references **attr_code(attrs.merge(normative: true)) do |xml_section|
255
- xml_section.title { |t| t << "Normative References" }
256
- xml_section << node.content
257
- end
258
- @norm_ref = false
259
- end
260
-
261
217
  def introduction_parse(attrs, xml, node)
262
218
  xml.introduction **attr_code(attrs) do |xml_section|
263
219
  xml_section.title { |t| t << "Introduction" }