isodoc 2.0.6.1 → 2.0.8.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/isodoc.gemspec +2 -1
- data/lib/isodoc/convert.rb +12 -4
- data/lib/isodoc/function/references.rb +2 -2
- data/lib/isodoc/i18n.rb +1 -108
- data/lib/isodoc/presentation_function/bibdata.rb +20 -0
- data/lib/isodoc/presentation_function/image.rb +1 -2
- data/lib/isodoc/presentation_function/section.rb +17 -8
- data/lib/isodoc/version.rb +1 -1
- data/lib/isodoc/xref/xref_counter.rb +1 -1
- data/lib/isodoc/xref/xref_gen_seq.rb +2 -2
- data/lib/isodoc-yaml/i18n-zh-Hans.yaml +2 -2
- data/spec/isodoc/blocks_spec.rb +0 -1
- data/spec/isodoc/i18n_spec.rb +2 -2
- data/spec/isodoc/inline_spec.rb +2 -2
- data/spec/isodoc/presentation_xml_spec.rb +174 -2
- data/spec/isodoc/ref_spec.rb +144 -0
- data/spec/isodoc/xref_spec.rb +106 -106
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a736ad455159e993e2c100d8ac3cd67a09c07705dad2fab7f30c8995636a55d8
|
4
|
+
data.tar.gz: b600c452fe5bac0622c27ab05ca4156c46caaea6f56d0cebc2d76b9377c3ae2a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e534774023bcb0212a72808f5167633ecce14af71aaa506388385c5e458fd41a87bb927d87546a3b3a709021d41d1592c99cd008caab5f652023543820137ad
|
7
|
+
data.tar.gz: 9b8dfa80516811e6aa87d0cfc80ac3ad79c26eaf61edf6366b12a89c30b429d0b96e15fc7970c0ada89ce8d94ebbc08a330af41dcb5185baa7245a05f1f1a8d7
|
data/isodoc.gemspec
CHANGED
@@ -31,9 +31,10 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_dependency "asciimath"
|
32
32
|
spec.add_dependency "html2doc", "~> 1.3.0"
|
33
33
|
spec.add_dependency "htmlentities", "~> 4.3.4"
|
34
|
+
spec.add_dependency "isodoc-i18n", "~> 1.0.0"
|
34
35
|
spec.add_dependency "liquid", "~> 4"
|
35
36
|
# spec.add_dependency "metanorma", ">= 1.2.0"
|
36
|
-
spec.add_dependency "emf2svg", "
|
37
|
+
spec.add_dependency "emf2svg", "<= 1.3"
|
37
38
|
spec.add_dependency "mathml2asciimath"
|
38
39
|
spec.add_dependency "metanorma-utils"
|
39
40
|
spec.add_dependency "nokogiri", "~> 1.12.0"
|
data/lib/isodoc/convert.rb
CHANGED
@@ -43,6 +43,8 @@ module IsoDoc
|
|
43
43
|
# tocfigures: add ToC for figures
|
44
44
|
# toctables: add ToC for tables
|
45
45
|
# tocrecommendations: add ToC for rcommendations
|
46
|
+
# fonts: fontist fonts to install
|
47
|
+
# fontlicenseagreement: fontist font license agreement
|
46
48
|
def initialize(options)
|
47
49
|
@libdir ||= File.dirname(__FILE__) # rubocop:disable Lint/DisjunctiveAssignmentInConstructor
|
48
50
|
options.merge!(default_fonts(options)) do |_, old, new|
|
@@ -57,10 +59,7 @@ module IsoDoc
|
|
57
59
|
init_stylesheets(options)
|
58
60
|
init_covers(options)
|
59
61
|
init_toc(options)
|
60
|
-
|
61
|
-
@smallerfontsize = options[:smallerfontsize]
|
62
|
-
@monospacefontsize = options[:monospacefontsize]
|
63
|
-
@footnotefontsize = options[:footnotefontsize]
|
62
|
+
init_fonts(options)
|
64
63
|
@i18nyaml = options[:i18nyaml]
|
65
64
|
@ulstyle = options[:ulstyle]
|
66
65
|
@olstyle = options[:olstyle]
|
@@ -96,6 +95,15 @@ module IsoDoc
|
|
96
95
|
@tmpfilesdir_suffix = tmpfilesdir_suffix
|
97
96
|
end
|
98
97
|
|
98
|
+
def init_fonts(options)
|
99
|
+
@normalfontsize = options[:normalfontsize]
|
100
|
+
@smallerfontsize = options[:smallerfontsize]
|
101
|
+
@monospacefontsize = options[:monospacefontsize]
|
102
|
+
@footnotefontsize = options[:footnotefontsize]
|
103
|
+
@fontist_fonts = options[:fonts]
|
104
|
+
@fontlicenseagreement = options[:fontlicenseagreement]
|
105
|
+
end
|
106
|
+
|
99
107
|
def init_covers(options)
|
100
108
|
@header = options[:header]
|
101
109
|
@htmlcoverpage = options[:htmlcoverpage]
|
@@ -171,7 +171,7 @@ module IsoDoc
|
|
171
171
|
if b.name == "bibitem"
|
172
172
|
next if implicit_reference(b)
|
173
173
|
|
174
|
-
i += 1
|
174
|
+
i += 1 unless b["hidden"]
|
175
175
|
if standard?(b) then std_bibitem_entry(div, b, i, biblio)
|
176
176
|
else nonstd_bibitem(div, b, i, biblio)
|
177
177
|
end
|
@@ -190,7 +190,7 @@ module IsoDoc
|
|
190
190
|
(f = isoxml.at(ns(norm_ref_xpath)) and f["hidden"] != "true") or
|
191
191
|
return num
|
192
192
|
out.div do |div|
|
193
|
-
num
|
193
|
+
num += 1
|
194
194
|
clause_name(num, f.at(ns("./title")), div, nil)
|
195
195
|
if f.name == "clause"
|
196
196
|
f.elements.each { |e| parse(e, div) unless e.name == "title" }
|
data/lib/isodoc/i18n.rb
CHANGED
@@ -1,28 +1,9 @@
|
|
1
1
|
require "yaml"
|
2
|
+
require "isodoc-i18n"
|
2
3
|
require_relative "function/utils"
|
3
4
|
|
4
5
|
module IsoDoc
|
5
6
|
class I18n
|
6
|
-
def load_yaml(lang, script, i18nyaml = nil)
|
7
|
-
ret = load_yaml1(lang, script)
|
8
|
-
return normalise_hash(ret.merge(YAML.load_file(i18nyaml))) if i18nyaml
|
9
|
-
|
10
|
-
normalise_hash(ret)
|
11
|
-
end
|
12
|
-
|
13
|
-
def normalise_hash(ret)
|
14
|
-
case ret
|
15
|
-
when Hash
|
16
|
-
ret.each do |k, v|
|
17
|
-
ret[k] = normalise_hash(v)
|
18
|
-
end
|
19
|
-
ret
|
20
|
-
when Array then ret.map { |n| normalise_hash(n) }
|
21
|
-
when String then cleanup_entities(ret.unicode_normalize(:nfc))
|
22
|
-
else ret
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
7
|
def load_yaml1(lang, script)
|
27
8
|
case lang
|
28
9
|
when "en", "fr", "ru", "de", "es", "ar"
|
@@ -40,93 +21,5 @@ module IsoDoc
|
|
40
21
|
YAML.load_file(File.join(File.dirname(__FILE__),
|
41
22
|
"../isodoc-yaml/i18n-#{str}.yaml"))
|
42
23
|
end
|
43
|
-
|
44
|
-
def get
|
45
|
-
@labels
|
46
|
-
end
|
47
|
-
|
48
|
-
def set(key, val)
|
49
|
-
@labels[key] = val
|
50
|
-
end
|
51
|
-
|
52
|
-
def initialize(lang, script, i18nyaml = nil)
|
53
|
-
@lang = lang
|
54
|
-
@script = script
|
55
|
-
y = load_yaml(lang, script, i18nyaml)
|
56
|
-
@labels = y
|
57
|
-
@labels["language"] = @lang
|
58
|
-
@labels["script"] = @script
|
59
|
-
@labels.each do |k, _v|
|
60
|
-
self.class.send(:define_method, k.downcase) { get[k] }
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def self.l10n(text, lang = @lang, script = @script)
|
65
|
-
l10n(text, lang, script)
|
66
|
-
end
|
67
|
-
|
68
|
-
# TODO: move to localization file
|
69
|
-
# function localising spaces and punctuation.
|
70
|
-
# Not clear if period needs to be localised for zh
|
71
|
-
def l10n(text, lang = @lang, script = @script)
|
72
|
-
if lang == "zh" && script == "Hans" then l10n_zh(text)
|
73
|
-
else bidiwrap(text, lang, script)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def bidiwrap(text, lang, script)
|
78
|
-
my_script, my_rtl, outer_rtl = bidiwrap_vars(lang, script)
|
79
|
-
if my_rtl && !outer_rtl
|
80
|
-
mark = %w(Arab Aran).include?(my_script) ? "؜" : "‏"
|
81
|
-
"#{mark}#{text}#{mark}"
|
82
|
-
elsif !my_rtl && outer_rtl then "‎#{text}‎"
|
83
|
-
else text
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
def bidiwrap_vars(lang, script)
|
88
|
-
my_script = script || Metanorma::Utils.default_script(lang)
|
89
|
-
[my_script,
|
90
|
-
Metanorma::Utils.rtl_script?(my_script),
|
91
|
-
Metanorma::Utils.rtl_script?(@script || Metanorma::Utils
|
92
|
-
.default_script(@lang))]
|
93
|
-
end
|
94
|
-
|
95
|
-
def l10n_zh(text)
|
96
|
-
xml = Nokogiri::HTML::DocumentFragment.parse(text)
|
97
|
-
xml.traverse do |n|
|
98
|
-
next unless n.text?
|
99
|
-
|
100
|
-
n.replace(cleanup_entities(n.text.gsub(/ /, "").gsub(/:/, ":")
|
101
|
-
.gsub(/,/, "、").gsub(/\(/, "(").gsub(/\)/, ")")
|
102
|
-
.gsub(/\[/, "【").gsub(/\]/, "】"), is_xml: false))
|
103
|
-
end
|
104
|
-
xml.to_xml.gsub(/<b>/, "").gsub("</b>", "").gsub(/<\?[^>]+>/, "")
|
105
|
-
end
|
106
|
-
|
107
|
-
def boolean_conj(list, conn)
|
108
|
-
case list.size
|
109
|
-
when 0 then ""
|
110
|
-
when 1 then list.first
|
111
|
-
when 2 then @labels["binary_#{conn}"].sub(/%1/, list[0])
|
112
|
-
.sub(/%2/, list[1])
|
113
|
-
else
|
114
|
-
@labels["multiple_#{conn}"]
|
115
|
-
.sub(/%1/, l10n(list[0..-2].join(", "), @lang, @script))
|
116
|
-
.sub(/%2/, list[-1])
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
# def multiple_and(names, andword)
|
121
|
-
# return "" if names.empty?
|
122
|
-
# return names[0] if names.length == 1
|
123
|
-
#
|
124
|
-
# (names.length == 2) &&
|
125
|
-
# (return l10n("#{names[0]} #{andword} #{names[1]}", @lang, @script))
|
126
|
-
# l10n(names[0..-2].join(", ") + " #{andword} #{names[-1]}", @lang, @script)
|
127
|
-
# end
|
128
|
-
|
129
|
-
include Function::Utils
|
130
|
-
# module_function :l10n
|
131
24
|
end
|
132
25
|
end
|
@@ -1,7 +1,10 @@
|
|
1
|
+
require "csv"
|
2
|
+
|
1
3
|
module IsoDoc
|
2
4
|
class PresentationXMLConvert < ::IsoDoc::Convert
|
3
5
|
def bibdata(docxml)
|
4
6
|
toc_metadata(docxml)
|
7
|
+
fonts_metadata(docxml)
|
5
8
|
docid_prefixes(docxml)
|
6
9
|
a = bibdata_current(docxml) or return
|
7
10
|
address_precompose(a)
|
@@ -34,6 +37,23 @@ module IsoDoc
|
|
34
37
|
end
|
35
38
|
end
|
36
39
|
|
40
|
+
def fonts_metadata(xmldoc)
|
41
|
+
return unless @fontist_fonts
|
42
|
+
|
43
|
+
ins = xmldoc.at(ns("//presentation-metadata")) ||
|
44
|
+
xmldoc.at(ns("//misc-container")) || xmldoc.at(ns("//bibdata"))
|
45
|
+
CSV.parse_line(@fontist_fonts, col_sep: ";").map(&:strip).each do |f|
|
46
|
+
ins.next = presmeta("fonts", f)
|
47
|
+
end
|
48
|
+
@fontlicenseagreement and
|
49
|
+
ins.next = presmeta("font-license-agreement", @fontlicenseagreement)
|
50
|
+
end
|
51
|
+
|
52
|
+
def presmeta(name, value)
|
53
|
+
"<presentation-metadata><name>#{name}</name><value>#{value}</value>"\
|
54
|
+
"</presentation-metadata>"
|
55
|
+
end
|
56
|
+
|
37
57
|
def address_precompose1(addr)
|
38
58
|
ret = []
|
39
59
|
addr.xpath(ns("./street")).each { |s| ret << s.children.to_xml }
|
@@ -29,8 +29,7 @@ module IsoDoc
|
|
29
29
|
def figure1(elem)
|
30
30
|
return sourcecode1(elem) if elem["class"] == "pseudocode" ||
|
31
31
|
elem["type"] == "pseudocode"
|
32
|
-
return if (
|
33
|
-
(elem.at(ns("./figure")) && !elem.at(ns("./name")))
|
32
|
+
return if elem.at(ns("./figure")) && !elem.at(ns("./name"))
|
34
33
|
|
35
34
|
lbl = @xrefs.anchor(elem["id"], :label, false) or return
|
36
35
|
prefix_name(elem, " — ",
|
@@ -69,23 +69,32 @@ module IsoDoc
|
|
69
69
|
def bibliography_bibitem_number_skip(bibitem)
|
70
70
|
@xrefs.klass.implicit_reference(bibitem) ||
|
71
71
|
bibitem.at(ns(".//docidentifier[@type = 'metanorma']")) ||
|
72
|
-
bibitem.at(ns(".//docidentifier[@type = 'metanorma-ordinal']"))
|
73
|
-
|
72
|
+
bibitem.at(ns(".//docidentifier[@type = 'metanorma-ordinal']")) ||
|
73
|
+
bibitem["hidden"] == "true" || bibitem.parent["hidden"] == "true"
|
74
74
|
end
|
75
75
|
|
76
76
|
def bibliography_bibitem_number(docxml)
|
77
77
|
i = 0
|
78
78
|
docxml.xpath(ns("//references[@normative = 'false']/bibitem")).each do |b|
|
79
|
-
|
80
|
-
|
81
|
-
i += 1
|
82
|
-
id = b.at(ns(".//docidentifier"))
|
83
|
-
id.previous =
|
84
|
-
"<docidentifier type='metanorma-ordinal'>[#{i}]</docidentifier>"
|
79
|
+
i = bibliography_bibitem_number1(b, i)
|
85
80
|
end
|
86
81
|
@xrefs.references docxml
|
87
82
|
end
|
88
83
|
|
84
|
+
def bibliography_bibitem_number1(bibitem, idx)
|
85
|
+
if mn = bibitem.at(ns(".//docidentifier[@type = 'metanorma']"))
|
86
|
+
/^\[?\d\]?$/.match?(mn&.text) and
|
87
|
+
idx = mn.text.sub(/^\[/, "").sub(/\]$/, "").to_i
|
88
|
+
end
|
89
|
+
unless bibliography_bibitem_number_skip(bibitem)
|
90
|
+
|
91
|
+
idx += 1
|
92
|
+
bibitem.at(ns(".//docidentifier")).previous =
|
93
|
+
"<docidentifier type='metanorma-ordinal'>[#{idx}]</docidentifier>"
|
94
|
+
end
|
95
|
+
idx
|
96
|
+
end
|
97
|
+
|
89
98
|
def docid_prefixes(docxml)
|
90
99
|
docxml.xpath(ns("//references/bibitem/docidentifier")).each do |i|
|
91
100
|
i.children = @xrefs.klass.docid_prefix(i["type"], i.text)
|
data/lib/isodoc/version.rb
CHANGED
@@ -25,7 +25,7 @@ module IsoDoc
|
|
25
25
|
j = 0
|
26
26
|
clause.xpath(ns(".//figure | .//sourcecode[not(ancestor::example)]"))
|
27
27
|
.each do |t|
|
28
|
-
next if labelled_ancestor(t) && t.ancestors("figure").empty?
|
28
|
+
# next if labelled_ancestor(t) && t.ancestors("figure").empty?
|
29
29
|
|
30
30
|
j = subfigure_increment(j, c, t)
|
31
31
|
label = c.print + (j.zero? ? "" : "-#{j}")
|
@@ -111,7 +111,7 @@ module IsoDoc
|
|
111
111
|
j = 0
|
112
112
|
clause.xpath(ns(".//figure | .//sourcecode[not(ancestor::example)]"))
|
113
113
|
.each do |t|
|
114
|
-
next if labelled_ancestor(t) && t.ancestors("figure").empty?
|
114
|
+
# next if labelled_ancestor(t) && t.ancestors("figure").empty?
|
115
115
|
|
116
116
|
j = subfigure_increment(j, c, t)
|
117
117
|
label = "#{num}#{hiersep}#{c.print}" +
|
@@ -34,9 +34,9 @@ internal_external_terms_boilerplate: |
|
|
34
34
|
<p>% 界定的以及下列术语和定义适用于本文件。</p>
|
35
35
|
term_defined_in: "〖术语于%中定义〗"
|
36
36
|
binary_and: "%1和%2"
|
37
|
-
multiple_and: "%1
|
37
|
+
multiple_and: "%1、和%2"
|
38
38
|
binary_or: "%1或%2"
|
39
|
-
multiple_or: "%1
|
39
|
+
multiple_or: "%1、或%2"
|
40
40
|
chain_and: "%1和%2"
|
41
41
|
chain_or: "%1或%2"
|
42
42
|
chain_from: "%1从%2"
|
data/spec/isodoc/blocks_spec.rb
CHANGED
@@ -2497,7 +2497,6 @@ RSpec.describe IsoDoc do
|
|
2497
2497
|
<bibliography>
|
2498
2498
|
<references hidden='true' normative='false' displayorder="1">
|
2499
2499
|
<bibitem id='express_action_schema' type='internal'>
|
2500
|
-
<docidentifier type='metanorma-ordinal'>[1]</docidentifier>
|
2501
2500
|
<docidentifier type='repository'>express/action_schema</docidentifier>
|
2502
2501
|
</bibitem>
|
2503
2502
|
</references>
|
data/spec/isodoc/i18n_spec.rb
CHANGED
@@ -644,7 +644,7 @@ RSpec.describe IsoDoc do
|
|
644
644
|
</introduction></preface><sections>
|
645
645
|
<clause id="D" obligation="normative" type="scope" displayorder="3">
|
646
646
|
<title depth="1">1.<tab/>Scope</title>
|
647
|
-
<p id="E"><eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom><referenceTo>1</referenceTo></locality>ISO 712&#
|
647
|
+
<p id="E"><eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom><referenceTo>1</referenceTo></locality>ISO 712, 第1–1 表</eref></p>
|
648
648
|
</clause>
|
649
649
|
<clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
|
650
650
|
<title depth="2">3.1.<tab/>Normal Terms</title>
|
@@ -722,7 +722,7 @@ RSpec.describe IsoDoc do
|
|
722
722
|
<div id="D">
|
723
723
|
<h1>1. Scope</h1>
|
724
724
|
<p id="E">
|
725
|
-
<a href='#ISO712'>ISO 712&#
|
725
|
+
<a href='#ISO712'>ISO 712, 第1–1 表</a>
|
726
726
|
</p>
|
727
727
|
</div>
|
728
728
|
<div>
|
data/spec/isodoc/inline_spec.rb
CHANGED
@@ -1603,7 +1603,7 @@ RSpec.describe IsoDoc do
|
|
1603
1603
|
<bibliography>
|
1604
1604
|
<references id='_normative_references' obligation='informative' normative='true' displayorder='2' hidden="true">
|
1605
1605
|
<title depth='1'>
|
1606
|
-
|
1606
|
+
0.
|
1607
1607
|
<tab/>
|
1608
1608
|
Normative References
|
1609
1609
|
</title>
|
@@ -1709,7 +1709,7 @@ RSpec.describe IsoDoc do
|
|
1709
1709
|
OUTPUT
|
1710
1710
|
|
1711
1711
|
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
|
1712
|
-
|
1712
|
+
.convert("test", input, true))).to be_equivalent_to xmlpp(presxml)
|
1713
1713
|
expect(xmlpp(IsoDoc::HtmlConvert.new({})
|
1714
1714
|
.convert("test", presxml, true))).to be_equivalent_to xmlpp(html)
|
1715
1715
|
expect(xmlpp(IsoDoc::WordConvert.new({})
|
@@ -1158,7 +1158,6 @@ RSpec.describe IsoDoc do
|
|
1158
1158
|
.to be_equivalent_to xmlpp(presxml)
|
1159
1159
|
end
|
1160
1160
|
|
1161
|
-
|
1162
1161
|
it "inserts toc metadata" do
|
1163
1162
|
input = <<~INPUT
|
1164
1163
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
@@ -1194,7 +1193,7 @@ RSpec.describe IsoDoc do
|
|
1194
1193
|
end
|
1195
1194
|
|
1196
1195
|
it "processes multiple-target xrefs" do
|
1197
|
-
|
1196
|
+
input = <<~INPUT
|
1198
1197
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1199
1198
|
<bibdata/>
|
1200
1199
|
<sections>
|
@@ -1295,6 +1294,179 @@ RSpec.describe IsoDoc do
|
|
1295
1294
|
.to be_equivalent_to xmlpp(presxml)
|
1296
1295
|
end
|
1297
1296
|
|
1297
|
+
it "captions embedded figures" do
|
1298
|
+
input = <<~INPUT
|
1299
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1300
|
+
<bibdata/>
|
1301
|
+
<sections>
|
1302
|
+
<clause id="A" inline-header="false" obligation="normative">
|
1303
|
+
<title>Section</title>
|
1304
|
+
<figure id="B1">
|
1305
|
+
<name>First</name>
|
1306
|
+
</figure>
|
1307
|
+
<example id="C1">
|
1308
|
+
<figure id="B2">
|
1309
|
+
<name>Second</name>
|
1310
|
+
</figure>
|
1311
|
+
</example>
|
1312
|
+
<example id="C2">
|
1313
|
+
<figure id="B4" unnumbered="true">
|
1314
|
+
<name>Unnamed</name>
|
1315
|
+
</figure>
|
1316
|
+
</example>
|
1317
|
+
<figure id="B3">
|
1318
|
+
<name>Third</name>
|
1319
|
+
</figure>
|
1320
|
+
</clause>
|
1321
|
+
</sections>
|
1322
|
+
</iso-standard>
|
1323
|
+
INPUT
|
1324
|
+
presxml = <<~OUTPUT
|
1325
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml' type='presentation'>
|
1326
|
+
<bibdata/>
|
1327
|
+
|
1328
|
+
<sections>
|
1329
|
+
<clause id='A' inline-header='false' obligation='normative' displayorder='1'>
|
1330
|
+
<title depth='1'>
|
1331
|
+
1.
|
1332
|
+
<tab/>
|
1333
|
+
Section
|
1334
|
+
</title>
|
1335
|
+
<figure id='B1'>
|
1336
|
+
<name>Figure 1 — First</name>
|
1337
|
+
</figure>
|
1338
|
+
<example id='C1'>
|
1339
|
+
<name>EXAMPLE 1</name>
|
1340
|
+
<figure id='B2'>
|
1341
|
+
<name>Figure 2 — Second</name>
|
1342
|
+
</figure>
|
1343
|
+
</example>
|
1344
|
+
<example id='C2'>
|
1345
|
+
<name>EXAMPLE 2</name>
|
1346
|
+
<figure id='B4' unnumbered='true'>
|
1347
|
+
<name>Unnamed</name>
|
1348
|
+
</figure>
|
1349
|
+
</example>
|
1350
|
+
<figure id='B3'>
|
1351
|
+
<name>Figure 3 — Third</name>
|
1352
|
+
</figure>
|
1353
|
+
</clause>
|
1354
|
+
</sections>
|
1355
|
+
</iso-standard>
|
1356
|
+
OUTPUT
|
1357
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
|
1358
|
+
.convert("test", input, true))
|
1359
|
+
.sub(%r{<localized-strings>.*</localized-strings>}m, ""))
|
1360
|
+
.to be_equivalent_to xmlpp(presxml)
|
1361
|
+
end
|
1362
|
+
|
1363
|
+
it "passes font names to Presentation XML" do
|
1364
|
+
input = <<~INPUT
|
1365
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1366
|
+
<bibdata/>
|
1367
|
+
<sections>
|
1368
|
+
<clause id="A" inline-header="false" obligation="normative">
|
1369
|
+
<title>Section</title>
|
1370
|
+
<figure id="B1">
|
1371
|
+
<name>First</name>
|
1372
|
+
</figure>
|
1373
|
+
</clause>
|
1374
|
+
</sections>
|
1375
|
+
</iso-standard>
|
1376
|
+
INPUT
|
1377
|
+
presxml = <<~OUTPUT
|
1378
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml' type='presentation'>
|
1379
|
+
<bibdata/>
|
1380
|
+
<presentation-metadata>
|
1381
|
+
<name>font-license-agreement</name>
|
1382
|
+
<value>no-install-fonts</value>
|
1383
|
+
</presentation-metadata>
|
1384
|
+
<presentation-metadata>
|
1385
|
+
<name>fonts</name>
|
1386
|
+
<value>font2</value>
|
1387
|
+
</presentation-metadata>
|
1388
|
+
<presentation-metadata>
|
1389
|
+
<name>fonts</name>
|
1390
|
+
<value>font1</value>
|
1391
|
+
</presentation-metadata>
|
1392
|
+
<sections>
|
1393
|
+
<clause id='A' inline-header='false' obligation='normative' displayorder='1'>
|
1394
|
+
<title depth='1'>
|
1395
|
+
1.
|
1396
|
+
<tab/>
|
1397
|
+
Section
|
1398
|
+
</title>
|
1399
|
+
<figure id='B1'>
|
1400
|
+
<name>Figure 1 — First</name>
|
1401
|
+
</figure>
|
1402
|
+
</clause>
|
1403
|
+
</sections>
|
1404
|
+
</iso-standard>
|
1405
|
+
OUTPUT
|
1406
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert
|
1407
|
+
.new({ fonts: "font1; font2", fontlicenseagreement: "no-install-fonts" })
|
1408
|
+
.convert("test", input, true))
|
1409
|
+
.sub(%r{<localized-strings>.*</localized-strings>}m, ""))
|
1410
|
+
.to be_equivalent_to xmlpp(presxml)
|
1411
|
+
end
|
1412
|
+
|
1413
|
+
it "skips numbering of hidden sections" do
|
1414
|
+
input = <<~INPUT
|
1415
|
+
<standard-document xmlns="https://www.metanorma.org/ns/standoc" type="semantic">
|
1416
|
+
<bibdata/>
|
1417
|
+
<sections><clause id="_scope" type="scope" inline-header="false" obligation="normative">
|
1418
|
+
<title>Scope</title>
|
1419
|
+
<p id="_8d98c053-85d7-e8cc-75bb-183a14209d61">A</p>
|
1420
|
+
|
1421
|
+
<p id="_2141c040-93a4-785a-73f0-ffad4fa1779f"><eref type="inline" bibitemid="_607373b1-0cc4-fcdb-c482-fd86ae572bd1" citeas="ISO 639-2"/></p>
|
1422
|
+
</clause>
|
1423
|
+
|
1424
|
+
<terms id="_terms_and_definitions" obligation="normative">
|
1425
|
+
<title>Terms and definitions</title><p id="_36938d4b-05e5-bd0f-a082-0415db50e8f7">No terms and definitions are listed in this document.</p>
|
1426
|
+
|
1427
|
+
</terms>
|
1428
|
+
</sections><bibliography><references hidden="true" normative="true">
|
1429
|
+
<title>Normative references</title>
|
1430
|
+
</references>
|
1431
|
+
</bibliography></standard-document>
|
1432
|
+
INPUT
|
1433
|
+
presxml = <<~OUTPUT
|
1434
|
+
<standard-document xmlns="https://www.metanorma.org/ns/standoc" type="presentation">
|
1435
|
+
<bibdata/>
|
1436
|
+
<sections>
|
1437
|
+
<clause id='_scope' type='scope' inline-header='false' obligation='normative' displayorder='1'>
|
1438
|
+
<title depth='1'>
|
1439
|
+
1.
|
1440
|
+
<tab/>
|
1441
|
+
Scope
|
1442
|
+
</title>
|
1443
|
+
<p id='_8d98c053-85d7-e8cc-75bb-183a14209d61'>A</p>
|
1444
|
+
<p id='_2141c040-93a4-785a-73f0-ffad4fa1779f'>
|
1445
|
+
<eref type='inline' bibitemid='_607373b1-0cc4-fcdb-c482-fd86ae572bd1' citeas='ISO 639-2'>ISO 639-2</eref>
|
1446
|
+
</p>
|
1447
|
+
</clause>
|
1448
|
+
<terms id='_terms_and_definitions' obligation='normative' displayorder='3'>
|
1449
|
+
<title depth='1'>
|
1450
|
+
2.
|
1451
|
+
<tab/>
|
1452
|
+
Terms and definitions
|
1453
|
+
</title>
|
1454
|
+
<p id='_36938d4b-05e5-bd0f-a082-0415db50e8f7'>No terms and definitions are listed in this document.</p>
|
1455
|
+
</terms>
|
1456
|
+
</sections>
|
1457
|
+
<bibliography>
|
1458
|
+
<references hidden='true' normative='true' displayorder='2'>
|
1459
|
+
<title depth='1'>Normative references</title>
|
1460
|
+
</references>
|
1461
|
+
</bibliography>
|
1462
|
+
</standard-document>
|
1463
|
+
OUTPUT
|
1464
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
|
1465
|
+
.convert("test", input, true))
|
1466
|
+
.sub(%r{<localized-strings>.*</localized-strings>}m, ""))
|
1467
|
+
.to be_equivalent_to xmlpp(presxml)
|
1468
|
+
end
|
1469
|
+
|
1298
1470
|
private
|
1299
1471
|
|
1300
1472
|
def mock_symbols
|
data/spec/isodoc/ref_spec.rb
CHANGED
@@ -854,4 +854,148 @@ RSpec.describe IsoDoc do
|
|
854
854
|
.to be_equivalent_to xmlpp(presxml)
|
855
855
|
end
|
856
856
|
|
857
|
+
it "enforces consistent metanorma-ordinal numbering" do
|
858
|
+
input = <<~INPUT
|
859
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
860
|
+
<bibdata>
|
861
|
+
<language>en</language>
|
862
|
+
</bibdata>
|
863
|
+
<bibliography><references id="_normative_references" obligation="informative" normative="false"><title>Bibliography</title>
|
864
|
+
<bibitem id="ref1" type="standard">
|
865
|
+
<title format="text/plain">Cereals or cereal products</title>
|
866
|
+
<docidentifier type="IEC">IEC 217</docidentifier>
|
867
|
+
</bibitem>
|
868
|
+
<bibitem id="ref2" type="standard">
|
869
|
+
<title format="text/plain">Cereals or cereal products</title>
|
870
|
+
<docidentifier type="metanorma">[3]</docidentifier>
|
871
|
+
</bibitem>
|
872
|
+
<bibitem id="ref3" type="standard">
|
873
|
+
<title format="text/plain">Cereals or cereal products</title>
|
874
|
+
<docidentifier>ABC</docidentifier>
|
875
|
+
</bibitem>
|
876
|
+
</references></bibliography></iso-standard>
|
877
|
+
INPUT
|
878
|
+
presxml = <<~PRESXML
|
879
|
+
<bibliography>
|
880
|
+
<references id='_normative_references' obligation='informative' normative='false' displayorder='1'>
|
881
|
+
<title depth='1'>Bibliography</title>
|
882
|
+
<bibitem id='ref1' type='standard'>
|
883
|
+
<title format='text/plain'>Cereals or cereal products</title>
|
884
|
+
<docidentifier type='metanorma-ordinal'>[1]</docidentifier>
|
885
|
+
<docidentifier type='IEC'>IEC 217</docidentifier>
|
886
|
+
</bibitem>
|
887
|
+
<bibitem id='ref2' type='standard'>
|
888
|
+
<title format='text/plain'>Cereals or cereal products</title>
|
889
|
+
<docidentifier type='metanorma'>[3]</docidentifier>
|
890
|
+
</bibitem>
|
891
|
+
<bibitem id='ref3' type='standard'>
|
892
|
+
<title format='text/plain'>Cereals or cereal products</title>
|
893
|
+
<docidentifier type='metanorma-ordinal'>[4]</docidentifier>
|
894
|
+
<docidentifier>ABC</docidentifier>
|
895
|
+
</bibitem>
|
896
|
+
</references>
|
897
|
+
</bibliography>
|
898
|
+
PRESXML
|
899
|
+
expect(xmlpp(Nokogiri::XML(
|
900
|
+
IsoDoc::PresentationXMLConvert.new({})
|
901
|
+
.convert("test", input, true),
|
902
|
+
).at("//xmlns:bibliography").to_xml))
|
903
|
+
.to be_equivalent_to xmlpp(presxml)
|
904
|
+
end
|
905
|
+
|
906
|
+
it "enforces consistent references numbering with hidden items: metanorma identifiers" do
|
907
|
+
input = <<~INPUT
|
908
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
909
|
+
<bibdata>
|
910
|
+
<language>en</language>
|
911
|
+
</bibdata>
|
912
|
+
<bibliography><references id="_normative_references" obligation="informative" normative="false"><title>Bibliography</title>
|
913
|
+
<bibitem id="ref1" type="standard">
|
914
|
+
<title format="text/plain">Cereals or cereal products</title>
|
915
|
+
<docidentifier type="metanorma">[1]</docidentifier>
|
916
|
+
</bibitem>
|
917
|
+
<bibitem id="ref2" type="standard" hidden="true">
|
918
|
+
<title format="text/plain">Cereals or cereal products</title>
|
919
|
+
<docidentifier type="metanorma">[2]</docidentifier>
|
920
|
+
</bibitem>
|
921
|
+
<bibitem id="ref3" type="standard">
|
922
|
+
<title format="text/plain">Cereals or cereal products</title>
|
923
|
+
<docidentifier type="metanorma">[3]</docidentifier>
|
924
|
+
</bibitem>
|
925
|
+
</references></bibliography></iso-standard>
|
926
|
+
INPUT
|
927
|
+
presxml = <<~PRESXML
|
928
|
+
<bibliography>
|
929
|
+
<references id='_normative_references' obligation='informative' normative='false' displayorder='1'>
|
930
|
+
<title depth='1'>Bibliography</title>
|
931
|
+
<bibitem id='ref1' type='standard'>
|
932
|
+
<title format='text/plain'>Cereals or cereal products</title>
|
933
|
+
<docidentifier type='metanorma'>[1]</docidentifier>
|
934
|
+
</bibitem>
|
935
|
+
<bibitem id='ref2' type='standard' hidden='true'>
|
936
|
+
<title format='text/plain'>Cereals or cereal products</title>
|
937
|
+
<docidentifier type='metanorma'>[2]</docidentifier>
|
938
|
+
</bibitem>
|
939
|
+
<bibitem id='ref3' type='standard'>
|
940
|
+
<title format='text/plain'>Cereals or cereal products</title>
|
941
|
+
<docidentifier type='metanorma'>[3]</docidentifier>
|
942
|
+
</bibitem>
|
943
|
+
</references>
|
944
|
+
</bibliography>
|
945
|
+
PRESXML
|
946
|
+
expect(xmlpp(Nokogiri::XML(
|
947
|
+
IsoDoc::PresentationXMLConvert.new({})
|
948
|
+
.convert("test", input, true),
|
949
|
+
).at("//xmlns:bibliography").to_xml))
|
950
|
+
.to be_equivalent_to xmlpp(presxml)
|
951
|
+
end
|
952
|
+
|
953
|
+
it "enforces consistent references numbering with hidden items: metanorma-ordinal identifiers" do
|
954
|
+
input = <<~INPUT
|
955
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
956
|
+
<bibdata>
|
957
|
+
<language>en</language>
|
958
|
+
</bibdata>
|
959
|
+
<bibliography><references id="_normative_references" obligation="informative" normative="false"><title>Bibliography</title>
|
960
|
+
<bibitem id="ref1" type="standard">
|
961
|
+
<title format="text/plain">Cereals or cereal products</title>
|
962
|
+
<docidentifier>ABC</docidentifier>
|
963
|
+
</bibitem>
|
964
|
+
<bibitem id="ref2" type="standard" hidden="true">
|
965
|
+
<title format="text/plain">Cereals or cereal products</title>
|
966
|
+
<docidentifier>ABD</docidentifier>
|
967
|
+
</bibitem>
|
968
|
+
<bibitem id="ref3" type="standard">
|
969
|
+
<title format="text/plain">Cereals or cereal products</title>
|
970
|
+
<docidentifier>ABE</docidentifier>
|
971
|
+
</bibitem>
|
972
|
+
</references></bibliography></iso-standard>
|
973
|
+
INPUT
|
974
|
+
presxml = <<~PRESXML
|
975
|
+
<bibliography>
|
976
|
+
<references id='_normative_references' obligation='informative' normative='false' displayorder='1'>
|
977
|
+
<title depth='1'>Bibliography</title>
|
978
|
+
<bibitem id='ref1' type='standard'>
|
979
|
+
<title format='text/plain'>Cereals or cereal products</title>
|
980
|
+
<docidentifier type='metanorma-ordinal'>[1]</docidentifier>
|
981
|
+
<docidentifier>ABC</docidentifier>
|
982
|
+
</bibitem>
|
983
|
+
<bibitem id='ref2' type='standard' hidden='true'>
|
984
|
+
<title format='text/plain'>Cereals or cereal products</title>
|
985
|
+
<docidentifier>ABD</docidentifier>
|
986
|
+
</bibitem>
|
987
|
+
<bibitem id='ref3' type='standard'>
|
988
|
+
<title format='text/plain'>Cereals or cereal products</title>
|
989
|
+
<docidentifier type='metanorma-ordinal'>[2]</docidentifier>
|
990
|
+
<docidentifier>ABE</docidentifier>
|
991
|
+
</bibitem>
|
992
|
+
</references>
|
993
|
+
</bibliography>
|
994
|
+
PRESXML
|
995
|
+
expect(xmlpp(Nokogiri::XML(
|
996
|
+
IsoDoc::PresentationXMLConvert.new({})
|
997
|
+
.convert("test", input, true),
|
998
|
+
).at("//xmlns:bibliography").to_xml))
|
999
|
+
.to be_equivalent_to xmlpp(presxml)
|
1000
|
+
end
|
857
1001
|
end
|
data/spec/isodoc/xref_spec.rb
CHANGED
@@ -262,22 +262,22 @@ RSpec.describe IsoDoc do
|
|
262
262
|
</iso-standard>
|
263
263
|
INPUT
|
264
264
|
output = <<~OUTPUT
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
265
|
+
<foreword id='fwd' displayorder="1">
|
266
|
+
<p>
|
267
|
+
<xref target='N1'>Figure 1</xref>
|
268
|
+
<xref target='N2'>Figure (??)</xref>
|
269
|
+
<xref target='N'>Figure 2</xref>
|
270
|
+
<xref target='note1'>Figure 3</xref>
|
271
|
+
<xref target='note3'>Figure 4</xref>
|
272
|
+
<xref target='note4'>Figure 5</xref>
|
273
|
+
<xref target='note2'>Figure 6</xref>
|
274
|
+
<xref target='note51'>[note51]</xref>
|
275
|
+
<xref target='AN'>Figure A.1</xref>
|
276
|
+
<xref target='Anote1'>Figure (??)</xref>
|
277
|
+
<xref target='Anote2'>Figure A.2</xref>
|
278
|
+
<xref target='Anote3'>Figure A.3</xref>
|
279
|
+
</p>
|
280
|
+
</foreword>
|
281
281
|
OUTPUT
|
282
282
|
expect(xmlpp(Nokogiri.XML(IsoDoc::PresentationXMLConvert.new({})
|
283
283
|
.convert("test", input, true))
|
@@ -824,20 +824,20 @@ RSpec.describe IsoDoc do
|
|
824
824
|
</iso-standard>
|
825
825
|
INPUT
|
826
826
|
output = <<~OUTPUT
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
|
827
|
+
<foreword displayorder='1'>
|
828
|
+
<p>
|
829
|
+
<xref target='N1'>Clause 1, Permission 1</xref>
|
830
|
+
<xref target='N2'>Clause 1, Permission 1-1</xref>
|
831
|
+
<xref target='N'>Clause 1, Permission 1-1-1</xref>
|
832
|
+
<xref target='Q1'>Clause 1, Requirement 1-1</xref>
|
833
|
+
<xref target='R1'>Clause 1, Recommendation 1-1</xref>
|
834
|
+
<xref target='AN1'>Permission A.1</xref>
|
835
|
+
<xref target='AN2'>Permission A.1-1</xref>
|
836
|
+
<xref target='AN'>Permission A.1-1-1</xref>
|
837
|
+
<xref target='AQ1'>Requirement A.1-1</xref>
|
838
|
+
<xref target='AR1'>Recommendation A.1-1</xref>
|
839
|
+
</p>
|
840
|
+
</foreword>
|
841
841
|
OUTPUT
|
842
842
|
expect(xmlpp(Nokogiri.XML(IsoDoc::PresentationXMLConvert.new({})
|
843
843
|
.convert("test", input, true))
|
@@ -966,18 +966,18 @@ RSpec.describe IsoDoc do
|
|
966
966
|
</iso-standard>
|
967
967
|
INPUT
|
968
968
|
output = <<~OUTPUT
|
969
|
-
|
970
|
-
|
971
|
-
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
|
979
|
-
|
980
|
-
|
969
|
+
<foreword displayorder='1'>
|
970
|
+
<p>
|
971
|
+
<xref target='N1'>Table 1</xref>
|
972
|
+
<xref target='N2'>Table (??)</xref>
|
973
|
+
<xref target='N'>Table 2</xref>
|
974
|
+
<xref target='note1'>Table 3</xref>
|
975
|
+
<xref target='note2'>Table 4</xref>
|
976
|
+
<xref target='AN'>Table A.1</xref>
|
977
|
+
<xref target='Anote1'>Table (??)</xref>
|
978
|
+
<xref target='Anote2'>Table A.2</xref>
|
979
|
+
</p>
|
980
|
+
</foreword>
|
981
981
|
OUTPUT
|
982
982
|
expect(xmlpp(Nokogiri.XML(IsoDoc::PresentationXMLConvert.new({})
|
983
983
|
.convert("test", input, true))
|
@@ -1061,13 +1061,13 @@ RSpec.describe IsoDoc do
|
|
1061
1061
|
</iso-standard>
|
1062
1062
|
INPUT
|
1063
1063
|
output = <<~OUTPUT
|
1064
|
-
|
1065
|
-
|
1066
|
-
|
1067
|
-
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
1064
|
+
<foreword displayorder='1'>
|
1065
|
+
<p>
|
1066
|
+
<xref target='note1'>Clause 2.1, Note 1</xref>
|
1067
|
+
<xref target='note2'>Clause 2.1.1, Note 1</xref>
|
1068
|
+
<xref target='note3'>Clause 2.1.1, Note 2</xref>
|
1069
|
+
</p>
|
1070
|
+
</foreword>
|
1071
1071
|
OUTPUT
|
1072
1072
|
expect(xmlpp(Nokogiri.XML(IsoDoc::PresentationXMLConvert.new({})
|
1073
1073
|
.convert("test", input, true))
|
@@ -1151,13 +1151,13 @@ RSpec.describe IsoDoc do
|
|
1151
1151
|
</iso-standard>
|
1152
1152
|
INPUT
|
1153
1153
|
output = <<~OUTPUT
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1158
|
-
|
1159
|
-
|
1160
|
-
|
1154
|
+
<foreword displayorder='1'>
|
1155
|
+
<p>
|
1156
|
+
<xref target='note1'>Clause 2.1, Example</xref>
|
1157
|
+
<xref target='note2'>Clause 2.1.1, Example 1</xref>
|
1158
|
+
<xref target='note3'>Clause 2.1.1, Example 2</xref>
|
1159
|
+
</p>
|
1160
|
+
</foreword>
|
1161
1161
|
OUTPUT
|
1162
1162
|
expect(xmlpp(Nokogiri.XML(IsoDoc::PresentationXMLConvert.new({})
|
1163
1163
|
.convert("test", input, true))
|
@@ -1255,31 +1255,31 @@ RSpec.describe IsoDoc do
|
|
1255
1255
|
</iso-standard>
|
1256
1256
|
INPUT
|
1257
1257
|
output = <<~OUTPUT
|
1258
|
-
|
1259
|
-
|
1260
|
-
|
1261
|
-
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1265
|
-
|
1266
|
-
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1272
|
-
|
1273
|
-
|
1274
|
-
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1279
|
-
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1258
|
+
<foreword obligation='informative' displayorder='1'>
|
1259
|
+
<title>Foreword</title>
|
1260
|
+
<p id='A'>
|
1261
|
+
This is a preamble
|
1262
|
+
<xref target='C'>Introduction Subsection</xref>
|
1263
|
+
<xref target='C1'>Introduction, 2</xref>
|
1264
|
+
<xref target='D'>Clause 1</xref>
|
1265
|
+
<xref target='H'>Clause 3</xref>
|
1266
|
+
<xref target='I'>Clause 3.1</xref>
|
1267
|
+
<xref target='J'>Clause 3.1.1</xref>
|
1268
|
+
<xref target='K'>Clause 3.2</xref>
|
1269
|
+
<xref target='L'>Clause 4</xref>
|
1270
|
+
<xref target='M'>Clause 5</xref>
|
1271
|
+
<xref target='N'>Clause 5.1</xref>
|
1272
|
+
<xref target='O'>Clause 5.2</xref>
|
1273
|
+
<xref target='P'>Annex A</xref>
|
1274
|
+
<xref target='Q'>Annex A.1</xref>
|
1275
|
+
<xref target='Q1'>Annex A.1.1</xref>
|
1276
|
+
<xref target='QQ'>Annex B</xref>
|
1277
|
+
<xref target='QQ1'>Annex B</xref>
|
1278
|
+
<xref target='QQ2'>Annex B.1</xref>
|
1279
|
+
<xref target='R'>Clause 2</xref>
|
1280
|
+
<xref target='S'>Bibliography</xref>
|
1281
|
+
</p>
|
1282
|
+
</foreword>
|
1283
1283
|
OUTPUT
|
1284
1284
|
expect(xmlpp(Nokogiri.XML(IsoDoc::PresentationXMLConvert.new({})
|
1285
1285
|
.convert("test", input, true))
|
@@ -1720,31 +1720,31 @@ RSpec.describe IsoDoc do
|
|
1720
1720
|
</iso-standard>
|
1721
1721
|
INPUT
|
1722
1722
|
output = <<~OUTPUT
|
1723
|
-
|
1724
|
-
|
1725
|
-
|
1726
|
-
|
1727
|
-
|
1728
|
-
|
1729
|
-
|
1730
|
-
|
1731
|
-
|
1732
|
-
|
1733
|
-
|
1734
|
-
|
1735
|
-
|
1736
|
-
|
1737
|
-
|
1738
|
-
|
1739
|
-
|
1740
|
-
|
1741
|
-
|
1742
|
-
|
1743
|
-
|
1744
|
-
|
1745
|
-
|
1746
|
-
|
1747
|
-
|
1723
|
+
<foreword displayorder='1'>
|
1724
|
+
<p>
|
1725
|
+
<xref target='N1'>
|
1726
|
+
Introduction, Definition List:
|
1727
|
+
<stem type='MathML'>
|
1728
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1729
|
+
<msub>
|
1730
|
+
<mrow>
|
1731
|
+
<mover accent='true'>
|
1732
|
+
<mrow>
|
1733
|
+
<mi>e</mi>
|
1734
|
+
</mrow>
|
1735
|
+
<mo>^</mo>
|
1736
|
+
</mover>
|
1737
|
+
</mrow>
|
1738
|
+
<mrow>
|
1739
|
+
<mi>r</mi>
|
1740
|
+
</mrow>
|
1741
|
+
</msub>
|
1742
|
+
</math>
|
1743
|
+
<!-- (hat e)_((r)) -->
|
1744
|
+
</stem>
|
1745
|
+
</xref>
|
1746
|
+
</p>
|
1747
|
+
</foreword>
|
1748
1748
|
OUTPUT
|
1749
1749
|
expect(xmlpp(Nokogiri::XML(IsoDoc::PresentationXMLConvert.new({})
|
1750
1750
|
.convert("test", input, true))
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: isodoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciimath
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 4.3.4
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: isodoc-i18n
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.0.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.0.0
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: liquid
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,16 +84,16 @@ dependencies:
|
|
70
84
|
name: emf2svg
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- - "
|
87
|
+
- - "<="
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: '1'
|
89
|
+
version: '1.3'
|
76
90
|
type: :runtime
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- - "
|
94
|
+
- - "<="
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: '1'
|
96
|
+
version: '1.3'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: mathml2asciimath
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|