isodoc 1.7.2 → 1.7.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/isodoc.gemspec +2 -0
- data/lib/isodoc/convert.rb +1 -0
- data/lib/isodoc/css.rb +3 -3
- data/lib/isodoc/function/blocks_example_note.rb +85 -79
- data/lib/isodoc/function/cleanup.rb +181 -175
- data/lib/isodoc/function/inline.rb +110 -108
- data/lib/isodoc/function/inline_simple.rb +55 -55
- data/lib/isodoc/function/lists.rb +75 -71
- data/lib/isodoc/function/references.rb +165 -160
- data/lib/isodoc/function/reqt.rb +91 -85
- data/lib/isodoc/function/section.rb +140 -190
- data/lib/isodoc/function/section_titles.rb +82 -0
- data/lib/isodoc/function/table.rb +90 -87
- data/lib/isodoc/function/terms.rb +58 -56
- data/lib/isodoc/function/to_word_html.rb +2 -0
- data/lib/isodoc/html_function/mathvariant_to_plain.rb +5 -3
- data/lib/isodoc/presentation_function/block.rb +80 -53
- data/lib/isodoc/presentation_function/inline.rb +48 -16
- data/lib/isodoc/presentation_function/math.rb +9 -0
- data/lib/isodoc/presentation_function/section.rb +12 -1
- data/lib/isodoc/presentation_xml_convert.rb +3 -0
- data/lib/isodoc/version.rb +1 -1
- data/lib/isodoc/word_function/body.rb +5 -5
- data/lib/isodoc/xslfo_convert.rb +2 -2
- data/lib/isodoc.rb +1 -1
- data/spec/assets/outputtest/iso.international-standard.xsl +2 -2
- data/spec/isodoc/blocks_spec.rb +178 -64
- data/spec/isodoc/inline_spec.rb +230 -123
- data/spec/isodoc/postproc_spec.rb +2 -2
- data/spec/isodoc/presentation_xml_spec.rb +84 -0
- data/spec/isodoc/section_spec.rb +764 -0
- data/spec/isodoc/terms_spec.rb +116 -0
- metadata +31 -2
@@ -1,3 +1,5 @@
|
|
1
|
+
require "metanorma-utils"
|
2
|
+
|
1
3
|
module IsoDoc
|
2
4
|
class PresentationXMLConvert < ::IsoDoc::Convert
|
3
5
|
def prefix_container(container, linkend, _target)
|
@@ -130,7 +132,7 @@ module IsoDoc
|
|
130
132
|
loc = @i18n.locality[type] || type.sub(/^locality:/, "")
|
131
133
|
loc = case node["case"]
|
132
134
|
when "lowercase" then loc.downcase
|
133
|
-
else loc
|
135
|
+
else Metanorma::Utils.strict_capitalize_first(loc)
|
134
136
|
end
|
135
137
|
" #{loc}"
|
136
138
|
end
|
@@ -161,32 +163,62 @@ module IsoDoc
|
|
161
163
|
|
162
164
|
def concept1(node)
|
163
165
|
xref = node&.at(ns("./xref/@target"))&.text or
|
164
|
-
return concept_render(node, node["ital"] || "true",
|
165
|
-
|
166
|
+
return concept_render(node, ital: node["ital"] || "true",
|
167
|
+
ref: node["ref"] || "true",
|
168
|
+
linkref: node["linkref"] || "true",
|
169
|
+
linkmention: node["linkmention"] || "false")
|
166
170
|
if node.at(ns("//definitions//dt[@id = '#{xref}']"))
|
167
|
-
concept_render(node, node["ital"] || "false",
|
168
|
-
|
171
|
+
concept_render(node, ital: node["ital"] || "false",
|
172
|
+
ref: node["ref"] || "false",
|
173
|
+
linkref: node["linkref"] || "true",
|
174
|
+
linkmention: node["linkmention"] || "false")
|
175
|
+
else concept_render(node, ital: node["ital"] || "true",
|
176
|
+
ref: node["ref"] || "true",
|
177
|
+
linkref: node["linkref"] || "true",
|
178
|
+
linkmention: node["linkmention"] || "false")
|
169
179
|
end
|
170
180
|
end
|
171
181
|
|
172
|
-
def concept_render(node,
|
182
|
+
def concept_render(node, opts)
|
173
183
|
node&.at(ns("./refterm"))&.remove
|
174
184
|
r = node.at(ns("./renderterm"))
|
175
|
-
|
176
|
-
|
177
|
-
|
185
|
+
ref = node.at(ns("./xref | ./eref | ./termref"))
|
186
|
+
ref && opts[:ref] != "false" and r&.next = " "
|
187
|
+
opts[:ital] == "true" and r&.name = "em"
|
188
|
+
if opts[:linkmention] == "true" && !r.nil? && !ref.nil?
|
189
|
+
ref2 = ref.clone
|
190
|
+
r2 = r.clone
|
191
|
+
r.replace(ref2).children = r2
|
192
|
+
end
|
193
|
+
concept1_ref(node, ref, opts)
|
194
|
+
if opts[:ital] == "false"
|
195
|
+
r = node.at(ns(".//renderterm"))
|
196
|
+
r&.replace(r&.children)
|
178
197
|
end
|
179
|
-
concept1_ref(node, ref)
|
180
198
|
node.replace(node.children)
|
181
199
|
end
|
182
200
|
|
183
|
-
def concept1_ref(
|
184
|
-
|
185
|
-
return
|
201
|
+
def concept1_ref(_node, ref, opts)
|
202
|
+
ref.nil? and return
|
203
|
+
return ref.remove if opts[:ref] == "false"
|
204
|
+
|
205
|
+
r = concept1_ref_content(ref)
|
206
|
+
ref = r.at("./descendant-or-self::xmlns:xref | "\
|
207
|
+
"./descendant-or-self::xmlns:eref | "\
|
208
|
+
"./descendant-or-self::xmlns:termref")
|
209
|
+
%w(xref eref).include? ref&.name and get_linkend(ref)
|
210
|
+
if opts[:linkref] == "false" && %w(xref eref).include?(ref&.name)
|
211
|
+
ref.replace(ref.children)
|
212
|
+
end
|
213
|
+
end
|
186
214
|
|
187
|
-
|
188
|
-
|
189
|
-
|
215
|
+
def concept1_ref_content(ref)
|
216
|
+
if non_locality_elems(ref).select do |c|
|
217
|
+
!c.text? || /\S/.match(c)
|
218
|
+
end.empty?
|
219
|
+
ref.replace(@i18n.term_defined_in.sub(/%/,
|
220
|
+
ref.to_xml))
|
221
|
+
else ref.replace("[#{ref.to_xml}]")
|
190
222
|
end
|
191
223
|
end
|
192
224
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require "twitter_cldr"
|
2
2
|
require "bigdecimal"
|
3
|
+
require "mathml2asciimath"
|
3
4
|
|
4
5
|
module IsoDoc
|
5
6
|
class PresentationXMLConvert < ::IsoDoc::Convert
|
@@ -70,7 +71,15 @@ module IsoDoc
|
|
70
71
|
locale
|
71
72
|
end
|
72
73
|
|
74
|
+
def asciimath_dup(node)
|
75
|
+
return if @suppressasciimathdup
|
76
|
+
|
77
|
+
a = MathML2AsciiMath.m2a(node.to_xml)
|
78
|
+
node.next = "<!-- #{a} -->"
|
79
|
+
end
|
80
|
+
|
73
81
|
def mathml1(node, locale)
|
82
|
+
asciimath_dup(node)
|
74
83
|
localize_maths(node, locale)
|
75
84
|
return unless node.elements.size == 1 && node.elements.first.name == "mn"
|
76
85
|
|
@@ -78,12 +78,23 @@ module IsoDoc
|
|
78
78
|
i = display_order_at(docxml, "//clause[@type = 'scope']", i)
|
79
79
|
i = display_order_at(docxml, @xrefs.klass.norm_ref_xpath, i)
|
80
80
|
i = display_order_at(docxml, "//sections/terms | "\
|
81
|
-
|
81
|
+
"//sections/clause[descendant::terms]", i)
|
82
82
|
i = display_order_at(docxml, "//sections/definitions", i)
|
83
83
|
i = display_order_xpath(docxml, @xrefs.klass.middle_clause(docxml), i)
|
84
84
|
i = display_order_xpath(docxml, "//annex", i)
|
85
85
|
i = display_order_xpath(docxml, @xrefs.klass.bibliography_xpath, i)
|
86
86
|
display_order_xpath(docxml, "//indexsect", i)
|
87
87
|
end
|
88
|
+
|
89
|
+
def clausetitle(docxml)
|
90
|
+
docxml.xpath(ns("//variant-title[@type = 'toc']")).each(&:remove)
|
91
|
+
end
|
92
|
+
|
93
|
+
def toc(docxml)
|
94
|
+
docxml.xpath(ns("//toc//xref[text()]")).each do |x|
|
95
|
+
lbl = @xrefs.get[x["target"]][:label] or next
|
96
|
+
x.children.first.previous = "#{lbl}<tab/>"
|
97
|
+
end
|
98
|
+
end
|
88
99
|
end
|
89
100
|
end
|
@@ -34,6 +34,8 @@ module IsoDoc
|
|
34
34
|
term docxml
|
35
35
|
references docxml
|
36
36
|
index docxml
|
37
|
+
clausetitle docxml
|
38
|
+
toc docxml
|
37
39
|
display_order docxml
|
38
40
|
end
|
39
41
|
|
@@ -47,6 +49,7 @@ module IsoDoc
|
|
47
49
|
termexample docxml
|
48
50
|
note docxml
|
49
51
|
termnote docxml
|
52
|
+
termdefinition docxml
|
50
53
|
permission docxml
|
51
54
|
requirement docxml
|
52
55
|
recommendation docxml
|
data/lib/isodoc/version.rb
CHANGED
@@ -46,9 +46,9 @@ module IsoDoc::WordFunction
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
-
def insert_tab(out,
|
50
|
-
out.span **attr_code(style: "mso-tab-count:#{
|
51
|
-
[1..
|
49
|
+
def insert_tab(out, count)
|
50
|
+
out.span **attr_code(style: "mso-tab-count:#{count}") do |span|
|
51
|
+
[1..count].each { span << "  " }
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
@@ -137,7 +137,7 @@ module IsoDoc::WordFunction
|
|
137
137
|
name = node&.at(ns("./name"))&.remove
|
138
138
|
div.p **{ class: "Note" } do |p|
|
139
139
|
p.span **{ class: "note_label" } do |s|
|
140
|
-
name
|
140
|
+
name&.children&.each { |n| parse(n, s) }
|
141
141
|
end
|
142
142
|
insert_tab(p, 1)
|
143
143
|
node.first_element_child.children.each { |n| parse(n, p) }
|
@@ -149,7 +149,7 @@ module IsoDoc::WordFunction
|
|
149
149
|
name = node&.at(ns("./name"))&.remove
|
150
150
|
div.p **{ class: "Note" } do |p|
|
151
151
|
p.span **{ class: "note_label" } do |s|
|
152
|
-
name
|
152
|
+
name&.children&.each { |n| parse(n, s) }
|
153
153
|
end
|
154
154
|
insert_tab(p, 1)
|
155
155
|
end
|
data/lib/isodoc/xslfo_convert.rb
CHANGED
@@ -37,12 +37,12 @@ module IsoDoc
|
|
37
37
|
input_filename,
|
38
38
|
output_filename || "#{filename}.#{@suffix}",
|
39
39
|
File.join(@libdir, pdf_stylesheet(docxml)),
|
40
|
-
pdf_options(docxml)
|
40
|
+
pdf_options(docxml),
|
41
41
|
)
|
42
42
|
end
|
43
43
|
|
44
44
|
def xref_parse(node, out)
|
45
|
-
out.a(**{
|
45
|
+
out.a(**{ href: target_pdf(node) }) { |l| l << get_linkend(node) }
|
46
46
|
end
|
47
47
|
|
48
48
|
def input_xml_path(input_filename, xml_file, debug)
|
data/lib/isodoc.rb
CHANGED
@@ -17,8 +17,8 @@ require "isodoc/convert"
|
|
17
17
|
require "isodoc/metadata"
|
18
18
|
require "isodoc/html_convert"
|
19
19
|
require "isodoc/word_convert"
|
20
|
-
require "isodoc/pdf_convert"
|
21
20
|
require "isodoc/xslfo_convert"
|
21
|
+
require "isodoc/pdf_convert"
|
22
22
|
require "isodoc/headlesshtml_convert"
|
23
23
|
require "isodoc/presentation_xml_convert"
|
24
24
|
require "isodoc/xref"
|
@@ -1436,7 +1436,7 @@
|
|
1436
1436
|
</xsl:template>
|
1437
1437
|
|
1438
1438
|
<xsl:template match="iso:sourcecode">
|
1439
|
-
<fo:block font-family="Courier" font-size="9pt" margin-bottom="12pt">
|
1439
|
+
<fo:block font-family="Courier New" font-size="9pt" margin-bottom="12pt">
|
1440
1440
|
<xsl:choose>
|
1441
1441
|
<xsl:when test="@lang = 'en'"/>
|
1442
1442
|
<xsl:otherwise>
|
@@ -2760,7 +2760,7 @@
|
|
2760
2760
|
<xsl:apply-templates/>
|
2761
2761
|
</fo:inline>
|
2762
2762
|
</xsl:template><xsl:template xmlns:iec="http://riboseinc.com/isoxml" xmlns:itu="https://open.ribose.com/standards/itu" xmlns:nist="http://www.nist.gov/metanorma" xmlns:un="https://open.ribose.com/standards/unece" xmlns:csd="https://www.calconnect.org/standards/csd" match="*[local-name()='tt']">
|
2763
|
-
<fo:inline font-family="Courier" font-size="10pt">
|
2763
|
+
<fo:inline font-family="Courier New" font-size="10pt">
|
2764
2764
|
<xsl:apply-templates/>
|
2765
2765
|
</fo:inline>
|
2766
2766
|
</xsl:template><xsl:template xmlns:iec="http://riboseinc.com/isoxml" xmlns:itu="https://open.ribose.com/standards/itu" xmlns:nist="http://www.nist.gov/metanorma" xmlns:un="https://open.ribose.com/standards/unece" xmlns:csd="https://www.calconnect.org/standards/csd" match="*[local-name()='del']">
|
data/spec/isodoc/blocks_spec.rb
CHANGED
@@ -1572,6 +1572,7 @@ RSpec.describe IsoDoc do
|
|
1572
1572
|
<inherit>/ss/584/2015/level/1</inherit>
|
1573
1573
|
<inherit><eref type="inline" bibitemid="rfc2616" citeas="RFC 2616">RFC 2616 (HTTP/1.1)</eref></inherit>
|
1574
1574
|
<subject>user</subject>
|
1575
|
+
<subject>non-user</subject>
|
1575
1576
|
<classification> <tag>control-class</tag> <value>Technical</value> </classification><classification> <tag>priority</tag> <value>P0</value> </classification><classification> <tag>family</tag> <value>System and Communications Protection</value> </classification><classification> <tag>family</tag> <value>System and Communications Protocols</value> </classification>
|
1576
1577
|
<description>
|
1577
1578
|
<p id="_">I recommend <em>this</em>.</p>
|
@@ -1611,6 +1612,9 @@ RSpec.describe IsoDoc do
|
|
1611
1612
|
<import exclude="true">
|
1612
1613
|
<sourcecode id="_">success-response()</sourcecode>
|
1613
1614
|
</import>
|
1615
|
+
<component exclude='false' class='component1'>
|
1616
|
+
<p id='_'>Hello</p>
|
1617
|
+
</component>
|
1614
1618
|
</permission>
|
1615
1619
|
</foreword></preface>
|
1616
1620
|
<bibliography><references id="_bibliography" obligation="informative" normative="false" displayorder="2">
|
@@ -1628,6 +1632,7 @@ RSpec.describe IsoDoc do
|
|
1628
1632
|
<inherit>/ss/584/2015/level/1</inherit>
|
1629
1633
|
<inherit><eref type="inline" bibitemid="rfc2616" citeas="RFC 2616">RFC 2616 (HTTP/1.1)</eref></inherit>
|
1630
1634
|
<subject>user</subject>
|
1635
|
+
<subject>non-user</subject>
|
1631
1636
|
<classification> <tag>control-class</tag> <value>Technical</value> </classification><classification> <tag>priority</tag> <value>P0</value> </classification><classification> <tag>family</tag> <value>System and Communications Protection</value> </classification><classification> <tag>family</tag> <value>System and Communications Protocols</value> </classification>
|
1632
1637
|
<description>
|
1633
1638
|
<p id="_">I recommend <em>this</em>.</p>
|
@@ -1668,6 +1673,9 @@ RSpec.describe IsoDoc do
|
|
1668
1673
|
<import exclude="true">
|
1669
1674
|
<sourcecode id="_">success-response()</sourcecode>
|
1670
1675
|
</import>
|
1676
|
+
<component exclude='false' class='component1'>
|
1677
|
+
<p id='_'>Hello</p>
|
1678
|
+
</component>
|
1671
1679
|
</permission>
|
1672
1680
|
</foreword></preface>
|
1673
1681
|
<bibliography><references id="_bibliography" obligation="informative" normative="false" displayorder='2'>
|
@@ -1684,6 +1692,7 @@ RSpec.describe IsoDoc do
|
|
1684
1692
|
<div class="permission" id='_' style='page-break-after: avoid;page-break-inside: avoid;'>
|
1685
1693
|
<p class="RecommendationTitle">Permission 1:<br/>/ogc/recommendation/wfs/2</p>
|
1686
1694
|
<p><i>Subject: user<br/>
|
1695
|
+
Subject: non-user<br/>
|
1687
1696
|
Inherits: /ss/584/2015/level/1
|
1688
1697
|
<br/>
|
1689
1698
|
Inherits: <a href='#rfc2616'>RFC 2616 (HTTP/1.1)</a>
|
@@ -1702,6 +1711,7 @@ RSpec.describe IsoDoc do
|
|
1702
1711
|
<p id="_">The following code will be run for verification:</p>
|
1703
1712
|
<pre id="_" class="prettyprint ">CoreRoot(success): HttpResponse<br/>      if (success)<br/>      recommendation(label: success-response)<br/>      end<br/>    </pre>
|
1704
1713
|
</div>
|
1714
|
+
<div class='requirement-component1'> <p id='_'>Hello</p> </div>
|
1705
1715
|
</div>
|
1706
1716
|
</div>
|
1707
1717
|
<p class="zzSTDTitle1"/>
|
@@ -1770,6 +1780,9 @@ RSpec.describe IsoDoc do
|
|
1770
1780
|
<import exclude="true">
|
1771
1781
|
<sourcecode id="_">success-response()</sourcecode>
|
1772
1782
|
</import>
|
1783
|
+
<component exclude='false' class='component1'>
|
1784
|
+
<p id='_'>Hello</p>
|
1785
|
+
</component>
|
1773
1786
|
</requirement>
|
1774
1787
|
</foreword></preface>
|
1775
1788
|
</iso-standard>
|
@@ -1824,6 +1837,9 @@ RSpec.describe IsoDoc do
|
|
1824
1837
|
<import exclude='true'>
|
1825
1838
|
<sourcecode id='_'>success-response()</sourcecode>
|
1826
1839
|
</import>
|
1840
|
+
<component exclude='false' class='component1'>
|
1841
|
+
<p id='_'>Hello</p>
|
1842
|
+
</component>
|
1827
1843
|
</requirement>
|
1828
1844
|
</foreword>
|
1829
1845
|
</preface>
|
@@ -1851,6 +1867,7 @@ RSpec.describe IsoDoc do
|
|
1851
1867
|
<p id="_">The following code will be run for verification:</p>
|
1852
1868
|
<pre id="_" class="prettyprint ">CoreRoot(success): HttpResponse<br/>      if (success)<br/>      recommendation(label: success-response)<br/>      end<br/>    </pre>
|
1853
1869
|
</div>
|
1870
|
+
<div class='requirement-component1'> <p id='_'>Hello</p> </div>
|
1854
1871
|
</div>
|
1855
1872
|
</div>
|
1856
1873
|
<p class="zzSTDTitle1"/>
|
@@ -1915,6 +1932,9 @@ RSpec.describe IsoDoc do
|
|
1915
1932
|
<import exclude="true">
|
1916
1933
|
<sourcecode id="_">success-response()</sourcecode>
|
1917
1934
|
</import>
|
1935
|
+
<component exclude='false' class='component1'>
|
1936
|
+
<p id='_'>Hello</p>
|
1937
|
+
</component>
|
1918
1938
|
</requirement>
|
1919
1939
|
</foreword></preface>
|
1920
1940
|
</iso-standard>
|
@@ -1970,6 +1990,9 @@ RSpec.describe IsoDoc do
|
|
1970
1990
|
<import exclude="true">
|
1971
1991
|
<sourcecode id="_">success-response()</sourcecode>
|
1972
1992
|
</import>
|
1993
|
+
<component exclude='false' class='component1'>
|
1994
|
+
<p id='_'>Hello</p>
|
1995
|
+
</component>
|
1973
1996
|
</requirement>
|
1974
1997
|
</foreword></preface>
|
1975
1998
|
</iso-standard>
|
@@ -2026,6 +2049,7 @@ RSpec.describe IsoDoc do
|
|
2026
2049
|
<br/>
|
2027
2050
|
</pre>
|
2028
2051
|
</div>
|
2052
|
+
<div class='requirement-component1'> <p id='_'>Hello</p> </div>
|
2029
2053
|
</div>
|
2030
2054
|
</div>
|
2031
2055
|
<p class='zzSTDTitle1'/>
|
@@ -2089,6 +2113,9 @@ RSpec.describe IsoDoc do
|
|
2089
2113
|
<import exclude="true">
|
2090
2114
|
<sourcecode id="_">success-response()</sourcecode>
|
2091
2115
|
</import>
|
2116
|
+
<component exclude='false' class='component1'>
|
2117
|
+
<p id='_'>Hello</p>
|
2118
|
+
</component>
|
2092
2119
|
</recommendation>
|
2093
2120
|
</foreword></preface>
|
2094
2121
|
</iso-standard>
|
@@ -2151,6 +2178,9 @@ RSpec.describe IsoDoc do
|
|
2151
2178
|
<import exclude='true'>
|
2152
2179
|
<sourcecode id='_'>success-response()</sourcecode>
|
2153
2180
|
</import>
|
2181
|
+
<component exclude='false' class='component1'>
|
2182
|
+
<p id='_'>Hello</p>
|
2183
|
+
</component>
|
2154
2184
|
</recommendation>
|
2155
2185
|
</foreword>
|
2156
2186
|
</preface>
|
@@ -2178,6 +2208,7 @@ RSpec.describe IsoDoc do
|
|
2178
2208
|
<p id="_">The following code will be run for verification:</p>
|
2179
2209
|
<pre id="_" class="prettyprint ">CoreRoot(success): HttpResponse<br/>      if (success)<br/>      recommendation(label: success-response)<br/>      end<br/>    </pre>
|
2180
2210
|
</div>
|
2211
|
+
<div class='requirement-component1'> <p id='_'>Hello</p> </div>
|
2181
2212
|
</div>
|
2182
2213
|
</div>
|
2183
2214
|
<p class="zzSTDTitle1"/>
|
@@ -2503,73 +2534,156 @@ RSpec.describe IsoDoc do
|
|
2503
2534
|
</sections>
|
2504
2535
|
</standard-document>
|
2505
2536
|
INPUT
|
2537
|
+
presxml = <<~INPUT
|
2538
|
+
<standard-document xmlns="https://www.metanorma.org/ns/standoc" type="presentation" version="1.10.2">
|
2539
|
+
<bibdata type="standard">
|
2540
|
+
<title language="en" format="text/plain">Document title</title>
|
2541
|
+
<language current="true">en</language>
|
2542
|
+
<script current="true">Latn</script>
|
2543
|
+
<status>
|
2544
|
+
<stage language="">published</stage>
|
2545
|
+
</status>
|
2546
|
+
<copyright>
|
2547
|
+
<from>2021</from>
|
2548
|
+
</copyright>
|
2549
|
+
<ext>
|
2550
|
+
<doctype language="">article</doctype>
|
2551
|
+
</ext>
|
2552
|
+
</bibdata>
|
2553
|
+
<sections>
|
2554
|
+
<clause id="clause1" inline-header="false" obligation="normative" displayorder="1">
|
2555
|
+
<title depth="1">1.<tab/>Clause 1</title>
|
2556
|
+
<clause id="clause1A" inline-header="false" obligation="normative">
|
2557
|
+
<title depth="2">1.1.<tab/>Clause 1A</title>
|
2558
|
+
<clause id="clause1Aa" inline-header="false" obligation="normative">
|
2559
|
+
<title depth="3">1.1.1.<tab/>Clause 1Aa</title>
|
2560
|
+
</clause>
|
2561
|
+
<clause id="clause1Ab" inline-header="false" obligation="normative">
|
2562
|
+
<title depth="3">1.1.2.<tab/>Clause 1Ab</title>
|
2563
|
+
</clause>
|
2564
|
+
</clause>
|
2565
|
+
<clause id="clause1B" inline-header="false" obligation="normative">
|
2566
|
+
<title depth="2">1.2.<tab/>Clause 1B</title>
|
2567
|
+
<clause id="clause1Ba" inline-header="false" obligation="normative">
|
2568
|
+
<title depth="3">1.2.1.<tab/>Clause 1Ba</title>
|
2569
|
+
</clause>
|
2570
|
+
</clause>
|
2571
|
+
</clause>
|
2572
|
+
<clause id="clause2" inline-header="false" obligation="normative" displayorder="2">
|
2573
|
+
<title depth="1">2.<tab/>Clause 2</title>
|
2574
|
+
<p id="A">And introducing: </p>
|
2575
|
+
<toc>
|
2576
|
+
<ul id="B">
|
2577
|
+
<li>
|
2578
|
+
<xref target="clause1A">1.1<tab/>Clause 1A</xref>
|
2579
|
+
</li>
|
2580
|
+
<li>
|
2581
|
+
<ul id="C">
|
2582
|
+
<li>
|
2583
|
+
<xref target="clause1Aa">1.1.1<tab/>Clause 1Aa</xref>
|
2584
|
+
</li>
|
2585
|
+
<li>
|
2586
|
+
<xref target="clause1Ab">1.1.2<tab/>Clause 1Ab</xref>
|
2587
|
+
</li>
|
2588
|
+
</ul>
|
2589
|
+
</li>
|
2590
|
+
<li>
|
2591
|
+
<xref target="clause1B">1.2<tab/>Clause 1B</xref>
|
2592
|
+
</li>
|
2593
|
+
<li>
|
2594
|
+
<ul id="D">
|
2595
|
+
<li>
|
2596
|
+
<xref target="clause1Ba">1.2.1<tab/>Clause 1Ba</xref>
|
2597
|
+
</li>
|
2598
|
+
</ul>
|
2599
|
+
</li>
|
2600
|
+
</ul>
|
2601
|
+
</toc>
|
2602
|
+
<toc>
|
2603
|
+
<ul id="E">
|
2604
|
+
<li>
|
2605
|
+
<xref target="clause1A">1.1<tab/>Clause 1A</xref>
|
2606
|
+
</li>
|
2607
|
+
<li>
|
2608
|
+
<xref target="clause1B">1.2<tab/>Clause 1B</xref>
|
2609
|
+
</li>
|
2610
|
+
</ul>
|
2611
|
+
</toc>
|
2612
|
+
</clause>
|
2613
|
+
</sections>
|
2614
|
+
</standard-document>
|
2615
|
+
INPUT
|
2506
2616
|
output = <<~OUTPUT
|
2507
2617
|
#{HTML_HDR}
|
2508
|
-
|
2509
|
-
|
2510
|
-
|
2511
|
-
|
2512
|
-
|
2513
|
-
|
2514
|
-
|
2515
|
-
|
2516
|
-
|
2517
|
-
|
2518
|
-
|
2519
|
-
|
2520
|
-
|
2521
|
-
|
2522
|
-
|
2523
|
-
|
2524
|
-
|
2525
|
-
|
2526
|
-
|
2527
|
-
|
2528
|
-
|
2529
|
-
|
2530
|
-
|
2531
|
-
|
2532
|
-
|
2533
|
-
|
2534
|
-
|
2535
|
-
|
2536
|
-
|
2537
|
-
|
2538
|
-
|
2539
|
-
|
2540
|
-
|
2541
|
-
|
2542
|
-
|
2543
|
-
|
2544
|
-
|
2545
|
-
|
2546
|
-
|
2547
|
-
|
2548
|
-
|
2549
|
-
|
2550
|
-
|
2551
|
-
|
2552
|
-
|
2553
|
-
|
2554
|
-
|
2555
|
-
|
2556
|
-
|
2557
|
-
|
2558
|
-
|
2559
|
-
|
2560
|
-
|
2561
|
-
|
2562
|
-
|
2563
|
-
|
2564
|
-
|
2565
|
-
|
2566
|
-
|
2567
|
-
|
2568
|
-
|
2569
|
-
|
2570
|
-
|
2618
|
+
<p class='zzSTDTitle1'>Document title</p>
|
2619
|
+
<div id='clause1'>
|
2620
|
+
<h1>1.  Clause 1</h1>
|
2621
|
+
<div id='clause1A'>
|
2622
|
+
<h2>1.1.  Clause 1A</h2>
|
2623
|
+
<div id='clause1Aa'>
|
2624
|
+
<h3>1.1.1.  Clause 1Aa</h3>
|
2625
|
+
</div>
|
2626
|
+
<div id='clause1Ab'>
|
2627
|
+
<h3>1.1.2.  Clause 1Ab</h3>
|
2628
|
+
</div>
|
2629
|
+
</div>
|
2630
|
+
<div id='clause1B'>
|
2631
|
+
<h2>1.2.  Clause 1B</h2>
|
2632
|
+
<div id='clause1Ba'>
|
2633
|
+
<h3>1.2.1.  Clause 1Ba</h3>
|
2634
|
+
</div>
|
2635
|
+
</div>
|
2636
|
+
</div>
|
2637
|
+
<div id='clause2'>
|
2638
|
+
<h1>2.  Clause 2</h1>
|
2639
|
+
<p id='A'>And introducing: </p>
|
2640
|
+
<div class='toc'>
|
2641
|
+
<ul id='B'>
|
2642
|
+
<li>
|
2643
|
+
<a href='#clause1A'>1.1  Clause 1A</a>
|
2644
|
+
</li>
|
2645
|
+
<li>
|
2646
|
+
<ul id='C'>
|
2647
|
+
<li>
|
2648
|
+
<a href='#clause1Aa'>1.1.1  Clause 1Aa</a>
|
2649
|
+
</li>
|
2650
|
+
<li>
|
2651
|
+
<a href='#clause1Ab'>1.1.2  Clause 1Ab</a>
|
2652
|
+
</li>
|
2653
|
+
</ul>
|
2654
|
+
</li>
|
2655
|
+
<li>
|
2656
|
+
<a href='#clause1B'>1.2  Clause 1B</a>
|
2657
|
+
</li>
|
2658
|
+
<li>
|
2659
|
+
<ul id='D'>
|
2660
|
+
<li>
|
2661
|
+
<a href='#clause1Ba'>1.2.1  Clause 1Ba</a>
|
2662
|
+
</li>
|
2663
|
+
</ul>
|
2664
|
+
</li>
|
2665
|
+
</ul>
|
2666
|
+
</div>
|
2667
|
+
<div class='toc'>
|
2668
|
+
<ul id='E'>
|
2669
|
+
<li>
|
2670
|
+
<a href='#clause1A'>1.1  Clause 1A</a>
|
2671
|
+
</li>
|
2672
|
+
<li>
|
2673
|
+
<a href='#clause1B'>1.2  Clause 1B</a>
|
2674
|
+
</li>
|
2675
|
+
</ul>
|
2676
|
+
</div>
|
2677
|
+
</div>
|
2678
|
+
</div>
|
2679
|
+
</body>
|
2680
|
+
</html>
|
2571
2681
|
OUTPUT
|
2682
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
|
2683
|
+
.convert("test", input, true)
|
2684
|
+
.sub(%r{<localized-strings>.*</localized-strings>}m, "")))
|
2685
|
+
.to be_equivalent_to xmlpp(presxml)
|
2572
2686
|
expect(xmlpp(IsoDoc::HtmlConvert.new({})
|
2573
|
-
.convert("test",
|
2687
|
+
.convert("test", presxml, true))).to be_equivalent_to xmlpp(output)
|
2574
2688
|
end
|
2575
2689
|
end
|