metanorma-iso 1.3.24 → 1.4.1
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/macos.yml +8 -1
- data/.github/workflows/ubuntu.yml +14 -3
- data/.github/workflows/windows.yml +8 -1
- data/lib/asciidoctor/iso/base.rb +21 -13
- data/lib/asciidoctor/iso/biblio.rng +36 -6
- data/lib/asciidoctor/iso/cleanup.rb +10 -1
- data/lib/asciidoctor/iso/front.rb +16 -110
- data/lib/asciidoctor/iso/front_id.rb +196 -0
- data/lib/asciidoctor/iso/isodoc.rng +444 -1
- data/lib/asciidoctor/iso/isostandard-amd.rng +98 -0
- data/lib/asciidoctor/iso/isostandard.rng +12 -1
- data/lib/asciidoctor/iso/reqt.rng +23 -0
- data/lib/asciidoctor/iso/section.rb +12 -0
- data/lib/asciidoctor/iso/term_lookup_cleanup.rb +7 -10
- data/lib/asciidoctor/iso/validate.rb +40 -23
- data/lib/asciidoctor/iso/validate_requirements.rb +1 -1
- data/lib/asciidoctor/iso/validate_style.rb +6 -5
- data/lib/asciidoctor/iso/validate_title.rb +1 -1
- data/lib/isodoc/iso/base_convert.rb +68 -87
- data/lib/isodoc/iso/html/header.html +5 -1
- data/lib/isodoc/iso/html/html_iso_titlepage.html +25 -16
- data/lib/isodoc/iso/html/isodoc.scss +25 -0
- data/lib/isodoc/iso/html/scripts.html +18 -0
- data/lib/isodoc/iso/html/style-human.scss +23 -0
- data/lib/isodoc/iso/html/style-iso.scss +18 -0
- data/lib/isodoc/iso/html/word_iso_intro.html +4 -0
- data/lib/isodoc/iso/html/word_iso_titlepage.html +21 -0
- data/lib/isodoc/iso/html/wordstyle.scss +45 -4
- data/lib/isodoc/iso/iso.amendment.xsl +5082 -0
- data/lib/isodoc/iso/iso.international-standard.xsl +1226 -530
- data/lib/isodoc/iso/metadata.rb +67 -23
- data/lib/isodoc/iso/pdf_convert.rb +5 -11
- data/lib/isodoc/iso/presentation_xml_convert.rb +13 -0
- data/lib/isodoc/iso/sections.rb +66 -0
- data/lib/isodoc/iso/sts_convert.rb +31 -0
- data/lib/isodoc/iso/xref.rb +111 -0
- data/lib/metanorma-iso.rb +2 -0
- data/lib/metanorma/iso/processor.rb +20 -9
- data/lib/metanorma/iso/version.rb +1 -1
- data/metanorma-iso.gemspec +5 -2
- data/spec/asciidoctor-iso/amd_spec.rb +726 -0
- data/spec/asciidoctor-iso/base_spec.rb +24 -20
- data/spec/asciidoctor-iso/cleanup_spec.rb +2 -2
- data/spec/asciidoctor-iso/macros_spec.rb +33 -17
- data/spec/asciidoctor-iso/refs_spec.rb +1 -1
- data/spec/asciidoctor-iso/table_spec.rb +1 -1
- data/spec/isodoc/amd_spec.rb +652 -0
- data/spec/isodoc/blocks_spec.rb +112 -27
- data/spec/isodoc/inline_spec.rb +2 -2
- data/spec/isodoc/metadata_spec.rb +88 -4
- data/spec/isodoc/postproc_spec.rb +11 -11
- data/spec/isodoc/ref_spec.rb +7 -7
- data/spec/isodoc/section_spec.rb +28 -1
- data/spec/isodoc/table_spec.rb +29 -29
- data/spec/isodoc/terms_spec.rb +4 -4
- data/spec/isodoc/xref_spec.rb +32 -26
- data/spec/metanorma/processor_spec.rb +2 -2
- data/spec/spec_helper.rb +11 -0
- metadata +61 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b96ba72711abf2b94b4b63a7431c979e2436809689aee14aa1dbc3bf274e9833
|
4
|
+
data.tar.gz: 52d899afc5b1949ba84a9663db914faa4f89aee27e3c365328d9d51925c3a218
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a43742cf9c3f5ad00f1f131b351f9cacf417797a985ad10b0a23a4ce059cd53a6fdcbaa07e9e6d7609681878ad686a19d0e3c114f224d7927b5735c44594426
|
7
|
+
data.tar.gz: 74b190a8468053ce3e5bc25e477a5bdc48abedc12436e3a971b6fe77e5259ffd6e62c5789e41e18c18a89ab2602b2b188c5f1fdbe747bdcab40e95c938dd681d
|
data/.github/workflows/macos.yml
CHANGED
@@ -6,22 +6,29 @@ on:
|
|
6
6
|
push:
|
7
7
|
branches: [ master ]
|
8
8
|
pull_request:
|
9
|
+
paths-ignore:
|
10
|
+
- .github/workflows/ubuntu.yml
|
11
|
+
- .github/workflows/windows.yml
|
9
12
|
|
10
13
|
jobs:
|
11
14
|
test-macos:
|
12
15
|
name: Test on Ruby ${{ matrix.ruby }} macOS
|
13
16
|
runs-on: macos-latest
|
17
|
+
continue-on-error: ${{ matrix.experimental }}
|
14
18
|
strategy:
|
15
19
|
fail-fast: false
|
16
20
|
matrix:
|
17
21
|
ruby: [ '2.6', '2.5', '2.4' ]
|
22
|
+
experimental: [false]
|
23
|
+
include:
|
24
|
+
- ruby: '2.7'
|
25
|
+
experimental: true
|
18
26
|
steps:
|
19
27
|
- uses: actions/checkout@master
|
20
28
|
- name: Use Ruby
|
21
29
|
uses: actions/setup-ruby@v1
|
22
30
|
with:
|
23
31
|
ruby-version: ${{ matrix.ruby }}
|
24
|
-
architecture: 'x64'
|
25
32
|
- name: Update gems
|
26
33
|
run: |
|
27
34
|
sudo gem install bundler --force
|
@@ -6,29 +6,40 @@ on:
|
|
6
6
|
push:
|
7
7
|
branches: [ master ]
|
8
8
|
pull_request:
|
9
|
+
paths-ignore:
|
10
|
+
- .github/workflows/macos.yml
|
11
|
+
- .github/workflows/windows.yml
|
9
12
|
|
10
13
|
jobs:
|
11
14
|
test-linux:
|
12
15
|
name: Test on Ruby ${{ matrix.ruby }} Ubuntu
|
13
16
|
runs-on: ubuntu-latest
|
17
|
+
continue-on-error: ${{ matrix.experimental }}
|
14
18
|
strategy:
|
15
19
|
fail-fast: false
|
16
20
|
matrix:
|
17
21
|
ruby: [ '2.6', '2.5', '2.4' ]
|
22
|
+
experimental: [false]
|
23
|
+
include:
|
24
|
+
- ruby: '2.7'
|
25
|
+
experimental: true
|
18
26
|
steps:
|
19
27
|
- uses: actions/checkout@master
|
20
28
|
- name: Use Ruby
|
21
29
|
uses: actions/setup-ruby@v1
|
22
30
|
with:
|
23
31
|
ruby-version: ${{ matrix.ruby }}
|
24
|
-
architecture: 'x64'
|
25
32
|
- name: Update gems
|
26
33
|
run: |
|
27
34
|
gem install bundler
|
28
35
|
bundle install --jobs 4 --retry 3
|
29
36
|
- name: Install PlantUML
|
30
|
-
|
31
|
-
|
37
|
+
uses: nick-invision/retry@v1
|
38
|
+
with:
|
39
|
+
polling_interval_seconds: 5
|
40
|
+
timeout_minutes: 5
|
41
|
+
max_attempts: 3
|
42
|
+
command: sudo bash -c "curl -L https://github.com/metanorma/plantuml-install/raw/master/ubuntu.sh | bash"
|
32
43
|
- name: Run specs
|
33
44
|
run: |
|
34
45
|
bundle exec rake
|
@@ -6,22 +6,29 @@ on:
|
|
6
6
|
push:
|
7
7
|
branches: [ master ]
|
8
8
|
pull_request:
|
9
|
+
paths-ignore:
|
10
|
+
- .github/workflows/macos.yml
|
11
|
+
- .github/workflows/ubuntu.yml
|
9
12
|
|
10
13
|
jobs:
|
11
14
|
test-windows:
|
12
15
|
name: Test on Ruby ${{ matrix.ruby }} Windows
|
13
16
|
runs-on: windows-latest
|
17
|
+
continue-on-error: ${{ matrix.experimental }}
|
14
18
|
strategy:
|
15
19
|
fail-fast: false
|
16
20
|
matrix:
|
17
21
|
ruby: [ '2.6', '2.5', '2.4' ]
|
22
|
+
experimental: [false]
|
23
|
+
include:
|
24
|
+
- ruby: '2.7'
|
25
|
+
experimental: true
|
18
26
|
steps:
|
19
27
|
- uses: actions/checkout@master
|
20
28
|
- name: Use Ruby
|
21
29
|
uses: actions/setup-ruby@v1
|
22
30
|
with:
|
23
31
|
ruby-version: ${{ matrix.ruby }}
|
24
|
-
architecture: 'x64'
|
25
32
|
- name: Update gems
|
26
33
|
shell: pwsh
|
27
34
|
run: |
|
data/lib/asciidoctor/iso/base.rb
CHANGED
@@ -36,20 +36,28 @@ module Asciidoctor
|
|
36
36
|
IsoDoc::Iso::PdfConvert.new(doc_extract_attributes(node))
|
37
37
|
end
|
38
38
|
|
39
|
-
def
|
40
|
-
|
41
|
-
|
42
|
-
|
39
|
+
def sts_converter(node)
|
40
|
+
return nil if node.attr("no-pdf")
|
41
|
+
IsoDoc::Iso::StsConvert.new(html_extract_attributes(node))
|
42
|
+
end
|
43
|
+
|
44
|
+
def presentation_xml_converter(node)
|
45
|
+
IsoDoc::Iso::PresentationXMLConvert.new(html_extract_attributes(node))
|
46
|
+
end
|
47
|
+
|
48
|
+
def init(node)
|
49
|
+
super
|
50
|
+
@amd = %w(amendment technical-corrigendum).include? node.attr("doctype")
|
51
|
+
end
|
52
|
+
|
53
|
+
def outputs(node, ret)
|
43
54
|
File.open(@filename + ".xml", "w:UTF-8") { |f| f.write(ret) }
|
44
|
-
|
45
|
-
|
46
|
-
html_converter(node).convert(@filename + ".xml")
|
47
|
-
doc_converter(node).convert(@filename + ".xml")
|
48
|
-
pdf_converter(node)&.convert(@filename + ".xml")
|
49
|
-
|
50
|
-
@log.write(@localdir + @filename + ".err") unless @novalid
|
51
|
-
@files_to_delete.each { |f| FileUtils.rm f }
|
52
|
-
ret
|
55
|
+
presentation_xml_converter(node).convert(@filename + ".xml")
|
56
|
+
html_converter_alt(node).convert(@filename + ".presentation.xml", nil, false, "#{@filename}_alt.html")
|
57
|
+
html_converter(node).convert(@filename + ".presentation.xml", nil, false, "#{@filename}.html")
|
58
|
+
doc_converter(node).convert(@filename + ".presentation.xml", nil, false, "#{@filename}.doc")
|
59
|
+
pdf_converter(node)&.convert(@filename + ".presentation.xml", nil, false, "#{@filename}.pdf")
|
60
|
+
#sts_converter(node)&.convert(@filename + ".xml")
|
53
61
|
end
|
54
62
|
|
55
63
|
def load_yaml(lang, script)
|
@@ -88,7 +88,7 @@
|
|
88
88
|
<text/>
|
89
89
|
</element>
|
90
90
|
</define>
|
91
|
-
<define name="
|
91
|
+
<define name="LocalizedString1">
|
92
92
|
<optional>
|
93
93
|
<!-- multiple languages and scripts possible: comma delimit them if so -->
|
94
94
|
<attribute name="language"/>
|
@@ -98,6 +98,16 @@
|
|
98
98
|
</optional>
|
99
99
|
<text/>
|
100
100
|
</define>
|
101
|
+
<define name="LocalizedString">
|
102
|
+
<choice>
|
103
|
+
<ref name="LocalizedString1"/>
|
104
|
+
<oneOrMore>
|
105
|
+
<element name="variant">
|
106
|
+
<ref name="LocalizedString1"/>
|
107
|
+
</element>
|
108
|
+
</oneOrMore>
|
109
|
+
</choice>
|
110
|
+
</define>
|
101
111
|
<!--
|
102
112
|
Unlike UML, change type to format: type is overloaded
|
103
113
|
Would be need if plain were default value and could omit the attribute
|
@@ -121,7 +131,7 @@
|
|
121
131
|
</optional>
|
122
132
|
<ref name="LocalizedStringOrXsAny"/>
|
123
133
|
</define>
|
124
|
-
<define name="
|
134
|
+
<define name="LocalizedStringOrXsAny1">
|
125
135
|
<optional>
|
126
136
|
<!-- multiple languages and scripts possible: comma delimit them if so -->
|
127
137
|
<attribute name="language"/>
|
@@ -136,6 +146,16 @@
|
|
136
146
|
</choice>
|
137
147
|
</oneOrMore>
|
138
148
|
</define>
|
149
|
+
<define name="LocalizedStringOrXsAny">
|
150
|
+
<choice>
|
151
|
+
<ref name="LocalizedStringOrXsAny1"/>
|
152
|
+
<oneOrMore>
|
153
|
+
<element name="variant">
|
154
|
+
<ref name="LocalizedStringOrXsAny1"/>
|
155
|
+
</element>
|
156
|
+
</oneOrMore>
|
157
|
+
</choice>
|
158
|
+
</define>
|
139
159
|
<define name="contributor">
|
140
160
|
<element name="contributor">
|
141
161
|
<zeroOrMore>
|
@@ -512,7 +532,7 @@
|
|
512
532
|
</define>
|
513
533
|
<define name="LocalityType">
|
514
534
|
<data type="string">
|
515
|
-
<param name="pattern">section|clause|part|paragraph|chapter|page|whole|table|annex|figure|note|list|example|volume|issue|time|locality:[a-zA-Z0-9_]+</param>
|
535
|
+
<param name="pattern">section|clause|part|paragraph|chapter|page|whole|table|annex|figure|note|list|example|volume|issue|time|anchor|locality:[a-zA-Z0-9_]+</param>
|
516
536
|
</data>
|
517
537
|
</define>
|
518
538
|
<define name="referenceFrom">
|
@@ -641,9 +661,9 @@
|
|
641
661
|
<optional>
|
642
662
|
<ref name="status"/>
|
643
663
|
</optional>
|
644
|
-
<
|
664
|
+
<zeroOrMore>
|
645
665
|
<ref name="copyright"/>
|
646
|
-
</
|
666
|
+
</zeroOrMore>
|
647
667
|
<zeroOrMore>
|
648
668
|
<ref name="docrelation"/>
|
649
669
|
</zeroOrMore>
|
@@ -1001,7 +1021,17 @@
|
|
1001
1021
|
<optional>
|
1002
1022
|
<ref name="to"/>
|
1003
1023
|
</optional>
|
1004
|
-
<
|
1024
|
+
<oneOrMore>
|
1025
|
+
<ref name="owner"/>
|
1026
|
+
</oneOrMore>
|
1027
|
+
<optional>
|
1028
|
+
<ref name="copyright_scope"/>
|
1029
|
+
</optional>
|
1030
|
+
</element>
|
1031
|
+
</define>
|
1032
|
+
<define name="copyright_scope">
|
1033
|
+
<element name="scope">
|
1034
|
+
<text/>
|
1005
1035
|
</element>
|
1006
1036
|
</define>
|
1007
1037
|
<define name="from">
|
@@ -36,6 +36,7 @@ module Asciidoctor
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def id_prefix(prefix, id)
|
39
|
+
return id.text if @amd # we're just inheriting the prefixes from parent doc
|
39
40
|
prefix.join("/") + ( id.text.match(%{^/}) ? "" : " " ) + id.text
|
40
41
|
end
|
41
42
|
|
@@ -52,7 +53,7 @@ module Asciidoctor
|
|
52
53
|
# ISO as a prefix goes first
|
53
54
|
def docidentifier_cleanup(xmldoc)
|
54
55
|
prefix = get_id_prefix(xmldoc)
|
55
|
-
id = xmldoc.at("//bibdata/docidentifier[@type = '
|
56
|
+
id = xmldoc.at("//bibdata/docidentifier[@type = 'ISO']") or return
|
56
57
|
id.content = id_prefix(prefix, id)
|
57
58
|
id = xmldoc.at("//bibdata/ext/structuredidentifier/project-number") and
|
58
59
|
id.content = id_prefix(prefix, id)
|
@@ -116,6 +117,14 @@ module Asciidoctor
|
|
116
117
|
"#{num.nil? ? abbrid : sprintf("%09d", num.to_i)} :: "\
|
117
118
|
"#{partid} :: #{id&.text} :: #{title}"
|
118
119
|
end
|
120
|
+
|
121
|
+
def sections_cleanup(x)
|
122
|
+
super
|
123
|
+
return unless @amd
|
124
|
+
x.xpath("//*[@inline-header]").each do |h|
|
125
|
+
h.delete('inline-header')
|
126
|
+
end
|
127
|
+
end
|
119
128
|
end
|
120
129
|
end
|
121
130
|
end
|
@@ -5,113 +5,18 @@ require "json"
|
|
5
5
|
require "pathname"
|
6
6
|
require "open-uri"
|
7
7
|
require "pp"
|
8
|
+
require_relative "front_id"
|
8
9
|
|
9
10
|
module Asciidoctor
|
10
11
|
module ISO
|
11
12
|
class Converter < Standoc::Converter
|
12
|
-
STAGE_ABBRS = {
|
13
|
-
"00": "PWI",
|
14
|
-
"10": "NWIP",
|
15
|
-
"20": "WD",
|
16
|
-
"30": "CD",
|
17
|
-
"40": "DIS",
|
18
|
-
"50": "FDIS",
|
19
|
-
"60": "IS",
|
20
|
-
"90": "(Review)",
|
21
|
-
"95": "(Withdrawal)",
|
22
|
-
}.freeze
|
23
|
-
|
24
|
-
STAGE_NAMES = {
|
25
|
-
"00": "Preliminary work item",
|
26
|
-
"10": "New work item proposal",
|
27
|
-
"20": "Working draft",
|
28
|
-
"30": "Committee draft",
|
29
|
-
"40": "Draft international standard",
|
30
|
-
"50": "Final draft international standard",
|
31
|
-
"60": "International standard",
|
32
|
-
"90": "Review",
|
33
|
-
"95": "Withdrawal",
|
34
|
-
}.freeze
|
35
|
-
|
36
|
-
def stage_abbr(stage, substage)
|
37
|
-
return nil if stage.to_i > 60
|
38
|
-
return "PRF" if stage == "60" && substage == "00"
|
39
|
-
STAGE_ABBRS[stage.to_sym]
|
40
|
-
end
|
41
|
-
|
42
|
-
def stage_name(stage, substage)
|
43
|
-
return "Proof" if stage == "60" && substage == "00"
|
44
|
-
STAGE_NAMES[stage.to_sym]
|
45
|
-
end
|
46
|
-
|
47
|
-
def metadata_id(node, xml)
|
48
|
-
iso_id(node, xml)
|
49
|
-
node&.attr("tc-docnumber")&.split(/,\s*/)&.each do |n|
|
50
|
-
xml.docidentifier(n, **attr_code(type: "iso-tc"))
|
51
|
-
end
|
52
|
-
xml.docnumber node&.attr("docnumber")
|
53
|
-
end
|
54
|
-
|
55
|
-
def iso_id(node, xml)
|
56
|
-
return unless node.attr("docnumber")
|
57
|
-
part, subpart = node&.attr("partnumber")&.split(/-/)
|
58
|
-
dn = add_id_parts(node.attr("docnumber"), part, subpart)
|
59
|
-
dn1 = id_stage_prefix(dn, node, false)
|
60
|
-
dn2 = id_stage_prefix(dn, node, true)
|
61
|
-
xml.docidentifier dn1, **attr_code(type: "iso")
|
62
|
-
xml.docidentifier id_langsuffix(dn1, node), **attr_code(type: "iso-with-lang")
|
63
|
-
xml.docidentifier id_langsuffix(dn2, node), **attr_code(type: "iso-reference")
|
64
|
-
end
|
65
|
-
|
66
|
-
def id_langsuffix(dn, node)
|
67
|
-
lang = node.attr("language") || "en"
|
68
|
-
suffix = case lang
|
69
|
-
when "en" then "(E)"
|
70
|
-
when "fr" then "(F)"
|
71
|
-
else
|
72
|
-
"(X)"
|
73
|
-
end
|
74
|
-
"#{dn}#{suffix}"
|
75
|
-
end
|
76
|
-
|
77
13
|
def metadata_ext(node, xml)
|
78
14
|
super
|
79
15
|
structured_id(node, xml)
|
80
|
-
xml.stagename stage_name(get_stage(node), get_substage(node)
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
return unless node.attr("docnumber")
|
85
|
-
part, subpart = node&.attr("partnumber")&.split(/-/)
|
86
|
-
xml.structuredidentifier do |i|
|
87
|
-
i.project_number node.attr("docnumber"),
|
88
|
-
**attr_code(part: part, subpart: subpart)
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
def add_id_parts(dn, part, subpart)
|
93
|
-
dn += "-#{part}" if part
|
94
|
-
dn += "-#{subpart}" if subpart
|
95
|
-
dn
|
96
|
-
end
|
97
|
-
|
98
|
-
def id_stage_abbr(stage, substage, node)
|
99
|
-
IsoDoc::Iso::Metadata.new("en", "Latn", {}).
|
100
|
-
status_abbrev(stage_abbr(stage, substage), substage, node.attr("iteration"),
|
101
|
-
node.attr("draft"))
|
102
|
-
end
|
103
|
-
|
104
|
-
def id_stage_prefix(dn, node, force_year)
|
105
|
-
stage = get_stage(node)
|
106
|
-
substage = get_substage(node)
|
107
|
-
if stage && (stage.to_i < 60)
|
108
|
-
abbr = id_stage_abbr(stage, substage, node)
|
109
|
-
dn = "/#{abbr} #{dn}" unless abbr.nil? || abbr.empty? # prefixes added in cleanup
|
110
|
-
end
|
111
|
-
if force_year || !(stage && (stage.to_i < 60))
|
112
|
-
dn += ":#{node.attr("copyright-year")}" if node.attr("copyright-year")
|
113
|
-
end
|
114
|
-
dn
|
16
|
+
xml.stagename stage_name(get_stage(node), get_substage(node),
|
17
|
+
node.attr("doctype"), node.attr("iteration"))
|
18
|
+
@amd && a = node.attr("updates-document-type") and
|
19
|
+
xml.updates_document_type a
|
115
20
|
end
|
116
21
|
|
117
22
|
def organization(org, orgname)
|
@@ -160,20 +65,11 @@ module Asciidoctor
|
|
160
65
|
end
|
161
66
|
end
|
162
67
|
|
163
|
-
def get_stage(node)
|
164
|
-
stage = node.attr("status") || node.attr("docstage") || "60"
|
165
|
-
end
|
166
|
-
|
167
|
-
def get_substage(node)
|
168
|
-
stage = get_stage(node)
|
169
|
-
node.attr("docsubstage") || ( stage == "60" ? "60" : "00" )
|
170
|
-
end
|
171
|
-
|
172
68
|
def metadata_status(node, xml)
|
173
69
|
stage = get_stage(node)
|
174
70
|
substage = get_substage(node)
|
175
71
|
xml.status do |s|
|
176
|
-
s.stage stage, **attr_code(abbreviation: stage_abbr(stage, substage))
|
72
|
+
s.stage stage, **attr_code(abbreviation: stage_abbr(stage, substage, node.attr("doctype")))
|
177
73
|
s.substage substage
|
178
74
|
node.attr("iteration") && (s.iteration node.attr("iteration"))
|
179
75
|
end
|
@@ -208,12 +104,21 @@ module Asciidoctor
|
|
208
104
|
end
|
209
105
|
end
|
210
106
|
|
107
|
+
def title_amd(node, t, lang, at)
|
108
|
+
return unless node.attr("title-amendment-#{lang}")
|
109
|
+
t.title(**attr_code(at.merge(type: "title-amd"))) do |t1|
|
110
|
+
t1 << Asciidoctor::Standoc::Utils::asciidoc_sub(node.attr("title-amendment-#{lang}"))
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
211
114
|
def title_full(node, t, lang, at)
|
212
115
|
title = node.attr("title-main-#{lang}")
|
213
116
|
intro = node.attr("title-intro-#{lang}")
|
214
117
|
part = node.attr("title-part-#{lang}")
|
118
|
+
amd = node.attr("title-amendment-#{lang}")
|
215
119
|
title = "#{intro} -- #{title}" if intro
|
216
120
|
title = "#{title} -- #{part}" if part
|
121
|
+
title = "#{title} -- #{amd}" if amd && @amd
|
217
122
|
t.title **attr_code(at.merge(type: "main")) do |t1|
|
218
123
|
t1 << Asciidoctor::Standoc::Utils::asciidoc_sub(title)
|
219
124
|
end
|
@@ -226,6 +131,7 @@ module Asciidoctor
|
|
226
131
|
title_intro(node, xml, lang, at)
|
227
132
|
title_main(node, xml, lang, at)
|
228
133
|
title_part(node, xml, lang, at)
|
134
|
+
title_amd(node, xml, lang, at) if @amd
|
229
135
|
end
|
230
136
|
end
|
231
137
|
end
|