isodoc 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +14 -0
- data/isodoc.gemspec +2 -2
- data/lib/isodoc-yaml/i18n-en.yaml +55 -0
- data/lib/isodoc-yaml/i18n-fr.yaml +56 -0
- data/lib/isodoc/convert.rb +2 -1
- data/lib/isodoc/function/inline_simple.rb +10 -1
- data/lib/isodoc/function/section.rb +1 -1
- data/lib/isodoc/function/table.rb +10 -0
- data/lib/isodoc/function/to_word_html.rb +4 -2
- data/lib/isodoc/function/utils.rb +4 -4
- data/lib/isodoc/gem_tasks.rb +4 -0
- data/lib/isodoc/html_function/html.rb +7 -0
- data/lib/isodoc/html_function/mathvariant_to_plain.rb +82 -0
- data/lib/isodoc/html_function/postprocess.rb +32 -19
- data/lib/isodoc/metadata_contributor.rb +4 -3
- data/lib/isodoc/presentation_function/inline.rb +5 -1
- data/lib/isodoc/presentation_function/section.rb +9 -0
- data/lib/isodoc/presentation_xml_convert.rb +2 -0
- data/lib/isodoc/version.rb +1 -1
- data/lib/isodoc/word_function/inline.rb +2 -2
- data/lib/isodoc/word_function/postprocess.rb +38 -80
- data/lib/isodoc/word_function/postprocess_cover.rb +55 -0
- data/lib/isodoc/word_function/table.rb +10 -0
- data/lib/isodoc/xref.rb +1 -0
- data/lib/isodoc/xref/xref_counter.rb +44 -12
- data/lib/isodoc/xref/xref_gen.rb +18 -0
- data/lib/isodoc/xref/xref_sect_gen.rb +34 -27
- data/spec/isodoc/blocks_spec.rb +26 -73
- data/spec/isodoc/cleanup_spec.rb +0 -1
- data/spec/isodoc/inline_spec.rb +14 -14
- data/spec/isodoc/metadata_spec.rb +3 -1
- data/spec/isodoc/postproc_spec.rb +441 -3
- data/spec/isodoc/presentation_xml_spec.rb +5 -5
- data/spec/isodoc/table_spec.rb +28 -0
- data/spec/isodoc/xref_spec.rb +455 -2
- metadata +9 -8
data/lib/isodoc/xref/xref_gen.rb
CHANGED
@@ -66,6 +66,10 @@ module IsoDoc::XrefGen
|
|
66
66
|
"//sections/clause | //sections/definitions | "\
|
67
67
|
"//bibliography/references | //bibliography/clause".freeze
|
68
68
|
|
69
|
+
def sections_xpath
|
70
|
+
SECTIONS_XPATH
|
71
|
+
end
|
72
|
+
|
69
73
|
CHILD_NOTES_XPATH =
|
70
74
|
"./*[not(self::xmlns:clause) and not(self::xmlns:appendix) and "\
|
71
75
|
"not(self::xmlns:terms) and not(self::xmlns:definitions)]//xmlns:note | "\
|
@@ -136,5 +140,19 @@ module IsoDoc::XrefGen
|
|
136
140
|
end
|
137
141
|
end
|
138
142
|
end
|
143
|
+
|
144
|
+
def bookmark_anchor_names(sections)
|
145
|
+
sections.each do |s|
|
146
|
+
notes = s.xpath(ns(".//bookmark")) - s.xpath(ns(".//clause//bookmark")) -
|
147
|
+
s.xpath(ns(".//appendix//bookmark"))
|
148
|
+
notes.each do |n|
|
149
|
+
next if n["id"].nil? || n["id"].empty?
|
150
|
+
@anchors[n["id"]] = {
|
151
|
+
type: "bookmark", label: nil, value: nil,
|
152
|
+
xref: @anchors[s["id"]][:xref] }
|
153
|
+
end
|
154
|
+
bookmark_anchor_names(s.xpath(ns(CHILD_SECTIONS)))
|
155
|
+
end
|
156
|
+
end
|
139
157
|
end
|
140
158
|
end
|
@@ -1,23 +1,25 @@
|
|
1
1
|
module IsoDoc::XrefGen
|
2
2
|
module Sections
|
3
3
|
def back_anchor_names(docxml)
|
4
|
-
|
5
|
-
|
4
|
+
i = Counter.new("@")
|
5
|
+
docxml.xpath(ns("//annex")).each do |c|
|
6
|
+
i.increment(c)
|
7
|
+
annex_names(c, i.print)
|
8
|
+
end
|
9
|
+
docxml.xpath(ns(@klass.bibliography_xpath)).each do |b|
|
10
|
+
preface_names(b)
|
11
|
+
end
|
12
|
+
docxml.xpath(ns("//bibitem[not(ancestor::bibitem)]")).each do |ref|
|
13
|
+
reference_names(ref)
|
6
14
|
end
|
7
|
-
docxml.xpath(
|
8
|
-
ns(@klass.bibliography_xpath)).each do |b|
|
9
|
-
preface_names(b)
|
10
|
-
end
|
11
|
-
docxml.xpath(ns("//bibitem[not(ancestor::bibitem)]")).each do |ref|
|
12
|
-
reference_names(ref)
|
13
|
-
end
|
14
15
|
end
|
15
16
|
|
16
17
|
def initial_anchor_names(d)
|
17
18
|
d.xpath(ns("//preface/*")).each { |c| c.element? and preface_names(c) }
|
18
19
|
# potentially overridden in middle_section_asset_names()
|
19
20
|
sequential_asset_names(d.xpath(ns("//preface/*")))
|
20
|
-
n =
|
21
|
+
n = Counter.new
|
22
|
+
n = section_names(d.at(ns("//clause[@type = 'scope']")), n, 1)
|
21
23
|
n = section_names(d.at(ns(@klass.norm_ref_xpath)), n, 1)
|
22
24
|
n = section_names(d.at(ns("//sections/terms | "\
|
23
25
|
"//sections/clause[descendant::terms]")), n, 1)
|
@@ -52,8 +54,7 @@ module IsoDoc::XrefGen
|
|
52
54
|
label = title || parent_title
|
53
55
|
@anchors[clause["id"]] =
|
54
56
|
{ label: nil, level: level, xref: label, type: "clause" }
|
55
|
-
clause.xpath(ns(SUBCLAUSES)).
|
56
|
-
each_with_index do |c, i|
|
57
|
+
clause.xpath(ns(SUBCLAUSES)).each_with_index do |c, i|
|
57
58
|
preface_names1(c, c.at(ns("./title"))&.text, "#{label} #{i+1}",
|
58
59
|
level + 1)
|
59
60
|
end
|
@@ -67,21 +68,22 @@ module IsoDoc::XrefGen
|
|
67
68
|
sequential_asset_names(d.xpath(ns(middle_sections)))
|
68
69
|
end
|
69
70
|
|
70
|
-
def clause_names(docxml,
|
71
|
-
docxml.xpath(ns(@klass.middle_clause)).each_with_index do |c, i|
|
72
|
-
section_names(c,
|
71
|
+
def clause_names(docxml, n)
|
72
|
+
docxml.xpath(ns(@klass.middle_clause(docxml))).each_with_index do |c, i|
|
73
|
+
section_names(c, n, 1)
|
73
74
|
end
|
74
75
|
end
|
75
76
|
|
76
77
|
def section_names(clause, num, lvl)
|
77
78
|
return num if clause.nil?
|
78
|
-
num
|
79
|
+
num.increment(clause)
|
79
80
|
@anchors[clause["id"]] =
|
80
|
-
{ label: num.
|
81
|
+
{ label: num.print, xref: l10n("#{@labels["clause"]} #{num.print}"), level: lvl,
|
81
82
|
type: "clause" }
|
82
|
-
|
83
|
-
|
84
|
-
|
83
|
+
i = Counter.new
|
84
|
+
clause.xpath(ns(SUBCLAUSES)).each do |c|
|
85
|
+
i.increment(c)
|
86
|
+
section_names1(c, "#{num.print}.#{i.print}", lvl + 1)
|
85
87
|
end
|
86
88
|
num
|
87
89
|
end
|
@@ -90,9 +92,10 @@ module IsoDoc::XrefGen
|
|
90
92
|
@anchors[clause["id"]] =
|
91
93
|
{ label: num, level: level, xref: l10n("#{@labels["clause"]} #{num}"),
|
92
94
|
type: "clause" }
|
93
|
-
|
94
|
-
|
95
|
-
|
95
|
+
i = Counter.new
|
96
|
+
clause.xpath(ns(SUBCLAUSES)).each do |c|
|
97
|
+
i.increment(c)
|
98
|
+
section_names1(c, "#{num}.#{i.print}", level + 1)
|
96
99
|
end
|
97
100
|
end
|
98
101
|
|
@@ -118,8 +121,10 @@ module IsoDoc::XrefGen
|
|
118
121
|
if a = single_annex_special_section(clause)
|
119
122
|
annex_names1(a, "#{num}", 1)
|
120
123
|
else
|
121
|
-
|
122
|
-
|
124
|
+
i = Counter.new
|
125
|
+
clause.xpath(ns(SUBCLAUSES)).each do |c|
|
126
|
+
i.increment(c)
|
127
|
+
annex_names1(c, "#{num}.#{i.print}", 2)
|
123
128
|
end
|
124
129
|
end
|
125
130
|
hierarchical_asset_names(clause, num)
|
@@ -128,8 +133,10 @@ module IsoDoc::XrefGen
|
|
128
133
|
def annex_names1(clause, num, level)
|
129
134
|
@anchors[clause["id"]] = { label: num, xref: "#{@labels["annex"]} #{num}",
|
130
135
|
level: level, type: "clause" }
|
131
|
-
|
132
|
-
|
136
|
+
i = Counter.new
|
137
|
+
clause.xpath(ns(SUBCLAUSES)).each_with_index do |c|
|
138
|
+
i.increment(c)
|
139
|
+
annex_names1(c, "#{num}.#{i.print}", level + 1)
|
133
140
|
end
|
134
141
|
end
|
135
142
|
|
data/spec/isodoc/blocks_spec.rb
CHANGED
@@ -534,7 +534,7 @@ INPUT
|
|
534
534
|
<div>
|
535
535
|
<h1 class='ForewordTitle'>Foreword</h1>
|
536
536
|
<p id='A'>
|
537
|
-
ABC
|
537
|
+
ABC
|
538
538
|
<div id='B' class='Note'>
|
539
539
|
<p>
|
540
540
|
<span class='note_label'>NOTE 1</span>
|
@@ -611,8 +611,8 @@ INPUT
|
|
611
611
|
OUTPUT
|
612
612
|
end
|
613
613
|
|
614
|
-
it "processes figures
|
615
|
-
|
614
|
+
it "processes figures" do
|
615
|
+
input = <<~INPUT
|
616
616
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
617
617
|
<preface><foreword>
|
618
618
|
<figure id="figureA-1" keep-with-next="true" keep-lines-together="true">
|
@@ -620,6 +620,7 @@ OUTPUT
|
|
620
620
|
<image src="rice_images/rice_image1.png" height="20" width="30" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" mimetype="image/png" alt="alttext" title="titletxt"/>
|
621
621
|
<image src="rice_images/rice_image1.png" height="20" width="auto" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f1" mimetype="image/png"/>
|
622
622
|
<image src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7" height="20" width="auto" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f2" mimetype="image/png"/>
|
623
|
+
<image src="data:application/xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjw/eG1sLXN0eWxlc2hlZXQgdHlwZT0idGV4dC94c2wiIGhyZWY9Ii4uLy4uLy4uL3hzbC9yZXNfZG9jL2ltZ2ZpbGUueHNsIj8+CjwhRE9DVFlQRSBpbWdmaWxlLmNvbnRlbnQgU1lTVEVNICIuLi8uLi8uLi9kdGQvdGV4dC5lbnQiPgo8aW1nZmlsZS5jb250ZW50IG1vZHVsZT0iZnVuZGFtZW50YWxzX29mX3Byb2R1Y3RfZGVzY3JpcHRpb25fYW5kX3N1cHBvcnQiIGZpbGU9ImFjdGlvbl9zY2hlbWFleHBnMS54bWwiPgo8aW1nIHNyYz0iYWN0aW9uX3NjaGVtYWV4cGcxLmdpZiI+CjxpbWcuYXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIyMTAsMTg2LDM0MywyMjciIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9iYXNpY19hdHRyaWJ1dGVfc2NoZW1hL2Jhc2ljX2F0dHJpYnV0ZV9zY2hlbWEueG1sIiAvPgo8aW1nLmFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMTAsMTAsOTYsNTEiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9hY3Rpb25fc2NoZW1hL2FjdGlvbl9zY2hlbWEueG1sIiAvPgo8aW1nLmFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjEwLDI2NCwzNTgsMzA1IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvc3VwcG9ydF9yZXNvdXJjZV9zY2hlbWEvc3VwcG9ydF9yZXNvdXJjZV9zY2hlbWEueG1sIiAvPgo8L2ltZz4KPC9pbWdmaWxlLmNvbnRlbnQ+Cg==" height="20" width="auto" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f2" mimetype="application/xml"/>
|
623
624
|
<fn reference="a">
|
624
625
|
<p id="_ef2c85b8-5a5a-4ecd-a1e6-92acefaaa852">The time <stem type="AsciiMath">t_90</stem> was estimated to be 18,2 min for this example.</p>
|
625
626
|
</fn>
|
@@ -629,16 +630,18 @@ OUTPUT
|
|
629
630
|
</dl>
|
630
631
|
</figure>
|
631
632
|
<figure id="figure-B">
|
632
|
-
<pre alt="A B">A
|
633
|
+
<pre alt="A B">A <
|
633
634
|
B</pre>
|
634
635
|
</figure>
|
635
636
|
<figure id="figure-C" unnumbered="true">
|
636
|
-
<pre>A
|
637
|
+
<pre>A <
|
637
638
|
B</pre>
|
638
639
|
</figure>
|
639
640
|
</foreword></preface>
|
640
641
|
</iso-standard>
|
641
642
|
INPUT
|
643
|
+
|
644
|
+
presxml = <<~OUTPUT
|
642
645
|
<?xml version='1.0'?>
|
643
646
|
<iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
|
644
647
|
<preface><foreword>
|
@@ -647,6 +650,7 @@ B</pre>
|
|
647
650
|
<image src="rice_images/rice_image1.png" height="20" width="30" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" mimetype="image/png" alt="alttext" title="titletxt"/>
|
648
651
|
<image src="rice_images/rice_image1.png" height="20" width="auto" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f1" mimetype="image/png"/>
|
649
652
|
<image src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7" height="20" width="auto" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f2" mimetype="image/png"/>
|
653
|
+
<image src='data:application/xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjw/eG1sLXN0eWxlc2hlZXQgdHlwZT0idGV4dC94c2wiIGhyZWY9Ii4uLy4uLy4uL3hzbC9yZXNfZG9jL2ltZ2ZpbGUueHNsIj8+CjwhRE9DVFlQRSBpbWdmaWxlLmNvbnRlbnQgU1lTVEVNICIuLi8uLi8uLi9kdGQvdGV4dC5lbnQiPgo8aW1nZmlsZS5jb250ZW50IG1vZHVsZT0iZnVuZGFtZW50YWxzX29mX3Byb2R1Y3RfZGVzY3JpcHRpb25fYW5kX3N1cHBvcnQiIGZpbGU9ImFjdGlvbl9zY2hlbWFleHBnMS54bWwiPgo8aW1nIHNyYz0iYWN0aW9uX3NjaGVtYWV4cGcxLmdpZiI+CjxpbWcuYXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIyMTAsMTg2LDM0MywyMjciIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9iYXNpY19hdHRyaWJ1dGVfc2NoZW1hL2Jhc2ljX2F0dHJpYnV0ZV9zY2hlbWEueG1sIiAvPgo8aW1nLmFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMTAsMTAsOTYsNTEiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9hY3Rpb25fc2NoZW1hL2FjdGlvbl9zY2hlbWEueG1sIiAvPgo8aW1nLmFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjEwLDI2NCwzNTgsMzA1IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvc3VwcG9ydF9yZXNvdXJjZV9zY2hlbWEvc3VwcG9ydF9yZXNvdXJjZV9zY2hlbWEueG1sIiAvPgo8L2ltZz4KPC9pbWdmaWxlLmNvbnRlbnQ+Cg==' height='20' width='auto' id='_8357ede4-6d44-4672-bac4-9a85e82ab7f2' mimetype='application/xml'/>
|
650
654
|
<fn reference="a">
|
651
655
|
<p id="_ef2c85b8-5a5a-4ecd-a1e6-92acefaaa852">The time <stem type="AsciiMath">t_90</stem> was estimated to be 18,2 min for this example.</p>
|
652
656
|
</fn>
|
@@ -657,47 +661,18 @@ B</pre>
|
|
657
661
|
</figure>
|
658
662
|
<figure id="figure-B">
|
659
663
|
<name>Figure 2</name>
|
660
|
-
<pre alt="A B">A
|
664
|
+
<pre alt="A B">A <
|
661
665
|
B</pre>
|
662
666
|
</figure>
|
663
667
|
<figure id="figure-C" unnumbered="true">
|
664
|
-
<pre>A
|
668
|
+
<pre>A <
|
665
669
|
B</pre>
|
666
670
|
</figure>
|
667
671
|
</foreword></preface>
|
668
672
|
</iso-standard>
|
669
673
|
OUTPUT
|
670
|
-
end
|
671
674
|
|
672
|
-
|
673
|
-
expect(xmlpp(strip_guid(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
674
|
-
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
675
|
-
<preface><foreword>
|
676
|
-
<figure id="figureA-1" keep-with-next="true" keep-lines-together="true">
|
677
|
-
<name>Figure 1 — Split-it-right <em>sample</em> divider<fn reference="1"><p>X</p></fn></name>
|
678
|
-
<image src="rice_images/rice_image1.png" height="20" width="30" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" mimetype="image/png" alt="alttext" title="titletxt"/>
|
679
|
-
<image src="rice_images/rice_image1.png" height="20" width="auto" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f1" mimetype="image/png"/>
|
680
|
-
<image src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7" height="20" width="auto" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f2" mimetype="image/png"/>
|
681
|
-
<fn reference="a">
|
682
|
-
<p id="_ef2c85b8-5a5a-4ecd-a1e6-92acefaaa852">The time <stem type="AsciiMath">t_90</stem> was estimated to be 18,2 min for this example.</p>
|
683
|
-
</fn>
|
684
|
-
<dl>
|
685
|
-
<dt>A</dt>
|
686
|
-
<dd><p>B</p></dd>
|
687
|
-
</dl>
|
688
|
-
</figure>
|
689
|
-
<figure id="figure-B">
|
690
|
-
<name>Figure 2</name>
|
691
|
-
<pre alt="A B">A <
|
692
|
-
B</pre>
|
693
|
-
</figure>
|
694
|
-
<figure id="figure-C" unnumbered="true">
|
695
|
-
<pre>A <
|
696
|
-
B</pre>
|
697
|
-
</figure>
|
698
|
-
</foreword></preface>
|
699
|
-
</iso-standard>
|
700
|
-
INPUT
|
675
|
+
html = <<~OUTPUT
|
701
676
|
#{HTML_HDR}
|
702
677
|
<br/>
|
703
678
|
<div>
|
@@ -707,6 +682,7 @@ B</pre>
|
|
707
682
|
<img src="rice_images/rice_image1.png" height="20" width="30" alt="alttext" title="titletxt"/>
|
708
683
|
<img src="rice_images/rice_image1.png" height="20" width="auto"/>
|
709
684
|
<img src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7" height="20" width="auto"/>
|
685
|
+
<img src='data:application/xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjw/eG1sLXN0eWxlc2hlZXQgdHlwZT0idGV4dC94c2wiIGhyZWY9Ii4uLy4uLy4uL3hzbC9yZXNfZG9jL2ltZ2ZpbGUueHNsIj8+CjwhRE9DVFlQRSBpbWdmaWxlLmNvbnRlbnQgU1lTVEVNICIuLi8uLi8uLi9kdGQvdGV4dC5lbnQiPgo8aW1nZmlsZS5jb250ZW50IG1vZHVsZT0iZnVuZGFtZW50YWxzX29mX3Byb2R1Y3RfZGVzY3JpcHRpb25fYW5kX3N1cHBvcnQiIGZpbGU9ImFjdGlvbl9zY2hlbWFleHBnMS54bWwiPgo8aW1nIHNyYz0iYWN0aW9uX3NjaGVtYWV4cGcxLmdpZiI+CjxpbWcuYXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIyMTAsMTg2LDM0MywyMjciIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9iYXNpY19hdHRyaWJ1dGVfc2NoZW1hL2Jhc2ljX2F0dHJpYnV0ZV9zY2hlbWEueG1sIiAvPgo8aW1nLmFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMTAsMTAsOTYsNTEiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9hY3Rpb25fc2NoZW1hL2FjdGlvbl9zY2hlbWEueG1sIiAvPgo8aW1nLmFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjEwLDI2NCwzNTgsMzA1IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvc3VwcG9ydF9yZXNvdXJjZV9zY2hlbWEvc3VwcG9ydF9yZXNvdXJjZV9zY2hlbWEueG1sIiAvPgo8L2ltZz4KPC9pbWdmaWxlLmNvbnRlbnQ+Cg==' height='20' width='auto'/>
|
710
686
|
<a href="#_" class="TableFootnoteRef">a</a><aside class="footnote"><div id="fn:_"><span><span id="_" class="TableFootnoteRef">a</span>  </span>
|
711
687
|
<p id="_">The time <span class="stem">(#(t_90)#)</span> was estimated to be 18,2 min for this example.</p>
|
712
688
|
</div></aside>
|
@@ -717,12 +693,12 @@ B</pre>
|
|
717
693
|
</a>
|
718
694
|
</p></div>
|
719
695
|
<div class="figure" id="figure-B">
|
720
|
-
<pre>A
|
696
|
+
<pre>A <
|
721
697
|
B</pre>
|
722
698
|
<p class="FigureTitle" style="text-align:center;">Figure 2</p>
|
723
699
|
</div>
|
724
700
|
<div class="figure" id="figure-C">
|
725
|
-
<pre>A
|
701
|
+
<pre>A <
|
726
702
|
B</pre>
|
727
703
|
</div>
|
728
704
|
</div>
|
@@ -734,38 +710,8 @@ B</pre>
|
|
734
710
|
</body>
|
735
711
|
</html>
|
736
712
|
OUTPUT
|
737
|
-
end
|
738
713
|
|
739
|
-
|
740
|
-
FileUtils.rm_rf "spec/assets/odf1.emf"
|
741
|
-
expect(xmlpp(strip_guid(IsoDoc::WordConvert.new({}).convert("test", <<~"INPUT", true).sub(/['"][^'".]+\.gif['"]/, "'_.gif'").gsub(/mso-bookmark:_Ref\d+/, "mso-bookmark:_Ref")))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
742
|
-
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
743
|
-
<preface><foreword>
|
744
|
-
<figure id="figureA-1" keep-with-next="true" keep-lines-together="true">
|
745
|
-
<name>Figure 1 — Split-it-right <em>sample</em> divider<fn reference="1"><p>X</p></fn></name>
|
746
|
-
<image src="rice_images/rice_image1.png" height="20" width="30" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" mimetype="image/png" alt="alttext" title="titletxt"/>
|
747
|
-
<image src="rice_images/rice_image1.png" height="20" width="auto" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f1" mimetype="image/png"/>
|
748
|
-
<image src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7" height="20" width="auto" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f2" mimetype="image/png"/>
|
749
|
-
<fn reference="a">
|
750
|
-
<p id="_ef2c85b8-5a5a-4ecd-a1e6-92acefaaa852">The time <stem type="AsciiMath">t_90</stem> was estimated to be 18,2 min for this example.</p>
|
751
|
-
</fn>
|
752
|
-
<dl>
|
753
|
-
<dt>A</dt>
|
754
|
-
<dd><p>B</p></dd>
|
755
|
-
</dl>
|
756
|
-
</figure>
|
757
|
-
<figure id="figure-B">
|
758
|
-
<name>Figure 2</name>
|
759
|
-
<pre alt="A B">A <
|
760
|
-
B</pre>
|
761
|
-
</figure>
|
762
|
-
<figure id="figure-C" unnumbered="true">
|
763
|
-
<pre>A <
|
764
|
-
B</pre>
|
765
|
-
</figure>
|
766
|
-
</foreword></preface>
|
767
|
-
</iso-standard>
|
768
|
-
INPUT
|
714
|
+
word = <<~OUTPUT
|
769
715
|
<html xmlns:epub="http://www.idpf.org/2007/ops" lang="en">
|
770
716
|
<head><style/></head>
|
771
717
|
<body lang="EN-US" link="blue" vlink="#954F72">
|
@@ -781,6 +727,7 @@ B</pre>
|
|
781
727
|
<img src="rice_images/rice_image1.png" height="20" width="30" alt="alttext" title="titletxt"/>
|
782
728
|
<img src="rice_images/rice_image1.png" height='20' width='auto'/>
|
783
729
|
<img src='_.gif' height='20' width='auto'/>
|
730
|
+
<img src='_.xml' height='20' width='auto'/>
|
784
731
|
<a href="#_" class="TableFootnoteRef">a</a><aside><div id="ftn_"><span><span id="_" class="TableFootnoteRef">a</span><span style="mso-tab-count:1">  </span></span>
|
785
732
|
<p id="_">The time <span class="stem">(#(t_90)#)</span> was estimated to be 18,2 min for this example.</p>
|
786
733
|
</div></aside>
|
@@ -795,12 +742,12 @@ B</pre>
|
|
795
742
|
</p>
|
796
743
|
</div>
|
797
744
|
<div class="figure" id="figure-B">
|
798
|
-
<pre>A
|
745
|
+
<pre>A <
|
799
746
|
B</pre>
|
800
747
|
<p class="FigureTitle" style="text-align:center;">Figure 2</p>
|
801
748
|
</div>
|
802
749
|
<div id='figure-C' class='figure'>
|
803
|
-
<pre>A
|
750
|
+
<pre>A < B</pre>
|
804
751
|
</div>
|
805
752
|
</div>
|
806
753
|
<p> </p>
|
@@ -815,17 +762,22 @@ B</pre>
|
|
815
762
|
</body>
|
816
763
|
</html>
|
817
764
|
OUTPUT
|
765
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", input, true).gsub(/\</, "<"))).to be_equivalent_to xmlpp(presxml)
|
766
|
+
expect(xmlpp(strip_guid(IsoDoc::HtmlConvert.new({}).convert("test", presxml, true)))).to be_equivalent_to xmlpp(html)
|
767
|
+
FileUtils.rm_rf "spec/assets/odf1.emf"
|
768
|
+
expect(xmlpp(strip_guid(IsoDoc::WordConvert.new({}).convert("test", presxml, true).gsub(/['"][^'".]+\.(gif|xml)['"]/, "'_.\\1'").gsub(/mso-bookmark:_Ref\d+/, "mso-bookmark:_Ref")))).to be_equivalent_to xmlpp(word)
|
818
769
|
end
|
819
770
|
|
820
771
|
it "converts SVG (Word)" do
|
821
772
|
FileUtils.rm_rf "spec/assets/odf1.emf"
|
822
|
-
expect(xmlpp(strip_guid(IsoDoc::WordConvert.new({}).convert("test", <<~"INPUT", true).gsub(/['"][^'".]+(?<!odf1)(?<!odf)\.emf['"]/, "'_.emf'").gsub(/mso-bookmark:_Ref\d+/, "mso-bookmark:_Ref")))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
773
|
+
expect(xmlpp(strip_guid(IsoDoc::WordConvert.new({}).convert("test", <<~"INPUT", true).gsub(/['"][^'".]+(?<!odf1)(?<!odf)\.emf['"]/, "'_.emf'").gsub(/['"][^'".]+\.(gif|xml)['"]/, "'_.\\1'").gsub(/mso-bookmark:_Ref\d+/, "mso-bookmark:_Ref")))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
823
774
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
824
775
|
<preface><foreword>
|
825
776
|
<figure id="figureA-1">
|
826
777
|
<image src="spec/assets/odf.svg" mimetype="image/svg+xml"/>
|
827
778
|
<image src="spec/assets/odf1.svg" mimetype="image/svg+xml"/>
|
828
779
|
<image src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj4KICA8Y2lyY2xlIGZpbGw9IiMwMDkiIHI9IjQ1IiBjeD0iNTAiIGN5PSI1MCIvPgogIDxwYXRoIGQ9Ik0zMywyNkg3OEEzNywzNywwLDAsMSwzMyw4M1Y1N0g1OVY0M0gzM1oiIGZpbGw9IiNGRkYiLz4KPC9zdmc+Cg==" id="_d3731866-1a07-435a-a6c2-1acd41023a4e" mimetype="image/svg+xml" height="auto" width="auto"/>
|
780
|
+
<image src="data:application/xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjw/eG1sLXN0eWxlc2hlZXQgdHlwZT0idGV4dC94c2wiIGhyZWY9Ii4uLy4uLy4uL3hzbC9yZXNfZG9jL2ltZ2ZpbGUueHNsIj8+CjwhRE9DVFlQRSBpbWdmaWxlLmNvbnRlbnQgU1lTVEVNICIuLi8uLi8uLi9kdGQvdGV4dC5lbnQiPgo8aW1nZmlsZS5jb250ZW50IG1vZHVsZT0iZnVuZGFtZW50YWxzX29mX3Byb2R1Y3RfZGVzY3JpcHRpb25fYW5kX3N1cHBvcnQiIGZpbGU9ImFjdGlvbl9zY2hlbWFleHBnMS54bWwiPgo8aW1nIHNyYz0iYWN0aW9uX3NjaGVtYWV4cGcxLmdpZiI+CjxpbWcuYXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIyMTAsMTg2LDM0MywyMjciIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9iYXNpY19hdHRyaWJ1dGVfc2NoZW1hL2Jhc2ljX2F0dHJpYnV0ZV9zY2hlbWEueG1sIiAvPgo8aW1nLmFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMTAsMTAsOTYsNTEiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9hY3Rpb25fc2NoZW1hL2FjdGlvbl9zY2hlbWEueG1sIiAvPgo8aW1nLmFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjEwLDI2NCwzNTgsMzA1IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvc3VwcG9ydF9yZXNvdXJjZV9zY2hlbWEvc3VwcG9ydF9yZXNvdXJjZV9zY2hlbWEueG1sIiAvPgo8L2ltZz4KPC9pbWdmaWxlLmNvbnRlbnQ+Cg==" height="20" width="auto" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f2" mimetype="application/xml"/>
|
829
781
|
</figure>
|
830
782
|
</foreword></preface>
|
831
783
|
</iso-standard>
|
@@ -852,6 +804,7 @@ B</pre>
|
|
852
804
|
<img src='spec/assets/odf.emf'/>
|
853
805
|
<img src='spec/assets/odf1.emf'/>
|
854
806
|
<img src='_.emf' height='auto' width='auto'/>
|
807
|
+
<img src='_.xml' height='20' width='auto'/>
|
855
808
|
</div>
|
856
809
|
</div>
|
857
810
|
<p> </p>
|
data/spec/isodoc/cleanup_spec.rb
CHANGED
data/spec/isodoc/inline_spec.rb
CHANGED
@@ -43,14 +43,14 @@ INPUT
|
|
43
43
|
OUTPUT
|
44
44
|
end
|
45
45
|
|
46
|
-
it "processes inline formatting" do
|
46
|
+
it "processes inline formatting (HTML)" do
|
47
47
|
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
48
48
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
49
49
|
<preface><foreword>
|
50
50
|
<p>
|
51
51
|
<em>A</em> <strong>B</strong> <sup>C</sup> <sub>D</sub> <tt>E</tt>
|
52
52
|
<strike>F</strike> <smallcap>G</smallcap> <keyword>I</keyword> <br/> <hr/>
|
53
|
-
<bookmark id="H"/> <pagebreak/> <pagebreak orientation="landscape"/>
|
53
|
+
<bookmark id="H"/> <pagebreak/> <pagebreak orientation="landscape"/> <underline>J</underline>
|
54
54
|
</p>
|
55
55
|
</foreword></preface>
|
56
56
|
<sections>
|
@@ -64,6 +64,7 @@ OUTPUT
|
|
64
64
|
<i>A</i> <b>B</b> <sup>C</sup> <sub>D</sub> <tt>E</tt>
|
65
65
|
<s>F</s> <span style="font-variant:small-caps;">G</span> <span class="keyword">I</span> <br/> <hr/>
|
66
66
|
<a id="H"/> <br/> <br/>
|
67
|
+
<span style='text-decoration: underline;'>J</span>
|
67
68
|
</p>
|
68
69
|
</div>
|
69
70
|
<p class="zzSTDTitle1"/>
|
@@ -80,7 +81,7 @@ OUTPUT
|
|
80
81
|
<p>
|
81
82
|
<em>A</em> <strong>B</strong> <sup>C</sup> <sub>D</sub> <tt>E</tt>
|
82
83
|
<strike>F</strike> <smallcap>G</smallcap> <keyword>I</keyword> <br/> <hr/>
|
83
|
-
<bookmark id="H"/> <pagebreak/> <pagebreak orientation="landscape"/>
|
84
|
+
<bookmark id="H"/> <pagebreak/> <pagebreak orientation="landscape"/> <underline>J</underline>
|
84
85
|
</p>
|
85
86
|
</clause></sections>
|
86
87
|
</iso-standard>
|
@@ -107,6 +108,7 @@ OUTPUT
|
|
107
108
|
<p>
|
108
109
|
<br clear='all' class='section' orientation='landscape'/>
|
109
110
|
</p>
|
111
|
+
<u>J</u>
|
110
112
|
</p>
|
111
113
|
</div>
|
112
114
|
</div>
|
@@ -117,7 +119,7 @@ OUTPUT
|
|
117
119
|
end
|
118
120
|
|
119
121
|
it "ignores index entries" do
|
120
|
-
expect(xmlpp(IsoDoc::
|
122
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
121
123
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
122
124
|
<preface><foreword>
|
123
125
|
<p><index primary="A" secondary="B" tertiary="C"/></p>
|
@@ -125,16 +127,14 @@ OUTPUT
|
|
125
127
|
<sections>
|
126
128
|
</iso-standard>
|
127
129
|
INPUT
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
</body>
|
137
|
-
</html>
|
130
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml' type='presentation'>
|
131
|
+
<preface>
|
132
|
+
<foreword>
|
133
|
+
<p/>
|
134
|
+
</foreword>
|
135
|
+
</preface>
|
136
|
+
<sections> </sections>
|
137
|
+
</iso-standard>
|
138
138
|
OUTPUT
|
139
139
|
end
|
140
140
|
|
@@ -60,6 +60,8 @@ RSpec.describe IsoDoc do
|
|
60
60
|
</name>
|
61
61
|
<affiliation>
|
62
62
|
<organization><name>Slate Inc.</name>
|
63
|
+
<subdivision>Hermeneutics Unit</subdivision>
|
64
|
+
<subdivision>Exegesis Subunit</subdivision>
|
63
65
|
<address>
|
64
66
|
<formattedAddress>Bedrock</formattedAddress>
|
65
67
|
</address>
|
@@ -106,7 +108,7 @@ INPUT
|
|
106
108
|
:activateddate=>"2013",
|
107
109
|
:agency=>"ISO",
|
108
110
|
:authors=>["Barney Rubble", "Fred Flintstone"],
|
109
|
-
:authors_affiliations=>{"Slate Inc., Bedrock"=>["Barney Rubble"], ""=>["Fred Flintstone"]},
|
111
|
+
:authors_affiliations=>{"Slate Inc., Hermeneutics Unit, Exegesis Subunit, Bedrock"=>["Barney Rubble"], ""=>["Fred Flintstone"]},
|
110
112
|
:circulateddate=>"2015",
|
111
113
|
:confirmeddate=>"2017",
|
112
114
|
:copieddate=>"2016",
|