metanorma-standoc 1.6.4 → 1.7.3
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 +4 -4
- data/.github/workflows/rake.yml +17 -0
- data/lib/asciidoctor/standoc/base.rb +8 -16
- data/lib/asciidoctor/standoc/basicdoc.rng +50 -3
- data/lib/asciidoctor/standoc/cleanup.rb +1 -1
- data/lib/asciidoctor/standoc/cleanup_block.rb +0 -8
- data/lib/asciidoctor/standoc/cleanup_boilerplate.rb +33 -20
- data/lib/asciidoctor/standoc/cleanup_inline.rb +3 -1
- data/lib/asciidoctor/standoc/cleanup_ref.rb +17 -24
- data/lib/asciidoctor/standoc/cleanup_terms.rb +4 -6
- data/lib/asciidoctor/standoc/converter.rb +4 -49
- data/lib/asciidoctor/standoc/front_contributor.rb +8 -4
- data/lib/asciidoctor/standoc/inline.rb +7 -5
- data/lib/asciidoctor/standoc/isodoc.rng +48 -3
- data/lib/asciidoctor/standoc/macros.rb +30 -61
- data/lib/asciidoctor/standoc/macros_terms.rb +82 -0
- data/lib/asciidoctor/standoc/ref.rb +12 -21
- data/lib/asciidoctor/standoc/section.rb +22 -20
- data/lib/asciidoctor/standoc/table.rb +12 -0
- data/lib/asciidoctor/standoc/term_lookup_cleanup.rb +86 -0
- data/lib/asciidoctor/standoc/utils.rb +2 -0
- data/lib/metanorma/standoc/version.rb +1 -1
- data/metanorma-standoc.gemspec +1 -2
- data/spec/asciidoctor-standoc/base_spec.rb +14 -8
- data/spec/asciidoctor-standoc/blocks_spec.rb +14 -9
- data/spec/asciidoctor-standoc/cleanup_sections_spec.rb +18 -13
- data/spec/asciidoctor-standoc/cleanup_spec.rb +75 -11
- data/spec/asciidoctor-standoc/inline_spec.rb +4 -5
- data/spec/asciidoctor-standoc/macros_lutaml_spec.rb +1 -1
- data/spec/asciidoctor-standoc/macros_plantuml_spec.rb +307 -0
- data/spec/asciidoctor-standoc/macros_spec.rb +258 -277
- data/spec/asciidoctor-standoc/refs_dl_spec.rb +4 -4
- data/spec/asciidoctor-standoc/section_spec.rb +155 -12
- data/spec/asciidoctor-standoc/table_spec.rb +146 -0
- data/spec/fixtures/diagram_definitions.lutaml +4 -4
- data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +49 -49
- data/spec/vcr_cassettes/isobib_get_123.yml +13 -13
- data/spec/vcr_cassettes/isobib_get_123_1.yml +25 -25
- data/spec/vcr_cassettes/isobib_get_123_1_fr.yml +33 -33
- data/spec/vcr_cassettes/isobib_get_123_2001.yml +14 -14
- data/spec/vcr_cassettes/isobib_get_124.yml +14 -14
- data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +8 -8
- data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +71 -75
- metadata +7 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf94c8165f552d893fafcd889f4a87497cf9d3cacf47aa9b1ea840da7d95b1c6
|
4
|
+
data.tar.gz: 0a7aa11f804bf0cb450252c9183353f11571dddf9f3ca15d279aca27483510ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89c736fe574b64de2b97a244435f3a851d667d99e952ec6d5ba5e0d4f0c40986cb87958e1ed99d68e6d6bdd6ae89dccdba104855cd12738e0801b8657e3b3adf
|
7
|
+
data.tar.gz: fb9b3000f186215a782eb1d65114c86108e48742336337ae365320344cc6f0c23e5bbd2a20ab7cfa0534ff55140baa23a21870a0af14e40b3dd8589f02db32d5
|
data/.github/workflows/rake.yml
CHANGED
@@ -36,6 +36,9 @@ jobs:
|
|
36
36
|
with:
|
37
37
|
ruby-version: ${{ matrix.ruby }}
|
38
38
|
|
39
|
+
- if: matrix.os == 'macos-latest'
|
40
|
+
run: brew install autoconf automake libtool
|
41
|
+
|
39
42
|
- uses: actions/cache@v2
|
40
43
|
with:
|
41
44
|
path: vendor/bundle
|
@@ -64,3 +67,17 @@ jobs:
|
|
64
67
|
run: cinst -y plantuml
|
65
68
|
|
66
69
|
- run: bundle exec rake
|
70
|
+
|
71
|
+
tests-passed:
|
72
|
+
needs: rake
|
73
|
+
runs-on: ubuntu-latest
|
74
|
+
continue-on-error: true
|
75
|
+
steps:
|
76
|
+
- name: Trigger tests passed event
|
77
|
+
uses: Sibz/github-status-action@v1
|
78
|
+
with:
|
79
|
+
authToken: ${{ secrets.METANORMA_CI_PAT_TOKEN || secrets.GITHUB_TOKEN }}
|
80
|
+
context: 'tests-passed-successfully'
|
81
|
+
description: 'Tests passed successfully'
|
82
|
+
state: 'success'
|
83
|
+
sha: ${{ github.event.pull_request.head.sha || github.sha }}
|
@@ -94,12 +94,10 @@ module Asciidoctor
|
|
94
94
|
@draft = node.attributes.has_key?("draft")
|
95
95
|
@novalid = node.attr("novalid")
|
96
96
|
@smartquotes = node.attr("smartquotes") != "false"
|
97
|
-
@keepasciimath = node.attr("mn-keep-asciimath") &&
|
98
|
-
node.attr("mn-keep-asciimath") != "false"
|
97
|
+
@keepasciimath = node.attr("mn-keep-asciimath") && node.attr("mn-keep-asciimath") != "false"
|
99
98
|
@fontheader = default_fonts(node)
|
100
99
|
@files_to_delete = []
|
101
|
-
@filename = node.attr("docfile") ?
|
102
|
-
File.basename(node.attr("docfile")).gsub(/\.adoc$/, "") : ""
|
100
|
+
@filename = node.attr("docfile") ? File.basename(node.attr("docfile")).gsub(/\.adoc$/, "") : ""
|
103
101
|
@localdir = Utils::localdir(node)
|
104
102
|
@output_dir = outputdir node
|
105
103
|
@no_isobib_cache = node.attr("no-isobib-cache")
|
@@ -119,11 +117,9 @@ module Asciidoctor
|
|
119
117
|
|
120
118
|
def default_fonts(node)
|
121
119
|
b = node.attr("body-font") ||
|
122
|
-
(node.attr("script") == "Hans" ? '"SimSun",serif' :
|
123
|
-
'"Cambria",serif')
|
120
|
+
(node.attr("script") == "Hans" ? '"SimSun",serif' : '"Cambria",serif')
|
124
121
|
h = node.attr("header-font") ||
|
125
|
-
(node.attr("script") == "Hans" ? '"SimHei",sans-serif' :
|
126
|
-
'"Cambria",serif')
|
122
|
+
(node.attr("script") == "Hans" ? '"SimHei",sans-serif' : '"Cambria",serif')
|
127
123
|
m = node.attr("monospace-font") || '"Courier New",monospace'
|
128
124
|
"$bodyfont: #{b};\n$headerfont: #{h};\n$monospacefont: #{m};\n"
|
129
125
|
end
|
@@ -154,8 +150,7 @@ module Asciidoctor
|
|
154
150
|
end
|
155
151
|
|
156
152
|
def makexml1(node)
|
157
|
-
result = ["<?xml version='1.0' encoding='UTF-8'?>",
|
158
|
-
"<#{xml_root_tag} type='semantic' version='#{version}'>"]
|
153
|
+
result = ["<?xml version='1.0' encoding='UTF-8'?>", "<#{xml_root_tag} type='semantic' version='#{version}'>"]
|
159
154
|
result << noko { |ixml| front node, ixml }
|
160
155
|
result << noko { |ixml| middle node, ixml }
|
161
156
|
result << "</#{xml_root_tag}>"
|
@@ -192,16 +187,14 @@ module Asciidoctor
|
|
192
187
|
|
193
188
|
def term_source_attrs(seen_xref)
|
194
189
|
{ bibitemid: seen_xref.children[0]["target"],
|
195
|
-
format: seen_xref.children[0]["format"],
|
196
|
-
type: "inline" }
|
190
|
+
format: seen_xref.children[0]["format"], type: "inline" }
|
197
191
|
end
|
198
192
|
|
199
193
|
def add_term_source(xml_t, seen_xref, m)
|
200
194
|
if seen_xref.children[0].name == "concept"
|
201
195
|
xml_t.origin { |o| o << seen_xref.children[0].to_xml }
|
202
196
|
else
|
203
|
-
xml_t.origin seen_xref.children[0].content,
|
204
|
-
**attr_code(term_source_attrs(seen_xref))
|
197
|
+
xml_t.origin seen_xref.children[0].content, **attr_code(term_source_attrs(seen_xref))
|
205
198
|
end
|
206
199
|
m[:text] && xml_t.modification do |mod|
|
207
200
|
mod.p { |p| p << m[:text].sub(/^\s+/, "") }
|
@@ -219,8 +212,7 @@ module Asciidoctor
|
|
219
212
|
|
220
213
|
def extract_termsource_refs(text, node)
|
221
214
|
matched = TERM_REFERENCE_RE.match text
|
222
|
-
matched.nil? and
|
223
|
-
@log.add("AsciiDoc Input", node, "term reference not in expected format: #{text}")
|
215
|
+
matched.nil? and @log.add("AsciiDoc Input", node, "term reference not in expected format: #{text}")
|
224
216
|
matched
|
225
217
|
end
|
226
218
|
|
@@ -596,6 +596,7 @@
|
|
596
596
|
<ref name="bookmark"/>
|
597
597
|
<ref name="image"/>
|
598
598
|
<ref name="index"/>
|
599
|
+
<ref name="index-xref"/>
|
599
600
|
</choice>
|
600
601
|
</define>
|
601
602
|
<define name="PureTextElement">
|
@@ -728,15 +729,61 @@
|
|
728
729
|
</define>
|
729
730
|
<define name="index">
|
730
731
|
<element name="index">
|
731
|
-
<attribute name="
|
732
|
+
<attribute name="to">
|
733
|
+
<data type="IDREF"/>
|
734
|
+
</attribute>
|
735
|
+
<element name="primary">
|
736
|
+
<oneOrMore>
|
737
|
+
<ref name="PureTextElement"/>
|
738
|
+
</oneOrMore>
|
739
|
+
</element>
|
732
740
|
<optional>
|
733
|
-
<
|
741
|
+
<element name="secondary">
|
742
|
+
<oneOrMore>
|
743
|
+
<ref name="PureTextElement"/>
|
744
|
+
</oneOrMore>
|
745
|
+
</element>
|
734
746
|
</optional>
|
735
747
|
<optional>
|
736
|
-
<
|
748
|
+
<element name="tertiary">
|
749
|
+
<oneOrMore>
|
750
|
+
<ref name="PureTextElement"/>
|
751
|
+
</oneOrMore>
|
752
|
+
</element>
|
737
753
|
</optional>
|
738
754
|
</element>
|
739
755
|
</define>
|
756
|
+
<define name="index-xref">
|
757
|
+
<element name="index-xref">
|
758
|
+
<attribute name="also">
|
759
|
+
<data type="boolean"/>
|
760
|
+
</attribute>
|
761
|
+
<element name="primary">
|
762
|
+
<oneOrMore>
|
763
|
+
<ref name="PureTextElement"/>
|
764
|
+
</oneOrMore>
|
765
|
+
</element>
|
766
|
+
<optional>
|
767
|
+
<element name="secondary">
|
768
|
+
<oneOrMore>
|
769
|
+
<ref name="PureTextElement"/>
|
770
|
+
</oneOrMore>
|
771
|
+
</element>
|
772
|
+
</optional>
|
773
|
+
<optional>
|
774
|
+
<element name="tertiary">
|
775
|
+
<oneOrMore>
|
776
|
+
<ref name="PureTextElement"/>
|
777
|
+
</oneOrMore>
|
778
|
+
</element>
|
779
|
+
</optional>
|
780
|
+
<element name="target">
|
781
|
+
<oneOrMore>
|
782
|
+
<ref name="PureTextElement"/>
|
783
|
+
</oneOrMore>
|
784
|
+
</element>
|
785
|
+
</element>
|
786
|
+
</define>
|
740
787
|
<!-- bare ID element, used for referencing arbitrary spans of text -->
|
741
788
|
<define name="bookmark">
|
742
789
|
<element name="bookmark">
|
@@ -176,7 +176,7 @@ module Asciidoctor
|
|
176
176
|
|
177
177
|
# presuppose multichar mi upright, singlechar mi MathML default italic
|
178
178
|
def mathml_italicise(x)
|
179
|
-
x.xpath(".//m:mi", "m" => MATHML_NS).each do |i|
|
179
|
+
x.xpath(".//m:mi[not(ancestor::*[@mathvariant])]", "m" => MATHML_NS).each do |i|
|
180
180
|
char = HTMLEntities.new.decode(i.text)
|
181
181
|
i["mathvariant"] = "normal" if mi_italicise?(char)
|
182
182
|
end
|
@@ -133,14 +133,6 @@ module Asciidoctor
|
|
133
133
|
end
|
134
134
|
|
135
135
|
# examples containing only figures become subfigures of figures
|
136
|
-
def subfigure_cleanup(xmldoc)
|
137
|
-
nodes = xmldoc.xpath("//example/figure")
|
138
|
-
while !nodes.empty?
|
139
|
-
nodes[0].parent.name = "figure"
|
140
|
-
nodes = xmldoc.xpath("//example/figure")
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
136
|
def subfigure_cleanup(xmldoc)
|
145
137
|
xmldoc.xpath("//example[figure]").each do |e|
|
146
138
|
next unless e.elements.map { |m| m.name }.
|
@@ -3,14 +3,12 @@ module Asciidoctor
|
|
3
3
|
module Cleanup
|
4
4
|
def external_terms_boilerplate(sources)
|
5
5
|
@i18n.l10n(
|
6
|
-
@i18n.external_terms_boilerplate.gsub(/%/, sources || "???"),
|
7
|
-
@lang, @script)
|
6
|
+
@i18n.external_terms_boilerplate.gsub(/%/, sources || "???"), @lang, @script)
|
8
7
|
end
|
9
8
|
|
10
9
|
def internal_external_terms_boilerplate(sources)
|
11
10
|
@i18n.l10n(
|
12
|
-
@i18n.internal_external_terms_boilerplate.gsub(/%/, sources || "??"),
|
13
|
-
@lang, @script)
|
11
|
+
@i18n.internal_external_terms_boilerplate.gsub(/%/, sources || "??"), @lang, @script)
|
14
12
|
end
|
15
13
|
|
16
14
|
def term_defs_boilerplate(div, source, term, preface, isodoc)
|
@@ -19,11 +17,9 @@ module Asciidoctor
|
|
19
17
|
@anchors[s["bibitemid"]] or
|
20
18
|
@log.add("Crossreferences", nil, "term source #{s['bibitemid']} not referenced")
|
21
19
|
end
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
div.next = term_defs_boilerplate_cont(source, term, isodoc)
|
26
|
-
end
|
20
|
+
a = (source.empty? && term.nil?) ? @i18n.no_terms_boilerplate :
|
21
|
+
term_defs_boilerplate_cont(source, term, isodoc)
|
22
|
+
a and div.next = a
|
27
23
|
end
|
28
24
|
|
29
25
|
def term_defs_boilerplate_cont(src, term, isodoc)
|
@@ -38,15 +34,14 @@ module Asciidoctor
|
|
38
34
|
end
|
39
35
|
|
40
36
|
def norm_ref_preface(f)
|
41
|
-
|
42
|
-
|
37
|
+
refs = f.elements.select do |e|
|
38
|
+
["reference", "bibitem"].include? e.name
|
39
|
+
end
|
40
|
+
f.at("./title").next =
|
41
|
+
"<p>#{(refs.empty? ? @i18n.norm_empty_pref : @i18n.norm_with_refs_pref)}</p>"
|
43
42
|
end
|
44
|
-
f.at("./title").next =
|
45
|
-
"<p>#{(refs.empty? ? @i18n.norm_empty_pref : @i18n.norm_with_refs_pref)}</p>"
|
46
|
-
end
|
47
43
|
|
48
|
-
TERM_CLAUSE = "//sections/terms | "
|
49
|
-
"//sections/clause[descendant::terms]".freeze
|
44
|
+
TERM_CLAUSE = "//sections/terms | //sections/clause[descendant::terms]".freeze
|
50
45
|
|
51
46
|
NORM_REF = "//bibliography/references[@normative = 'true']".freeze
|
52
47
|
|
@@ -59,15 +54,33 @@ module Asciidoctor
|
|
59
54
|
@isodoc
|
60
55
|
end
|
61
56
|
|
57
|
+
def termdef_boilerplate_cleanup(xmldoc)
|
58
|
+
#termdef_remove_initial_paras(xmldoc)
|
59
|
+
end
|
60
|
+
|
61
|
+
def termdef_remove_initial_paras(xmldoc)
|
62
|
+
xmldoc.xpath("//terms/p | //terms/ul").each(&:remove)
|
63
|
+
end
|
64
|
+
|
65
|
+
def termdef_unwrap_boilerplate_clauses(xmldoc)
|
66
|
+
xmldoc.xpath(self.class::TERM_CLAUSE).each do |f|
|
67
|
+
f.xpath(".//clause[@type = 'boilerplate']").each do |c|
|
68
|
+
c&.at("./title")&.remove
|
69
|
+
c.replace(c.children)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
62
74
|
def boilerplate_cleanup(xmldoc)
|
63
75
|
isodoc = boilerplate_isodoc(xmldoc)
|
76
|
+
termdef_boilerplate_cleanup(xmldoc)
|
64
77
|
xmldoc.xpath(self.class::TERM_CLAUSE).each do |f|
|
65
|
-
|
66
|
-
|
78
|
+
next if f.at("./clause[@type = 'boilerplate']")
|
79
|
+
term_defs_boilerplate(f.at("./title"), xmldoc.xpath(".//termdocsource"),
|
67
80
|
f.at(".//term"), f.at(".//p"), isodoc)
|
68
81
|
end
|
69
|
-
|
70
|
-
|
82
|
+
termdef_unwrap_boilerplate_clauses(xmldoc)
|
83
|
+
f = xmldoc.at(self.class::NORM_REF) and norm_ref_preface(f)
|
71
84
|
initial_boilerplate(xmldoc, isodoc)
|
72
85
|
end
|
73
86
|
|
@@ -125,7 +125,7 @@ module Asciidoctor
|
|
125
125
|
def concept_termbase_cleanup(x)
|
126
126
|
text = x&.children&.first&.remove&.text
|
127
127
|
termbase, key = x["key"].split(/:/, 2)
|
128
|
-
x.add_child(%(<termref base="#{termbase}" target="#{key}">) +
|
128
|
+
x.add_child(%(<termref base="#{termbase}" target="#{key}">) +
|
129
129
|
"#{text}</termref>")
|
130
130
|
end
|
131
131
|
|
@@ -155,6 +155,8 @@ module Asciidoctor
|
|
155
155
|
ret
|
156
156
|
end
|
157
157
|
|
158
|
+
module_function :to_ncname
|
159
|
+
|
158
160
|
def to_xreftarget(s)
|
159
161
|
return to_ncname(s) unless /^[^#]+#.+$/.match(s)
|
160
162
|
/^(?<pref>[^#]+)#(?<suff>.+)$/ =~ s
|
@@ -16,8 +16,7 @@ module Asciidoctor
|
|
16
16
|
insert = refs&.at("./bibitem")&.previous_element
|
17
17
|
refs.xpath("./bibitem").each { |b| b.remove }
|
18
18
|
bib.reverse.each do |b|
|
19
|
-
insert and insert.next = b.to_xml or
|
20
|
-
refs.children.first.add_previous_sibling b.to_xml
|
19
|
+
insert and insert.next = b.to_xml or refs.children.first.add_previous_sibling b.to_xml
|
21
20
|
end
|
22
21
|
extract_notes_from_biblio(refs)
|
23
22
|
refs.xpath("./references").each { |r| biblio_reorder1(r) }
|
@@ -49,12 +48,14 @@ module Asciidoctor
|
|
49
48
|
# consecutively, but that standards codes are preserved as is:
|
50
49
|
# only numeric references are renumbered
|
51
50
|
def biblio_renumber(xmldoc)
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
51
|
+
i = 0
|
52
|
+
xmldoc.xpath("//bibliography//references | //clause//references | //annex//references").each do |r|
|
53
|
+
r.xpath("./bibitem").each do |b|
|
54
|
+
i += 1
|
55
|
+
next unless docid = b.at("./docidentifier[@type = 'metanorma']")
|
56
|
+
next unless /^\[\d+\]$/.match(docid.text)
|
57
|
+
docid.children = "[#{i}]"
|
58
|
+
end
|
58
59
|
end
|
59
60
|
end
|
60
61
|
|
@@ -123,8 +124,7 @@ module Asciidoctor
|
|
123
124
|
xmldoc.xpath("//clause[@bibitem = 'true']").each do |c|
|
124
125
|
bib = dl_bib_extract(c) or next
|
125
126
|
validate_ref_dl(bib, c)
|
126
|
-
bibitemxml = RelatonBib::BibliographicItem.new(
|
127
|
-
RelatonBib::HashConverter::hash_to_bib(bib)).to_xml or next
|
127
|
+
bibitemxml = RelatonBib::BibliographicItem.new(RelatonBib::HashConverter::hash_to_bib(bib)).to_xml or next
|
128
128
|
bibitem = Nokogiri::XML(bibitemxml)
|
129
129
|
bibitem.root["id"] = c["id"] if c["id"] && !/^_/.match(c["id"])
|
130
130
|
c.replace(bibitem.root)
|
@@ -135,14 +135,11 @@ module Asciidoctor
|
|
135
135
|
id = bib["id"]
|
136
136
|
id ||= c["id"] unless /^_/.match(c["id"]) # do not accept implicit id
|
137
137
|
unless id
|
138
|
-
@log.add("Anchors", c, "The following reference is missing "
|
139
|
-
"an anchor:\n" + c.to_xml)
|
138
|
+
@log.add("Anchors", c, "The following reference is missing an anchor:\n" + c.to_xml)
|
140
139
|
return
|
141
140
|
end
|
142
|
-
bib["title"] or @log.add("Bibliography", c, "Reference #{id} "
|
143
|
-
|
144
|
-
bib["docid"] or @log.add("Bibliography", c, "Reference #{id} "\
|
145
|
-
"is missing a document identifier (docid)")
|
141
|
+
bib["title"] or @log.add("Bibliography", c, "Reference #{id} is missing a title")
|
142
|
+
bib["docid"] or @log.add("Bibliography", c, "Reference #{id} is missing a document identifier (docid)")
|
146
143
|
end
|
147
144
|
|
148
145
|
def extract_from_p(tag, bib, key)
|
@@ -173,8 +170,7 @@ module Asciidoctor
|
|
173
170
|
return nil if dtd.children.empty?
|
174
171
|
dtd.at("./dl") and return dl_bib_extract(dtd)
|
175
172
|
elems = dtd.remove.elements
|
176
|
-
return p_unwrap(dtd) unless elems.size == 1 &&
|
177
|
-
%w(ol ul).include?(elems[0].name)
|
173
|
+
return p_unwrap(dtd) unless elems.size == 1 && %w(ol ul).include?(elems[0].name)
|
178
174
|
ret = []
|
179
175
|
elems[0].xpath("./li").each do |li|
|
180
176
|
ret << p_unwrap(li)
|
@@ -192,8 +188,7 @@ module Asciidoctor
|
|
192
188
|
bib = {}
|
193
189
|
key = ""
|
194
190
|
dl.xpath("./dt | ./dd").each do |dtd|
|
195
|
-
dtd.name == "dt" and key = dtd.text.sub(/:+$/, "") or
|
196
|
-
add_to_hash(bib, key, dd_bib_extract(dtd))
|
191
|
+
dtd.name == "dt" and key = dtd.text.sub(/:+$/, "") or add_to_hash(bib, key, dd_bib_extract(dtd))
|
197
192
|
end
|
198
193
|
c.xpath("./clause").each do |c1|
|
199
194
|
key = c1&.at("./title")&.text&.downcase&.strip
|
@@ -221,8 +216,7 @@ module Asciidoctor
|
|
221
216
|
File.file?(file) or return nil
|
222
217
|
xml = Nokogiri::XML(File.read(file, encoding: "utf-8"))
|
223
218
|
ret = xml.at("//*[local-name() = 'bibdata']") or return nil
|
224
|
-
ret = Nokogiri::XML(ret.to_xml.sub(
|
225
|
-
%r{(<bibdata[^>]*?) xmlns=("[^"]+"|'[^']+')}, "\\1")).root
|
219
|
+
ret = Nokogiri::XML(ret.to_xml.sub(%r{(<bibdata[^>]*?) xmlns=("[^"]+"|'[^']+')}, "\\1")).root
|
226
220
|
ret.name = "bibitem"
|
227
221
|
ins = ret.at("./*[local-name() = 'docidentifier']") or return nil
|
228
222
|
ins.previous = %{<uri type="citation">#{uri}</uri>}
|
@@ -232,8 +226,7 @@ module Asciidoctor
|
|
232
226
|
|
233
227
|
# if citation uri points to local file, get bibitem from it
|
234
228
|
def fetch_local_bibitem(xmldoc)
|
235
|
-
xmldoc.xpath("//bibitem[formattedref]"
|
236
|
-
"[uri[@type = 'citation']]").each do |b|
|
229
|
+
xmldoc.xpath("//bibitem[formattedref][uri[@type = 'citation']]").each do |b|
|
237
230
|
uri = b&.at("./uri[@type = 'citation']")&.text
|
238
231
|
bibitem = read_local_bibitem(uri) or next
|
239
232
|
bibitem["id"] = b["id"]
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require_relative "term_lookup_cleanup"
|
2
|
+
|
1
3
|
module Asciidoctor
|
2
4
|
module Standoc
|
3
5
|
module Cleanup
|
@@ -45,10 +47,6 @@ module Asciidoctor
|
|
45
47
|
end
|
46
48
|
end
|
47
49
|
|
48
|
-
def termdef_boilerplate_cleanup(xmldoc)
|
49
|
-
xmldoc.xpath("//terms/p | //terms/ul").each(&:remove)
|
50
|
-
end
|
51
|
-
|
52
50
|
def termdef_subclause_cleanup(xmldoc)
|
53
51
|
xmldoc.xpath("//terms[terms]").each { |t| t.name = "clause" }
|
54
52
|
end
|
@@ -81,11 +79,12 @@ module Asciidoctor
|
|
81
79
|
x.name = "note"
|
82
80
|
end
|
83
81
|
xmldoc.xpath("//termexample[not(ancestor::term)]").each do |x|
|
84
|
-
x.name = "
|
82
|
+
x.name = "example"
|
85
83
|
end
|
86
84
|
end
|
87
85
|
|
88
86
|
def termdef_cleanup(xmldoc)
|
87
|
+
Asciidoctor::Standoc::TermLookupCleanup.new(xmldoc, @log).call
|
89
88
|
termdef_from_termbase(xmldoc)
|
90
89
|
termdef_unnest_cleanup(xmldoc)
|
91
90
|
termdef_stem_cleanup(xmldoc)
|
@@ -93,7 +92,6 @@ module Asciidoctor
|
|
93
92
|
termdefinition_cleanup(xmldoc)
|
94
93
|
termdomain1_cleanup(xmldoc)
|
95
94
|
termnote_example_cleanup(xmldoc)
|
96
|
-
termdef_boilerplate_cleanup(xmldoc)
|
97
95
|
termdef_subclause_cleanup(xmldoc)
|
98
96
|
term_children_cleanup(xmldoc)
|
99
97
|
termdocsource_cleanup(xmldoc)
|