isodoc 1.1.4 → 1.2.4
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/lib/isodoc-yaml/i18n-en.yaml +4 -1
- data/lib/isodoc-yaml/i18n-fr.yaml +4 -1
- data/lib/isodoc-yaml/i18n-zh-Hans.yaml +4 -1
- data/lib/isodoc.rb +1 -0
- data/lib/isodoc/base_style/metanorma_word.css +6 -0
- data/lib/isodoc/base_style/metanorma_word.scss +6 -0
- data/lib/isodoc/common.rb +0 -2
- data/lib/isodoc/convert.rb +34 -28
- data/lib/isodoc/function/blocks.rb +11 -22
- data/lib/isodoc/function/blocks_example_note.rb +14 -15
- data/lib/isodoc/function/cleanup.rb +5 -4
- data/lib/isodoc/function/inline.rb +6 -76
- data/lib/isodoc/function/references.rb +13 -10
- data/lib/isodoc/function/reqt.rb +12 -11
- data/lib/isodoc/function/section.rb +51 -54
- data/lib/isodoc/function/table.rb +2 -6
- data/lib/isodoc/function/terms.rb +13 -6
- data/lib/isodoc/function/to_word_html.rb +3 -0
- data/lib/isodoc/function/utils.rb +6 -5
- data/lib/isodoc/html_function/html.rb +1 -1
- data/lib/isodoc/{function/i18n.rb → i18n.rb} +37 -37
- data/lib/isodoc/metadata.rb +4 -3
- data/lib/isodoc/metadata_date.rb +1 -1
- data/lib/isodoc/presentation_function/block.rb +152 -0
- data/lib/isodoc/presentation_function/inline.rb +131 -0
- data/lib/isodoc/presentation_function/section.rb +46 -0
- data/lib/isodoc/presentation_xml_convert.rb +39 -5
- data/lib/isodoc/version.rb +1 -1
- data/lib/isodoc/word_function/body.rb +13 -8
- data/lib/isodoc/word_function/inline.rb +3 -1
- data/lib/isodoc/word_function/postprocess.rb +1 -1
- data/lib/isodoc/word_function/table.rb +3 -2
- data/lib/isodoc/xref.rb +6 -3
- data/lib/isodoc/xref/xref_counter.rb +21 -7
- data/lib/isodoc/xref/xref_gen.rb +27 -4
- data/lib/isodoc/xref/xref_sect_gen.rb +3 -3
- data/spec/assets/i18n.yaml +12 -1
- data/spec/isodoc/blocks_spec.rb +1338 -147
- data/spec/isodoc/cleanup_spec.rb +5 -3
- data/spec/isodoc/footnotes_spec.rb +2 -2
- data/spec/isodoc/i18n_spec.rb +679 -110
- data/spec/isodoc/inline_spec.rb +323 -142
- data/spec/isodoc/lists_spec.rb +2 -2
- data/spec/isodoc/postproc_spec.rb +1347 -1333
- data/spec/isodoc/ref_spec.rb +181 -3
- data/spec/isodoc/section_spec.rb +633 -681
- data/spec/isodoc/table_spec.rb +386 -136
- data/spec/isodoc/terms_spec.rb +111 -79
- data/spec/isodoc/xref_spec.rb +1597 -1186
- metadata +6 -3
@@ -1,3 +1,7 @@
|
|
1
|
+
require_relative "presentation_function/block"
|
2
|
+
require_relative "presentation_function/inline"
|
3
|
+
require_relative "presentation_function/section"
|
4
|
+
|
1
5
|
module IsoDoc
|
2
6
|
class PresentationXMLConvert < ::IsoDoc::Convert
|
3
7
|
def initialize(options)
|
@@ -9,21 +13,51 @@ module IsoDoc
|
|
9
13
|
def convert1(docxml, filename, dir)
|
10
14
|
@xrefs.parse docxml
|
11
15
|
info docxml, nil
|
16
|
+
conversions(docxml)
|
12
17
|
docxml.to_xml
|
13
18
|
end
|
14
19
|
|
20
|
+
def conversions(docxml)
|
21
|
+
section docxml
|
22
|
+
block docxml
|
23
|
+
inline docxml
|
24
|
+
end
|
25
|
+
|
26
|
+
def section(docxml)
|
27
|
+
clause docxml
|
28
|
+
annex docxml
|
29
|
+
term docxml
|
30
|
+
end
|
31
|
+
|
32
|
+
def block(docxml)
|
33
|
+
amend docxml
|
34
|
+
table docxml
|
35
|
+
figure docxml
|
36
|
+
sourcecode docxml
|
37
|
+
formula docxml
|
38
|
+
example docxml
|
39
|
+
termexample docxml
|
40
|
+
note docxml
|
41
|
+
termnote docxml
|
42
|
+
permission docxml
|
43
|
+
requirement docxml
|
44
|
+
recommendation docxml
|
45
|
+
end
|
46
|
+
|
47
|
+
def inline(docxml)
|
48
|
+
xref docxml
|
49
|
+
eref docxml
|
50
|
+
origin docxml
|
51
|
+
quotesource docxml
|
52
|
+
end
|
53
|
+
|
15
54
|
def postprocess(result, filename, dir)
|
16
|
-
#result = from_xhtml(cleanup(to_xhtml(textcleanup(result))))
|
17
55
|
toXML(result, filename)
|
18
56
|
@files_to_delete.each { |f| FileUtils.rm_rf f }
|
19
57
|
end
|
20
58
|
|
21
59
|
def toXML(result, filename)
|
22
|
-
#result = (from_xhtml(html_cleanup(to_xhtml(result))))
|
23
|
-
#result = from_xhtml(move_images(to_xhtml(result)))
|
24
|
-
#result = html5(script_cdata(inject_script(result)))
|
25
60
|
File.open(filename, "w:UTF-8") { |f| f.write(result) }
|
26
61
|
end
|
27
62
|
end
|
28
63
|
end
|
29
|
-
|
data/lib/isodoc/version.rb
CHANGED
@@ -27,6 +27,7 @@ module IsoDoc::WordFunction
|
|
27
27
|
def make_body2(body, docxml)
|
28
28
|
body.div **{ class: "WordSection2" } do |div2|
|
29
29
|
boilerplate docxml, div2
|
30
|
+
preface_block docxml, div2
|
30
31
|
abstract docxml, div2
|
31
32
|
foreword docxml, div2
|
32
33
|
introduction docxml, div2
|
@@ -111,7 +112,7 @@ module IsoDoc::WordFunction
|
|
111
112
|
def figure_get_or_make_dl(t)
|
112
113
|
dl = t.at(".//table[@class = 'dl']")
|
113
114
|
if dl.nil?
|
114
|
-
t.add_child("<p><b>#{@
|
115
|
+
t.add_child("<p><b>#{@i18n.key}</b></p><table class='dl'></table>")
|
115
116
|
dl = t.at(".//table[@class = 'dl']")
|
116
117
|
end
|
117
118
|
dl
|
@@ -132,9 +133,10 @@ module IsoDoc::WordFunction
|
|
132
133
|
end
|
133
134
|
|
134
135
|
def note_p_parse(node, div)
|
136
|
+
name = node&.at(ns("./name"))&.remove
|
135
137
|
div.p **{ class: "Note" } do |p|
|
136
138
|
p.span **{ class: "note_label" } do |s|
|
137
|
-
|
139
|
+
name and name.children.each { |n| parse(n, s) }
|
138
140
|
end
|
139
141
|
insert_tab(p, 1)
|
140
142
|
node.first_element_child.children.each { |n| parse(n, p) }
|
@@ -143,9 +145,10 @@ module IsoDoc::WordFunction
|
|
143
145
|
end
|
144
146
|
|
145
147
|
def note_parse1(node, div)
|
148
|
+
name = node&.at(ns("./name"))&.remove
|
146
149
|
div.p **{ class: "Note" } do |p|
|
147
150
|
p.span **{ class: "note_label" } do |s|
|
148
|
-
|
151
|
+
name and name.children.each { |n| parse(n, s) }
|
149
152
|
end
|
150
153
|
insert_tab(p, 1)
|
151
154
|
end
|
@@ -153,12 +156,14 @@ module IsoDoc::WordFunction
|
|
153
156
|
end
|
154
157
|
|
155
158
|
def termnote_parse(node, out)
|
159
|
+
name = node&.at(ns("./name"))&.remove
|
156
160
|
out.div **note_attrs(node) do |div|
|
157
|
-
first = node.first_element_child
|
158
161
|
div.p **{ class: "Note" } do |p|
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
+
if name
|
163
|
+
name.children.each { |n| parse(n, p) }
|
164
|
+
p << l10n(": ")
|
165
|
+
end
|
166
|
+
para_then_remainder(node.first_element_child, node, p, div)
|
162
167
|
end
|
163
168
|
end
|
164
169
|
end
|
@@ -186,7 +191,7 @@ module IsoDoc::WordFunction
|
|
186
191
|
|
187
192
|
def formula_where(dl, out)
|
188
193
|
return unless dl
|
189
|
-
out.p { |p| p << @
|
194
|
+
out.p { |p| p << @i18n.where }
|
190
195
|
parse(dl, out)
|
191
196
|
out.parent.at("./table")["class"] = "formula_dl"
|
192
197
|
end
|
@@ -69,7 +69,9 @@ module IsoDoc::WordFunction
|
|
69
69
|
def xref_parse(node, out)
|
70
70
|
target = /#/.match(node["target"]) ? node["target"].sub(/#/, ".doc#") :
|
71
71
|
"##{node["target"]}"
|
72
|
-
out.a(**{ "href": target })
|
72
|
+
out.a(**{ "href": target }) do |l|
|
73
|
+
node.children.each { |n| parse(n, l) }
|
74
|
+
end
|
73
75
|
end
|
74
76
|
end
|
75
77
|
end
|
@@ -127,7 +127,7 @@ xmlns:m="http://schemas.microsoft.com/office/2004/12/omml">
|
|
127
127
|
def list_add(xpath, lvl)
|
128
128
|
xpath.each do |list|
|
129
129
|
(list.xpath(".//li") - list.xpath(".//ol//li | .//ul//li")).each do |l|
|
130
|
-
l.xpath("./p | ./div").each_with_index do |p, i|
|
130
|
+
l.xpath("./p | ./div | ./table").each_with_index do |p, i|
|
131
131
|
next if i == 0
|
132
132
|
p.wrap(%{<div class="ListContLevel#{lvl}"/>})
|
133
133
|
end
|
@@ -29,7 +29,7 @@ module IsoDoc::WordFunction
|
|
29
29
|
border-bottom:#{SW1} #{rowmax == totalrows ? '1.5' : '1.0'}pt;
|
30
30
|
mso-border-bottom-alt:#{SW1} #{rowmax == totalrows ? '1.5' : '1.0'}pt;
|
31
31
|
STYLE
|
32
|
-
{ rowspan: td["rowspan"], colspan: td["colspan"],
|
32
|
+
{ rowspan: td["rowspan"], colspan: td["colspan"], valign: td["valign"],
|
33
33
|
align: td["align"], style: style.gsub(/\n/, "") }
|
34
34
|
end
|
35
35
|
|
@@ -38,7 +38,8 @@ module IsoDoc::WordFunction
|
|
38
38
|
summary: node["summary"],
|
39
39
|
width: node["width"],
|
40
40
|
style: "mso-table-anchor-horizontal:column;"\
|
41
|
-
"mso-table-overlap:never;border-spacing:0;border-width:1px;#{keep_style(node)}"
|
41
|
+
"mso-table-overlap:never;border-spacing:0;border-width:1px;#{keep_style(node)}",
|
42
|
+
class: (node.text.length > 4000 ? "MsoISOTableBig" : "MsoISOTable")
|
42
43
|
}))
|
43
44
|
end
|
44
45
|
|
data/lib/isodoc/xref.rb
CHANGED
@@ -11,13 +11,15 @@ module IsoDoc
|
|
11
11
|
include XrefGen::Blocks
|
12
12
|
include XrefGen::Sections
|
13
13
|
|
14
|
-
def initialize(lang, script, klass,
|
14
|
+
def initialize(lang, script, klass, i18n, options = {})
|
15
15
|
@anchors = {}
|
16
16
|
@lang = lang
|
17
17
|
@script = script
|
18
18
|
@klass = klass
|
19
|
-
@labels = labels
|
20
19
|
@options = options
|
20
|
+
@i18n = i18n
|
21
|
+
@labels = @i18n.get
|
22
|
+
@klass.i18n = @i18n
|
21
23
|
end
|
22
24
|
|
23
25
|
def get
|
@@ -39,6 +41,7 @@ module IsoDoc
|
|
39
41
|
|
40
42
|
# extract names for all anchors, xref and label
|
41
43
|
def parse(docxml)
|
44
|
+
amend_preprocess(docxml)
|
42
45
|
initial_anchor_names(docxml)
|
43
46
|
back_anchor_names(docxml)
|
44
47
|
# preempt clause notes with all other types of note (ISO default)
|
@@ -53,7 +56,7 @@ module IsoDoc
|
|
53
56
|
end
|
54
57
|
|
55
58
|
def l10n(a, lang = @lang, script = @script)
|
56
|
-
|
59
|
+
@i18n.l10n(a, lang, script)
|
57
60
|
end
|
58
61
|
end
|
59
62
|
end
|
@@ -8,17 +8,20 @@ module IsoDoc::XrefGen
|
|
8
8
|
@subseq = ""
|
9
9
|
@letter_override = nil
|
10
10
|
@number_override = nil
|
11
|
+
@base = ""
|
11
12
|
end
|
12
13
|
|
13
14
|
def new_subseq_increment(node)
|
14
15
|
@subseq = node["subsequence"]
|
15
16
|
@num += 1
|
16
17
|
@letter = node["subsequence"] ? "a" : ""
|
18
|
+
@base = ""
|
17
19
|
if node["number"]
|
18
|
-
/^(?<n>\d*)(?<a>[a-z]*)$/ =~ node["number"]
|
19
|
-
if n || a
|
20
|
-
@letter_override = @letter = a
|
21
|
-
@number_override = @num = n.to_i
|
20
|
+
/^(?<b>.*?)(?<n>\d*)(?<a>[a-z]*)$/ =~ node["number"]
|
21
|
+
if !n.empty? || !a.empty?
|
22
|
+
@letter_override = @letter = a unless a.empty?
|
23
|
+
@number_override = @num = n.to_i unless n.empty?
|
24
|
+
@base = b
|
22
25
|
else
|
23
26
|
@letter_override = node["number"]
|
24
27
|
@letter = @letter_override if /^[a-z]$/.match(@letter_override)
|
@@ -28,8 +31,13 @@ module IsoDoc::XrefGen
|
|
28
31
|
|
29
32
|
def sequence_increment(node)
|
30
33
|
if node["number"]
|
34
|
+
@base = ""
|
31
35
|
@number_override = node["number"]
|
32
|
-
|
36
|
+
/^(?<b>.*?)(?<n>\d+)$/ =~ node["number"]
|
37
|
+
unless n.nil? || n.empty?
|
38
|
+
@num = n.to_i
|
39
|
+
@base = b
|
40
|
+
end
|
33
41
|
else
|
34
42
|
@num += 1
|
35
43
|
end
|
@@ -37,8 +45,14 @@ module IsoDoc::XrefGen
|
|
37
45
|
|
38
46
|
def subsequence_increment(node)
|
39
47
|
if node["number"]
|
48
|
+
@base = ""
|
40
49
|
@letter_override = node["number"]
|
41
|
-
|
50
|
+
/^(?<b>.*?)(?<n>\d*)(?<a>[a-z]+)$/ =~ node["number"]
|
51
|
+
unless a.empty?
|
52
|
+
@letter = a
|
53
|
+
@base = b
|
54
|
+
@number_override = @num = n.to_i unless n.empty?
|
55
|
+
end
|
42
56
|
else
|
43
57
|
@letter = (@letter.ord + 1).chr.to_s
|
44
58
|
end
|
@@ -59,7 +73,7 @@ module IsoDoc::XrefGen
|
|
59
73
|
end
|
60
74
|
|
61
75
|
def print
|
62
|
-
"#{@number_override || @num}#{@letter_override || @letter}"
|
76
|
+
"#{@base}#{@number_override || @num}#{@letter_override || @letter}"
|
63
77
|
end
|
64
78
|
|
65
79
|
def listlabel(depth)
|
data/lib/isodoc/xref/xref_gen.rb
CHANGED
@@ -2,6 +2,29 @@ require_relative "xref_gen_seq.rb"
|
|
2
2
|
|
3
3
|
module IsoDoc::XrefGen
|
4
4
|
module Blocks
|
5
|
+
NUMBERED_BLOCKS = %w(termnote termexample note example requirement
|
6
|
+
recommendation permission figure table formula admonition sourcecode).freeze
|
7
|
+
|
8
|
+
def amend_preprocess(xmldoc)
|
9
|
+
xmldoc.xpath(ns("//amend[newcontent]")).each do |a|
|
10
|
+
autonum = amend_autonums(a)
|
11
|
+
NUMBERED_BLOCKS.each do |b|
|
12
|
+
a.xpath(ns("./newcontent//#{b}")).each_with_index do |e, i|
|
13
|
+
autonum[b] and i == 0 and e["number"] = autonum[b]
|
14
|
+
!autonum[b] and e["unnumbered"] = "true"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def amend_autonums(a)
|
21
|
+
autonum = {}
|
22
|
+
a.xpath(ns("./autonumber")).each do |n|
|
23
|
+
autonum[n["type"]] = n.text
|
24
|
+
end
|
25
|
+
autonum
|
26
|
+
end
|
27
|
+
|
5
28
|
def termnote_label(n)
|
6
29
|
@labels["termnote"].gsub(/%/, n.to_s)
|
7
30
|
end
|
@@ -27,7 +50,7 @@ module IsoDoc::XrefGen
|
|
27
50
|
examples.each do |n|
|
28
51
|
return if n["id"].nil? || n["id"].empty?
|
29
52
|
c.increment(n)
|
30
|
-
idx = examples.size == 1 ? "" : c.print
|
53
|
+
idx = examples.size == 1 && !n["number"] ? "" : c.print
|
31
54
|
@anchors[n["id"]] = {
|
32
55
|
type: "termexample", label: idx,
|
33
56
|
xref: l10n("#{anchor(t['id'], :xref)}, "\
|
@@ -54,7 +77,7 @@ module IsoDoc::XrefGen
|
|
54
77
|
c = Counter.new
|
55
78
|
notes.each do |n|
|
56
79
|
next if @anchors[n["id"]] || n["id"].nil? || n["id"].empty?
|
57
|
-
idx = notes.size == 1 ? "" : " #{c.increment(n).print}"
|
80
|
+
idx = notes.size == 1 && !n["number"] ? "" : " #{c.increment(n).print}"
|
58
81
|
@anchors[n["id"]] = anchor_struct(idx, n, @labels["note_xref"],
|
59
82
|
"note", false)
|
60
83
|
end
|
@@ -76,7 +99,7 @@ module IsoDoc::XrefGen
|
|
76
99
|
notes.each do |n|
|
77
100
|
next if @anchors[n["id"]]
|
78
101
|
next if n["id"].nil? || n["id"].empty?
|
79
|
-
idx = notes.size == 1 ? "" : " #{c.increment(n).print}"
|
102
|
+
idx = notes.size == 1 && !n["number"] ? "" : " #{c.increment(n).print}"
|
80
103
|
@anchors[n["id"]] = anchor_struct(idx, n, @labels["example_xref"],
|
81
104
|
"example", n["unnumbered"])
|
82
105
|
end
|
@@ -91,7 +114,7 @@ module IsoDoc::XrefGen
|
|
91
114
|
c = Counter.new
|
92
115
|
notes.each do |n|
|
93
116
|
next if n["id"].nil? || n["id"].empty?
|
94
|
-
idx = notes.size == 1 ? "" : " #{c.increment(n).print}"
|
117
|
+
idx = notes.size == 1 && !n["number"] ? "" : " #{c.increment(n).print}"
|
95
118
|
@anchors[n["id"]] = anchor_struct(idx, n, @labels["list"], "list", false)
|
96
119
|
list_item_anchor_names(n, @anchors[n["id"]], 1, "", notes.size != 1)
|
97
120
|
end
|
@@ -17,7 +17,7 @@ module IsoDoc::XrefGen
|
|
17
17
|
d.xpath(ns("//preface/*")).each { |c| c.element? and preface_names(c) }
|
18
18
|
# potentially overridden in middle_section_asset_names()
|
19
19
|
sequential_asset_names(d.xpath(ns("//preface/*")))
|
20
|
-
n = section_names(d.at(ns("//clause[
|
20
|
+
n = section_names(d.at(ns("//clause[@type = 'scope']")), 0, 1)
|
21
21
|
n = section_names(d.at(ns(@klass.norm_ref_xpath)), n, 1)
|
22
22
|
n = section_names(d.at(ns("//sections/terms | "\
|
23
23
|
"//sections/clause[descendant::terms]")), n, 1)
|
@@ -60,7 +60,7 @@ module IsoDoc::XrefGen
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def middle_section_asset_names(d)
|
63
|
-
middle_sections = "//clause[
|
63
|
+
middle_sections = "//clause[@type = 'scope'] | "\
|
64
64
|
"#{@klass.norm_ref_xpath} | "\
|
65
65
|
"//sections/terms | //preface/* | "\
|
66
66
|
"//sections/definitions | //clause[parent::sections]"
|
@@ -99,7 +99,7 @@ module IsoDoc::XrefGen
|
|
99
99
|
def annex_name_lbl(clause, num)
|
100
100
|
obl = l10n("(#{@labels["inform_annex"]})")
|
101
101
|
obl = l10n("(#{@labels["norm_annex"]})") if clause["obligation"] == "normative"
|
102
|
-
l10n("<
|
102
|
+
l10n("<strong>#{@labels["annex"]} #{num}</strong><br/>#{obl}")
|
103
103
|
end
|
104
104
|
|
105
105
|
def single_annex_special_section(clause)
|
data/spec/assets/i18n.yaml
CHANGED
@@ -1,5 +1,16 @@
|
|
1
|
-
foreword:
|
1
|
+
foreword: Antaŭparolo
|
2
|
+
introduction: Enkonduko
|
2
3
|
clause: klaŭzo
|
3
4
|
table: Tabelo
|
4
5
|
source: SOURCE
|
5
6
|
modified: modified
|
7
|
+
scope: Amplekso
|
8
|
+
symbols: Simboloj kai mallongigitaj terminoj
|
9
|
+
annex: Aldono
|
10
|
+
normref: Normaj citaĵoj
|
11
|
+
bibliography: Bibliografio
|
12
|
+
inform_annex: informa
|
13
|
+
all_parts: ĉiuj partoj
|
14
|
+
locality: {
|
15
|
+
table: Tabelo
|
16
|
+
}
|
data/spec/isodoc/blocks_spec.rb
CHANGED
@@ -1,8 +1,245 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
RSpec.describe IsoDoc do
|
4
|
-
it "processes
|
5
|
-
|
4
|
+
it "processes amend blocks" do
|
5
|
+
input = <<~INPUT
|
6
|
+
<standard-document xmlns='https://www.metanorma.org/ns/standoc'>
|
7
|
+
<bibdata type='standard'>
|
8
|
+
<title language='en' format='text/plain'>Document title</title>
|
9
|
+
<language>en</language>
|
10
|
+
<script>Latn</script>
|
11
|
+
<status>
|
12
|
+
<stage>published</stage>
|
13
|
+
</status>
|
14
|
+
<copyright>
|
15
|
+
<from>2020</from>
|
16
|
+
</copyright>
|
17
|
+
<ext>
|
18
|
+
<doctype>article</doctype>
|
19
|
+
</ext>
|
20
|
+
</bibdata>
|
21
|
+
<sections>
|
22
|
+
<clause id='A' inline-header='false' obligation='normative'>
|
23
|
+
<title>Change Clause</title>
|
24
|
+
<amend id='B' change='modify' path='//table[2]' path_end='//table[2]/following-sibling:example[1]' title='Change'>
|
25
|
+
<autonumber type='table'>2</autonumber>
|
26
|
+
<autonumber type='example'>7</autonumber>
|
27
|
+
<description>
|
28
|
+
<p id='C'>
|
29
|
+
<em>
|
30
|
+
This table contains information on polygon cells which are not
|
31
|
+
included in ISO 10303-52. Remove table 2 completely and replace
|
32
|
+
with:
|
33
|
+
</em>
|
34
|
+
</p>
|
35
|
+
</description>
|
36
|
+
<newcontent id='D'>
|
37
|
+
<table id='E'>
|
38
|
+
<name>Edges of triangle and quadrilateral cells</name>
|
39
|
+
<tbody>
|
40
|
+
<tr>
|
41
|
+
<th colspan='2' valign='middle' align='center'>triangle</th>
|
42
|
+
<th colspan='2' valign='middle' align='center'>quadrilateral</th>
|
43
|
+
</tr>
|
44
|
+
<tr>
|
45
|
+
<td valign='middle' align='center'>edge</td>
|
46
|
+
<td valign='middle' align='center'>vertices</td>
|
47
|
+
<td valign='middle' align='center'>edge</td>
|
48
|
+
<td valign='middle' align='center'>vertices</td>
|
49
|
+
</tr>
|
50
|
+
<tr>
|
51
|
+
<td valign='middle' align='center'>1</td>
|
52
|
+
<td valign='middle' align='center'>1, 2</td>
|
53
|
+
<td valign='middle' align='center'>1</td>
|
54
|
+
<td valign='middle' align='center'>1, 2</td>
|
55
|
+
</tr>
|
56
|
+
<tr>
|
57
|
+
<td valign='middle' align='center'>2</td>
|
58
|
+
<td valign='middle' align='center'>2, 3</td>
|
59
|
+
<td valign='middle' align='center'>2</td>
|
60
|
+
<td valign='middle' align='center'>2, 3</td>
|
61
|
+
</tr>
|
62
|
+
<tr>
|
63
|
+
<td valign='middle' align='center'>3</td>
|
64
|
+
<td valign='middle' align='center'>3, 1</td>
|
65
|
+
<td valign='middle' align='center'>3</td>
|
66
|
+
<td valign='middle' align='center'>3, 4</td>
|
67
|
+
</tr>
|
68
|
+
<tr>
|
69
|
+
<td valign='top' align='left'/>
|
70
|
+
<td valign='top' align='left'/>
|
71
|
+
<td valign='middle' align='center'>4</td>
|
72
|
+
<td valign='middle' align='center'>4, 1</td>
|
73
|
+
</tr>
|
74
|
+
</tbody>
|
75
|
+
</table>
|
76
|
+
<figure id="H"><name>Figure</name></figure>
|
77
|
+
<example id='F'>
|
78
|
+
<p id='G'>This is not generalised further.</p>
|
79
|
+
</example>
|
80
|
+
</newcontent>
|
81
|
+
</amend>
|
82
|
+
</clause>
|
83
|
+
</sections>
|
84
|
+
</standard-document>
|
85
|
+
INPUT
|
86
|
+
presxml = <<~OUTPUT
|
87
|
+
<standard-document xmlns="https://www.metanorma.org/ns/standoc">
|
88
|
+
<bibdata type="standard">
|
89
|
+
<title language="en" format="text/plain">Document title</title>
|
90
|
+
<language>en</language>
|
91
|
+
<script>Latn</script>
|
92
|
+
<status>
|
93
|
+
<stage>published</stage>
|
94
|
+
</status>
|
95
|
+
<copyright>
|
96
|
+
<from>2020</from>
|
97
|
+
</copyright>
|
98
|
+
<ext>
|
99
|
+
<doctype>article</doctype>
|
100
|
+
</ext>
|
101
|
+
</bibdata>
|
102
|
+
<sections>
|
103
|
+
<clause id="A" inline-header="false" obligation="normative">
|
104
|
+
<title depth="1">1.<tab/>Change Clause</title>
|
105
|
+
<p id="C">
|
106
|
+
<em>
|
107
|
+
This table contains information on polygon cells which are not
|
108
|
+
included in ISO 10303-52. Remove table 2 completely and replace
|
109
|
+
with:
|
110
|
+
</em>
|
111
|
+
</p>
|
112
|
+
<quote id="D">
|
113
|
+
<table id="E" number="2">
|
114
|
+
<name>Table 2 — Edges of triangle and quadrilateral cells</name>
|
115
|
+
<tbody>
|
116
|
+
<tr>
|
117
|
+
<th colspan="2" valign="middle" align="center">triangle</th>
|
118
|
+
<th colspan="2" valign="middle" align="center">quadrilateral</th>
|
119
|
+
</tr>
|
120
|
+
<tr>
|
121
|
+
<td valign="middle" align="center">edge</td>
|
122
|
+
<td valign="middle" align="center">vertices</td>
|
123
|
+
<td valign="middle" align="center">edge</td>
|
124
|
+
<td valign="middle" align="center">vertices</td>
|
125
|
+
</tr>
|
126
|
+
<tr>
|
127
|
+
<td valign="middle" align="center">1</td>
|
128
|
+
<td valign="middle" align="center">1, 2</td>
|
129
|
+
<td valign="middle" align="center">1</td>
|
130
|
+
<td valign="middle" align="center">1, 2</td>
|
131
|
+
</tr>
|
132
|
+
<tr>
|
133
|
+
<td valign="middle" align="center">2</td>
|
134
|
+
<td valign="middle" align="center">2, 3</td>
|
135
|
+
<td valign="middle" align="center">2</td>
|
136
|
+
<td valign="middle" align="center">2, 3</td>
|
137
|
+
</tr>
|
138
|
+
<tr>
|
139
|
+
<td valign="middle" align="center">3</td>
|
140
|
+
<td valign="middle" align="center">3, 1</td>
|
141
|
+
<td valign="middle" align="center">3</td>
|
142
|
+
<td valign="middle" align="center">3, 4</td>
|
143
|
+
</tr>
|
144
|
+
<tr>
|
145
|
+
<td valign="top" align="left"/>
|
146
|
+
<td valign="top" align="left"/>
|
147
|
+
<td valign="middle" align="center">4</td>
|
148
|
+
<td valign="middle" align="center">4, 1</td>
|
149
|
+
</tr>
|
150
|
+
</tbody>
|
151
|
+
</table>
|
152
|
+
<figure id="H" unnumbered="true"><name>Figure</name></figure>
|
153
|
+
<example id="F" number="7"><name>EXAMPLE 7</name>
|
154
|
+
<p id="G">This is not generalised further.</p>
|
155
|
+
</example>
|
156
|
+
</quote>
|
157
|
+
</clause>
|
158
|
+
</sections>
|
159
|
+
</standard-document>
|
160
|
+
OUTPUT
|
161
|
+
html = <<~OUTPUT
|
162
|
+
<html lang='en'>
|
163
|
+
<head/>
|
164
|
+
<body lang='en'>
|
165
|
+
<div class='title-section'>
|
166
|
+
<p> </p>
|
167
|
+
</div>
|
168
|
+
<br/>
|
169
|
+
<div class='prefatory-section'>
|
170
|
+
<p> </p>
|
171
|
+
</div>
|
172
|
+
<br/>
|
173
|
+
<div class='main-section'>
|
174
|
+
<p class='zzSTDTitle1'>Document title</p>
|
175
|
+
<div id='A'>
|
176
|
+
<h1>1.  Change Clause</h1>
|
177
|
+
<p id='C'>
|
178
|
+
<i>
|
179
|
+
This table contains information on polygon cells which are not
|
180
|
+
included in ISO 10303-52. Remove table 2 completely and replace
|
181
|
+
with:
|
182
|
+
</i>
|
183
|
+
</p>
|
184
|
+
<div class='Quote' id="D">
|
185
|
+
<p class='TableTitle' style='text-align:center;'>Table 2 — Edges of triangle and quadrilateral cells</p>
|
186
|
+
<table id='E' class='MsoISOTable' style='border-width:1px;border-spacing:0;'>
|
187
|
+
<tbody>
|
188
|
+
<tr>
|
189
|
+
<th colspan='2' style='font-weight:bold;text-align:center;vertical-align:middle;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;' scope='row'>triangle</th>
|
190
|
+
<th colspan='2' style='font-weight:bold;text-align:center;vertical-align:middle;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;' scope='row'>quadrilateral</th>
|
191
|
+
</tr>
|
192
|
+
<tr>
|
193
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.0pt;'>edge</td>
|
194
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.0pt;'>vertices</td>
|
195
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.0pt;'>edge</td>
|
196
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.0pt;'>vertices</td>
|
197
|
+
</tr>
|
198
|
+
<tr>
|
199
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.0pt;'>1</td>
|
200
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.0pt;'>1, 2</td>
|
201
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.0pt;'>1</td>
|
202
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.0pt;'>1, 2</td>
|
203
|
+
</tr>
|
204
|
+
<tr>
|
205
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.0pt;'>2</td>
|
206
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.0pt;'>2, 3</td>
|
207
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.0pt;'>2</td>
|
208
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.0pt;'>2, 3</td>
|
209
|
+
</tr>
|
210
|
+
<tr>
|
211
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.0pt;'>3</td>
|
212
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.0pt;'>3, 1</td>
|
213
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.0pt;'>3</td>
|
214
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.0pt;'>3, 4</td>
|
215
|
+
</tr>
|
216
|
+
<tr>
|
217
|
+
<td style='text-align:left;vertical-align:top;border-top:none;border-bottom:solid windowtext 1.5pt;'/>
|
218
|
+
<td style='text-align:left;vertical-align:top;border-top:none;border-bottom:solid windowtext 1.5pt;'/>
|
219
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.5pt;'>4</td>
|
220
|
+
<td style='text-align:center;vertical-align:middle;border-top:none;border-bottom:solid windowtext 1.5pt;'>4, 1</td>
|
221
|
+
</tr>
|
222
|
+
</tbody>
|
223
|
+
</table>
|
224
|
+
<div id='H' class='figure'>
|
225
|
+
<p class='FigureTitle' style='text-align:center;'>Figure</p>
|
226
|
+
</div>
|
227
|
+
<div id='F' class='example'>
|
228
|
+
<p class='example-title'>EXAMPLE 7</p>
|
229
|
+
<p id='G'>This is not generalised further.</p>
|
230
|
+
</div>
|
231
|
+
</div>
|
232
|
+
</div>
|
233
|
+
</div>
|
234
|
+
</body>
|
235
|
+
</html>
|
236
|
+
OUTPUT
|
237
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", input, true))).to be_equivalent_to xmlpp(presxml)
|
238
|
+
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", presxml, true))).to be_equivalent_to xmlpp(html)
|
239
|
+
end
|
240
|
+
|
241
|
+
it "processes unlabelled notes (Presentation XML)" do
|
242
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
6
243
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
7
244
|
<preface><foreword>
|
8
245
|
<note id="A" keep-with-next="true" keep-lines-together="true">
|
@@ -10,6 +247,39 @@ RSpec.describe IsoDoc do
|
|
10
247
|
</note>
|
11
248
|
</foreword></preface>
|
12
249
|
</iso-standard>
|
250
|
+
INPUT
|
251
|
+
<?xml version='1.0'?>
|
252
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
253
|
+
<preface>
|
254
|
+
<foreword>
|
255
|
+
<note id='A' keep-with-next='true' keep-lines-together='true'>
|
256
|
+
<name>NOTE</name>
|
257
|
+
<p id='_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f'>
|
258
|
+
These results are based on a study carried out on three different
|
259
|
+
types of kernel.
|
260
|
+
</p>
|
261
|
+
</note>
|
262
|
+
</foreword>
|
263
|
+
</preface>
|
264
|
+
</iso-standard>
|
265
|
+
OUTPUT
|
266
|
+
end
|
267
|
+
|
268
|
+
it "processes unlabelled notes (HTML)" do
|
269
|
+
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
270
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
271
|
+
<preface>
|
272
|
+
<foreword>
|
273
|
+
<note id='A' keep-with-next='true' keep-lines-together='true'>
|
274
|
+
<name>NOTE</name>
|
275
|
+
<p id='_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f'>
|
276
|
+
These results are based on a study carried out on three different
|
277
|
+
types of kernel.
|
278
|
+
</p>
|
279
|
+
</note>
|
280
|
+
</foreword>
|
281
|
+
</preface>
|
282
|
+
</iso-standard>
|
13
283
|
INPUT
|
14
284
|
#{HTML_HDR}
|
15
285
|
<br/>
|
@@ -28,13 +298,19 @@ RSpec.describe IsoDoc do
|
|
28
298
|
|
29
299
|
it "processes unlabelled notes (Word)" do
|
30
300
|
expect(xmlpp(IsoDoc::WordConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
31
|
-
<iso-standard xmlns=
|
32
|
-
|
33
|
-
<
|
34
|
-
|
35
|
-
</
|
36
|
-
|
37
|
-
|
301
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
302
|
+
<preface>
|
303
|
+
<foreword>
|
304
|
+
<note id='A' keep-with-next='true' keep-lines-together='true'>
|
305
|
+
<name>NOTE</name>
|
306
|
+
<p id='_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f'>
|
307
|
+
These results are based on a study carried out on three different
|
308
|
+
types of kernel.
|
309
|
+
</p>
|
310
|
+
</note>
|
311
|
+
</foreword>
|
312
|
+
</preface>
|
313
|
+
</iso-standard>
|
38
314
|
INPUT
|
39
315
|
<html xmlns:epub="http://www.idpf.org/2007/ops" lang="en">
|
40
316
|
<head><style/></head>
|
@@ -47,7 +323,7 @@ RSpec.describe IsoDoc do
|
|
47
323
|
<p><br clear="all" style="mso-special-character:line-break;page-break-before:always"/></p>
|
48
324
|
<div>
|
49
325
|
<h1 class="ForewordTitle">Foreword</h1>
|
50
|
-
<div id="A" class="Note">
|
326
|
+
<div id="A" class="Note" style='page-break-after: avoid;page-break-inside: avoid;'>
|
51
327
|
<p class="Note"><span class="note_label">NOTE</span><span style="mso-tab-count:1">  </span>These results are based on a study carried out on three different types of kernel.</p>
|
52
328
|
</div>
|
53
329
|
</div>
|
@@ -62,44 +338,65 @@ RSpec.describe IsoDoc do
|
|
62
338
|
OUTPUT
|
63
339
|
end
|
64
340
|
|
65
|
-
|
66
|
-
|
67
|
-
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
341
|
+
it "processes sequences of notes (Presentation XML)" do
|
342
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
68
343
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
69
344
|
<preface><foreword>
|
70
345
|
<note id="note1">
|
71
346
|
<p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">These results are based on a study carried out on three different types of kernel.</p>
|
347
|
+
</note>
|
348
|
+
<note id="note2">
|
349
|
+
<p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83a">These results are based on a study carried out on three different types of kernel.</p>
|
72
350
|
</note>
|
73
351
|
</foreword></preface>
|
74
352
|
</iso-standard>
|
75
353
|
INPUT
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
354
|
+
<?xml version='1.0'?>
|
355
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
356
|
+
<preface>
|
357
|
+
<foreword>
|
358
|
+
<note id='note1'>
|
359
|
+
<name>NOTE 1</name>
|
360
|
+
<p id='_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f'>
|
361
|
+
These results are based on a study carried out on three different
|
362
|
+
types of kernel.
|
363
|
+
</p>
|
364
|
+
</note>
|
365
|
+
<note id='note2'>
|
366
|
+
<name>NOTE 2</name>
|
367
|
+
<p id='_f06fd0d1-a203-4f3d-a515-0bdba0f8d83a'>
|
368
|
+
These results are based on a study carried out on three different
|
369
|
+
types of kernel.
|
370
|
+
</p>
|
371
|
+
</note>
|
372
|
+
</foreword>
|
373
|
+
</preface>
|
374
|
+
</iso-standard>
|
375
|
+
OUTPUT
|
89
376
|
end
|
90
377
|
|
91
|
-
it "processes sequences of notes" do
|
378
|
+
it "processes sequences of notes (HTML)" do
|
92
379
|
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
93
|
-
<iso-standard xmlns=
|
94
|
-
|
95
|
-
<
|
96
|
-
|
97
|
-
</
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
380
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
381
|
+
<preface>
|
382
|
+
<foreword>
|
383
|
+
<note id='note1'>
|
384
|
+
<name>NOTE 1</name>
|
385
|
+
<p id='_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f'>
|
386
|
+
These results are based on a study carried out on three different
|
387
|
+
types of kernel.
|
388
|
+
</p>
|
389
|
+
</note>
|
390
|
+
<note id='note2'>
|
391
|
+
<name>NOTE 2</name>
|
392
|
+
<p id='_f06fd0d1-a203-4f3d-a515-0bdba0f8d83a'>
|
393
|
+
These results are based on a study carried out on three different
|
394
|
+
types of kernel.
|
395
|
+
</p>
|
396
|
+
</note>
|
397
|
+
</foreword>
|
398
|
+
</preface>
|
399
|
+
</iso-standard>
|
103
400
|
INPUT
|
104
401
|
#{HTML_HDR}
|
105
402
|
<br/>
|
@@ -124,6 +421,7 @@ INPUT
|
|
124
421
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
125
422
|
<preface><foreword>
|
126
423
|
<note>
|
424
|
+
<name>NOTE</name>
|
127
425
|
<p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83f">These results are based on a study carried out on three different types of kernel.</p>
|
128
426
|
<p id="_f06fd0d1-a203-4f3d-a515-0bdba0f8d83a">These results are based on a study carried out on three different types of kernel.</p>
|
129
427
|
</note>
|
@@ -150,7 +448,7 @@ INPUT
|
|
150
448
|
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
151
449
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
152
450
|
<preface><foreword>
|
153
|
-
<note id="A">
|
451
|
+
<note id="A"><name>NOTE</name>
|
154
452
|
<dl>
|
155
453
|
<dt>A</dt>
|
156
454
|
<dd><p>B</p></dd>
|
@@ -183,7 +481,7 @@ INPUT
|
|
183
481
|
expect(xmlpp(IsoDoc::WordConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
184
482
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
185
483
|
<preface><foreword>
|
186
|
-
<note id="A">
|
484
|
+
<note id="A"><name>NOTE</name>
|
187
485
|
<dl>
|
188
486
|
<dt>A</dt>
|
189
487
|
<dd><p>B</p></dd>
|
@@ -226,8 +524,8 @@ INPUT
|
|
226
524
|
expect(xmlpp(strip_guid(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
227
525
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
228
526
|
<preface><foreword>
|
229
|
-
<p id="A">ABC <note id="B"><p id="C">XYZ</p></note>
|
230
|
-
<note id="B1"><p id="C1">XYZ1</p></note></p>
|
527
|
+
<p id="A">ABC <note id="B"><name>NOTE 1</name><p id="C">XYZ</p></note>
|
528
|
+
<note id="B1"><name>NOTE 2</name><p id="C1">XYZ1</p></note></p>
|
231
529
|
</foreword></preface>
|
232
530
|
</iso-standard>
|
233
531
|
INPUT
|
@@ -262,8 +560,8 @@ OUTPUT
|
|
262
560
|
expect(xmlpp(strip_guid(IsoDoc::WordConvert.new({}).convert("test", <<~"INPUT", true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
263
561
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
264
562
|
<preface><foreword>
|
265
|
-
<p id="A">ABC <note id="B"><p id="C">XYZ</p></note>
|
266
|
-
<note id="B1"><p id="C1">XYZ1</p></note></p>
|
563
|
+
<p id="A">ABC <note id="B"><name>NOTE 1</name><p id="C">XYZ</p></note>
|
564
|
+
<note id="B1"><name>NOTE 2</name><p id="C1">XYZ1</p></note></p>
|
267
565
|
</foreword></preface>
|
268
566
|
</iso-standard>
|
269
567
|
INPUT
|
@@ -313,8 +611,8 @@ INPUT
|
|
313
611
|
OUTPUT
|
314
612
|
end
|
315
613
|
|
316
|
-
|
317
|
-
expect(xmlpp(
|
614
|
+
it "processes figures (Presentation XML)" do
|
615
|
+
expect(xmlpp((IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
318
616
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
319
617
|
<preface><foreword>
|
320
618
|
<figure id="figureA-1" keep-with-next="true" keep-lines-together="true">
|
@@ -337,6 +635,65 @@ B</pre>
|
|
337
635
|
<figure id="figure-C" unnumbered="true">
|
338
636
|
<pre>A <
|
339
637
|
B</pre>
|
638
|
+
</figure>
|
639
|
+
</foreword></preface>
|
640
|
+
</iso-standard>
|
641
|
+
INPUT
|
642
|
+
<?xml version='1.0'?>
|
643
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
644
|
+
<preface><foreword>
|
645
|
+
<figure id="figureA-1" keep-with-next="true" keep-lines-together="true">
|
646
|
+
<name>Figure 1 — Split-it-right <em>sample</em> divider<fn reference="1"><p>X</p></fn></name>
|
647
|
+
<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
|
+
<image src="rice_images/rice_image1.png" height="20" width="auto" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f1" mimetype="image/png"/>
|
649
|
+
<image src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7" height="20" width="auto" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f2" mimetype="image/png"/>
|
650
|
+
<fn reference="a">
|
651
|
+
<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
|
+
</fn>
|
653
|
+
<dl>
|
654
|
+
<dt>A</dt>
|
655
|
+
<dd><p>B</p></dd>
|
656
|
+
</dl>
|
657
|
+
</figure>
|
658
|
+
<figure id="figure-B">
|
659
|
+
<name>Figure 2</name>
|
660
|
+
<pre alt="A B">A <
|
661
|
+
B</pre>
|
662
|
+
</figure>
|
663
|
+
<figure id="figure-C" unnumbered="true">
|
664
|
+
<pre>A <
|
665
|
+
B</pre>
|
666
|
+
</figure>
|
667
|
+
</foreword></preface>
|
668
|
+
</iso-standard>
|
669
|
+
OUTPUT
|
670
|
+
end
|
671
|
+
|
672
|
+
it "processes figures (HTML)" do
|
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>
|
340
697
|
</figure>
|
341
698
|
</foreword></preface>
|
342
699
|
</iso-standard>
|
@@ -382,13 +739,13 @@ B</pre>
|
|
382
739
|
it "processes figures (Word)" do
|
383
740
|
FileUtils.rm_rf "spec/assets/odf1.emf"
|
384
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")
|
385
|
-
|
742
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
386
743
|
<preface><foreword>
|
387
|
-
<figure id="figureA-1">
|
388
|
-
<name>Split-it-right sample divider<fn reference="1"><p>X</p></fn></name>
|
389
|
-
<image src="rice_images/rice_image1.png" height="20" width="30" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" mimetype="image/png" alt="alttext" title="
|
390
|
-
<image src="rice_images/rice_image1.png" height="20" width="auto" id="_8357ede4-6d44-4672-bac4-
|
391
|
-
<image src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7" height="20" width="auto" id="_8357ede4-6d44-4672-bac4-
|
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"/>
|
392
749
|
<fn reference="a">
|
393
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>
|
394
751
|
</fn>
|
@@ -398,6 +755,11 @@ B</pre>
|
|
398
755
|
</dl>
|
399
756
|
</figure>
|
400
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">
|
401
763
|
<pre>A <
|
402
764
|
B</pre>
|
403
765
|
</figure>
|
@@ -415,9 +777,8 @@ B</pre>
|
|
415
777
|
<p><br clear="all" style="mso-special-character:line-break;page-break-before:always"/></p>
|
416
778
|
<div>
|
417
779
|
<h1 class="ForewordTitle">Foreword</h1>
|
418
|
-
<div id="figureA-1" class="figure">
|
419
|
-
|
420
|
-
<img src="rice_images/rice_image1.png" height="20" width="30" alt="alttext" title="titletext"/>
|
780
|
+
<div id="figureA-1" class="figure" style='page-break-after: avoid;page-break-inside: avoid;'>
|
781
|
+
<img src="rice_images/rice_image1.png" height="20" width="30" alt="alttext" title="titletxt"/>
|
421
782
|
<img src="rice_images/rice_image1.png" height='20' width='auto'/>
|
422
783
|
<img src='_.gif' height='20' width='auto'/>
|
423
784
|
<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>
|
@@ -425,7 +786,7 @@ B</pre>
|
|
425
786
|
</div></aside>
|
426
787
|
<p style='page-break-after:avoid;'><b>Key</b></p><table class="dl"><tr><td valign="top" align="left"><p align="left" style="margin-left:0pt;text-align:left;">A</p></td><td valign="top"><p>B</p></td></tr></table>
|
427
788
|
<p class='FigureTitle' style='text-align:center;'>
|
428
|
-
Figure 1 — Split-it-right sample divider
|
789
|
+
Figure 1 — Split-it-right <i>sample</i> divider
|
429
790
|
<span style='mso-bookmark:_Ref'>
|
430
791
|
<a href='#ftn1' epub:type='footnote' class='FootnoteRef'>
|
431
792
|
<sup>1</sup>
|
@@ -437,6 +798,9 @@ B</pre>
|
|
437
798
|
<pre>A <
|
438
799
|
B</pre>
|
439
800
|
<p class="FigureTitle" style="text-align:center;">Figure 2</p>
|
801
|
+
</div>
|
802
|
+
<div id='figure-C' class='figure'>
|
803
|
+
<pre>A < B</pre>
|
440
804
|
</div>
|
441
805
|
</div>
|
442
806
|
<p> </p>
|
@@ -488,7 +852,6 @@ B</pre>
|
|
488
852
|
<img src='spec/assets/odf.emf'/>
|
489
853
|
<img src='spec/assets/odf1.emf'/>
|
490
854
|
<img src='_.emf' height='auto' width='auto'/>
|
491
|
-
<p class='FigureTitle' style='text-align:center;'>Figure 1</p>
|
492
855
|
</div>
|
493
856
|
</div>
|
494
857
|
<p> </p>
|
@@ -545,7 +908,6 @@ context "disable inkscape" do
|
|
545
908
|
<img src='spec/assets/odf.emf'/>
|
546
909
|
<img src='spec/assets/odf1.svg'/>
|
547
910
|
<img src='_.svg' height='auto' width='auto'/>
|
548
|
-
<p class='FigureTitle' style='text-align:center;'>Figure 1</p>
|
549
911
|
</div>
|
550
912
|
</div>
|
551
913
|
<p> </p>
|
@@ -563,9 +925,8 @@ OUTPUT
|
|
563
925
|
end
|
564
926
|
end
|
565
927
|
|
566
|
-
|
567
|
-
|
568
|
-
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
928
|
+
it "processes examples (Presentation XML)" do
|
929
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
569
930
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
570
931
|
<preface><foreword>
|
571
932
|
<example id="samplecode" keep-with-next="true" keep-lines-together="true">
|
@@ -577,6 +938,37 @@ OUTPUT
|
|
577
938
|
</example>
|
578
939
|
</foreword></preface>
|
579
940
|
</iso-standard>
|
941
|
+
INPUT
|
942
|
+
<?xml version='1.0'?>
|
943
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
944
|
+
<preface>
|
945
|
+
<foreword>
|
946
|
+
<example id='samplecode' keep-with-next='true' keep-lines-together='true'>
|
947
|
+
<name>EXAMPLE — Title</name>
|
948
|
+
<p>Hello</p>
|
949
|
+
<sourcecode id='X'>
|
950
|
+
<name>Sample</name>
|
951
|
+
</sourcecode>
|
952
|
+
</example>
|
953
|
+
</foreword>
|
954
|
+
</preface>
|
955
|
+
</iso-standard>
|
956
|
+
OUTPUT
|
957
|
+
end
|
958
|
+
|
959
|
+
it "processes examples (HTML)" do
|
960
|
+
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
961
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
962
|
+
<preface>
|
963
|
+
<foreword>
|
964
|
+
<example id='samplecode' keep-with-next='true' keep-lines-together='true'>
|
965
|
+
<name>EXAMPLE — Title</name>
|
966
|
+
<p>Hello</p>
|
967
|
+
<sourcecode id='X'><name>Sample</name></sourcecode>
|
968
|
+
</example>
|
969
|
+
</foreword>
|
970
|
+
</preface>
|
971
|
+
</iso-standard>
|
580
972
|
INPUT
|
581
973
|
#{HTML_HDR}
|
582
974
|
<br/>
|
@@ -585,12 +977,7 @@ OUTPUT
|
|
585
977
|
<div id="samplecode" class="example" style="page-break-after: avoid;page-break-inside: avoid;">
|
586
978
|
<p class="example-title">EXAMPLE — Title</p>
|
587
979
|
<p>Hello</p>
|
588
|
-
<pre id='X' class='prettyprint '
|
589
|
-
<br/>
|
590
|
-
 
|
591
|
-
<br/>
|
592
|
-
 
|
593
|
-
</pre>
|
980
|
+
<pre id='X' class='prettyprint '/>
|
594
981
|
<p class='SourceTitle' style='text-align:center;'>Sample</p>
|
595
982
|
</div>
|
596
983
|
</div>
|
@@ -603,17 +990,17 @@ OUTPUT
|
|
603
990
|
|
604
991
|
it "processes examples (Word)" do
|
605
992
|
expect(xmlpp(IsoDoc::WordConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
606
|
-
<iso-standard xmlns=
|
607
|
-
|
608
|
-
<
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
</
|
615
|
-
|
616
|
-
|
993
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
994
|
+
<preface>
|
995
|
+
<foreword>
|
996
|
+
<example id='samplecode' keep-with-next='true' keep-lines-together='true'>
|
997
|
+
<name>EXAMPLE — Title</name>
|
998
|
+
<p>Hello</p>
|
999
|
+
<sourcecode id='X'><name>Sample</name></sourcecode>
|
1000
|
+
</example>
|
1001
|
+
</foreword>
|
1002
|
+
</preface>
|
1003
|
+
</iso-standard>
|
617
1004
|
INPUT
|
618
1005
|
<html xmlns:epub='http://www.idpf.org/2007/ops' lang='en'><head><style>
|
619
1006
|
</style>
|
@@ -634,12 +1021,7 @@ OUTPUT
|
|
634
1021
|
<div id='samplecode' class='example' style='page-break-after: avoid;page-break-inside: avoid;'>
|
635
1022
|
<p class='example-title'>EXAMPLE — Title</p>
|
636
1023
|
<p>Hello</p>
|
637
|
-
<p id='X' class='Sourcecode'
|
638
|
-
<br/>
|
639
|
-
 
|
640
|
-
<br/>
|
641
|
-
 
|
642
|
-
</p>
|
1024
|
+
<p id='X' class='Sourcecode'/>
|
643
1025
|
<p class='SourceTitle' style='text-align:center;'>Sample</p>
|
644
1026
|
</div>
|
645
1027
|
</div>
|
@@ -657,7 +1039,7 @@ OUTPUT
|
|
657
1039
|
end
|
658
1040
|
|
659
1041
|
it "processes sequences of examples" do
|
660
|
-
expect(xmlpp(IsoDoc::
|
1042
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
661
1043
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
662
1044
|
<preface><foreword>
|
663
1045
|
<example id="samplecode">
|
@@ -673,32 +1055,30 @@ OUTPUT
|
|
673
1055
|
</foreword></preface>
|
674
1056
|
</iso-standard>
|
675
1057
|
INPUT
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
</body>
|
696
|
-
</html>
|
1058
|
+
<?xml version='1.0'?>
|
1059
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
1060
|
+
<preface>
|
1061
|
+
<foreword>
|
1062
|
+
<example id='samplecode'>
|
1063
|
+
<name>EXAMPLE 1</name>
|
1064
|
+
<p>Hello</p>
|
1065
|
+
</example>
|
1066
|
+
<example id='samplecode2'>
|
1067
|
+
<name>EXAMPLE 2 — Title</name>
|
1068
|
+
<p>Hello</p>
|
1069
|
+
</example>
|
1070
|
+
<example id='samplecode3' unnumbered='true'>
|
1071
|
+
<name>EXAMPLE</name>
|
1072
|
+
<p>Hello</p>
|
1073
|
+
</example>
|
1074
|
+
</foreword>
|
1075
|
+
</preface>
|
1076
|
+
</iso-standard>
|
697
1077
|
OUTPUT
|
698
1078
|
end
|
699
1079
|
|
700
|
-
|
701
|
-
expect(xmlpp(IsoDoc::
|
1080
|
+
it "processes sourcecode (Presentation XML)" do
|
1081
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
702
1082
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
703
1083
|
<preface><foreword>
|
704
1084
|
<sourcecode lang="ruby" id="samplecode">
|
@@ -710,12 +1090,49 @@ Que?
|
|
710
1090
|
</sourcecode>
|
711
1091
|
</foreword></preface>
|
712
1092
|
</iso-standard>
|
1093
|
+
INPUT
|
1094
|
+
<?xml version='1.0'?>
|
1095
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
1096
|
+
<preface>
|
1097
|
+
<foreword>
|
1098
|
+
<sourcecode lang='ruby' id='samplecode'>
|
1099
|
+
<name>
|
1100
|
+
Figure 1 — Ruby
|
1101
|
+
<em>code</em>
|
1102
|
+
</name>
|
1103
|
+
puts x
|
1104
|
+
</sourcecode>
|
1105
|
+
<sourcecode unnumbered='true'> Que? </sourcecode>
|
1106
|
+
</foreword>
|
1107
|
+
</preface>
|
1108
|
+
</iso-standard>
|
1109
|
+
OUTPUT
|
1110
|
+
end
|
1111
|
+
|
1112
|
+
it "processes sourcecode (HTML)" do
|
1113
|
+
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
1114
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
1115
|
+
<preface>
|
1116
|
+
<foreword>
|
1117
|
+
<sourcecode lang='ruby' id='samplecode'>
|
1118
|
+
<name>
|
1119
|
+
Figure 1 — Ruby
|
1120
|
+
<em>code</em>
|
1121
|
+
</name>
|
1122
|
+
puts x
|
1123
|
+
</sourcecode>
|
1124
|
+
<sourcecode unnumbered='true'>
|
1125
|
+
Que?
|
1126
|
+
</sourcecode>
|
1127
|
+
</foreword>
|
1128
|
+
</preface>
|
1129
|
+
</iso-standard>
|
713
1130
|
INPUT
|
714
1131
|
#{HTML_HDR}
|
715
1132
|
<br/>
|
716
1133
|
<div>
|
717
1134
|
<h1 class="ForewordTitle">Foreword</h1>
|
718
|
-
<pre id="samplecode" class="prettyprint lang-rb"><br/>    <br/>  puts x<br/></pre>
|
1135
|
+
<pre id="samplecode" class="prettyprint lang-rb"><br/>        <br/>  puts x<br/></pre>
|
719
1136
|
<p class="SourceTitle" style="text-align:center;">Figure 1 — Ruby <i>code</i></p>
|
720
1137
|
<pre class='prettyprint '>
|
721
1138
|
<br/>
|
@@ -732,17 +1149,22 @@ Que?
|
|
732
1149
|
|
733
1150
|
it "processes sourcecode (Word)" do
|
734
1151
|
expect(xmlpp(IsoDoc::WordConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
735
|
-
<iso-standard xmlns=
|
736
|
-
|
737
|
-
<
|
738
|
-
|
1152
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
1153
|
+
<preface>
|
1154
|
+
<foreword>
|
1155
|
+
<sourcecode lang='ruby' id='samplecode'>
|
1156
|
+
<name>
|
1157
|
+
Figure 1 — Ruby
|
1158
|
+
<em>code</em>
|
1159
|
+
</name>
|
739
1160
|
puts x
|
740
1161
|
</sourcecode>
|
741
|
-
<sourcecode unnumbered=
|
1162
|
+
<sourcecode unnumbered='true'>
|
742
1163
|
Que?
|
743
1164
|
</sourcecode>
|
744
|
-
</foreword
|
745
|
-
|
1165
|
+
</foreword>
|
1166
|
+
</preface>
|
1167
|
+
</iso-standard>
|
746
1168
|
INPUT
|
747
1169
|
<html xmlns:epub="http://www.idpf.org/2007/ops" lang="en">
|
748
1170
|
<head><style/></head>
|
@@ -759,7 +1181,7 @@ Que?
|
|
759
1181
|
</p>
|
760
1182
|
<div>
|
761
1183
|
<h1 class="ForewordTitle">Foreword</h1>
|
762
|
-
<p id="samplecode" class="Sourcecode"><br/>    <br/>  puts x<br/></p><p class="SourceTitle" style="text-align:center;">Figure 1 — Ruby <i>code</i></p>
|
1184
|
+
<p id="samplecode" class="Sourcecode"><br/>        <br/>  puts x<br/></p><p class="SourceTitle" style="text-align:center;">Figure 1 — Ruby <i>code</i></p>
|
763
1185
|
<p class='Sourcecode'>
|
764
1186
|
<br/>
|
765
1187
|
Que?
|
@@ -795,7 +1217,7 @@ Que?
|
|
795
1217
|
<div>
|
796
1218
|
<h1 class="ForewordTitle">Foreword</h1>
|
797
1219
|
<pre id="samplecode" class="prettyprint "><br/>    <br/>  <xml><br/></pre>
|
798
|
-
<p class="SourceTitle" style="text-align:center;">
|
1220
|
+
<p class="SourceTitle" style="text-align:center;">XML code</p>
|
799
1221
|
</div>
|
800
1222
|
<p class="zzSTDTitle1"/>
|
801
1223
|
</div>
|
@@ -824,7 +1246,6 @@ Que?
|
|
824
1246
|
<div>
|
825
1247
|
<h1 class="ForewordTitle">Foreword</h1>
|
826
1248
|
<pre id="_" class="prettyprint ">puts "Hello, world." <1><br/>   %w{a b c}.each do |x|<br/>     puts x <2><br/>   end<br/><br/><1> This is one callout<br/><2> This is another callout</pre>
|
827
|
-
<p class='SourceTitle' style='text-align:center;'>Figure 1</p>
|
828
1249
|
</div>
|
829
1250
|
<p class="zzSTDTitle1"/>
|
830
1251
|
</div>
|
@@ -884,8 +1305,64 @@ Que?
|
|
884
1305
|
OUTPUT
|
885
1306
|
end
|
886
1307
|
|
1308
|
+
it "processes formulae (PresentationXML)" do
|
1309
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
1310
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1311
|
+
<preface><foreword>
|
1312
|
+
<formula id="_be9158af-7e93-4ee2-90c5-26d31c181934" unnumbered="true" keep-with-next="true" keep-lines-together="true">
|
1313
|
+
<stem type="AsciiMath">r = 1 %</stem>
|
1314
|
+
<dl id="_e4fe94fe-1cde-49d9-b1ad-743293b7e21d">
|
1315
|
+
<dt>
|
1316
|
+
<stem type="AsciiMath">r</stem>
|
1317
|
+
</dt>
|
1318
|
+
<dd>
|
1319
|
+
<p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the repeatability limit.</p>
|
1320
|
+
</dd>
|
1321
|
+
</dl>
|
1322
|
+
<note id="_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0">
|
1323
|
+
<p id="_511aaa98-4116-42af-8e5b-c87cdf5bfdc8">[durationUnits] is essentially a duration statement without the "P" prefix. "P" is unnecessary because between "G" and "U" duration is always expressed.</p>
|
1324
|
+
</note>
|
1325
|
+
</formula>
|
1326
|
+
<formula id="_be9158af-7e93-4ee2-90c5-26d31c181935">
|
1327
|
+
<stem type="AsciiMath">r = 1 %</stem>
|
1328
|
+
</formula>
|
1329
|
+
</foreword></preface>
|
1330
|
+
</iso-standard>
|
1331
|
+
INPUT
|
1332
|
+
<?xml version='1.0'?>
|
1333
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
1334
|
+
<preface>
|
1335
|
+
<foreword>
|
1336
|
+
<formula id='_be9158af-7e93-4ee2-90c5-26d31c181934' unnumbered='true' keep-with-next='true' keep-lines-together='true'>
|
1337
|
+
<stem type='AsciiMath'>r = 1 %</stem>
|
1338
|
+
<dl id='_e4fe94fe-1cde-49d9-b1ad-743293b7e21d'>
|
1339
|
+
<dt>
|
1340
|
+
<stem type='AsciiMath'>r</stem>
|
1341
|
+
</dt>
|
1342
|
+
<dd>
|
1343
|
+
<p id='_1b99995d-ff03-40f5-8f2e-ab9665a69b77'>is the repeatability limit.</p>
|
1344
|
+
</dd>
|
1345
|
+
</dl>
|
1346
|
+
<note id='_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0'>
|
1347
|
+
<name>NOTE</name>
|
1348
|
+
<p id='_511aaa98-4116-42af-8e5b-c87cdf5bfdc8'>
|
1349
|
+
[durationUnits] is essentially a duration statement without the "P"
|
1350
|
+
prefix. "P" is unnecessary because between "G" and "U" duration is
|
1351
|
+
always expressed.
|
1352
|
+
</p>
|
1353
|
+
</note>
|
1354
|
+
</formula>
|
1355
|
+
<formula id='_be9158af-7e93-4ee2-90c5-26d31c181935'>
|
1356
|
+
<name>1</name>
|
1357
|
+
<stem type='AsciiMath'>r = 1 %</stem>
|
1358
|
+
</formula>
|
1359
|
+
</foreword>
|
1360
|
+
</preface>
|
1361
|
+
</iso-standard>
|
1362
|
+
OUTPUT
|
1363
|
+
end
|
887
1364
|
|
888
|
-
it "processes formulae" do
|
1365
|
+
it "processes formulae (HTML)" do
|
889
1366
|
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
890
1367
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
891
1368
|
<preface><foreword>
|
@@ -900,10 +1377,11 @@ Que?
|
|
900
1377
|
</dd>
|
901
1378
|
</dl>
|
902
1379
|
<note id="_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0">
|
1380
|
+
<name>NOTE</name>
|
903
1381
|
<p id="_511aaa98-4116-42af-8e5b-c87cdf5bfdc8">[durationUnits] is essentially a duration statement without the "P" prefix. "P" is unnecessary because between "G" and "U" duration is always expressed.</p>
|
904
1382
|
</note>
|
905
1383
|
</formula>
|
906
|
-
<formula id="_be9158af-7e93-4ee2-90c5-26d31c181935">
|
1384
|
+
<formula id="_be9158af-7e93-4ee2-90c5-26d31c181935"><name>1</name>
|
907
1385
|
<stem type="AsciiMath">r = 1 %</stem>
|
908
1386
|
</formula>
|
909
1387
|
</foreword></preface>
|
@@ -946,10 +1424,11 @@ Que?
|
|
946
1424
|
</dd>
|
947
1425
|
</dl>
|
948
1426
|
<note id="_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0">
|
1427
|
+
<name>NOTE</name>
|
949
1428
|
<p id="_511aaa98-4116-42af-8e5b-c87cdf5bfdc8">[durationUnits] is essentially a duration statement without the "P" prefix. "P" is unnecessary because between "G" and "U" duration is always expressed.</p>
|
950
1429
|
</note>
|
951
1430
|
</formula>
|
952
|
-
<formula id="_be9158af-7e93-4ee2-90c5-26d31c181935">
|
1431
|
+
<formula id="_be9158af-7e93-4ee2-90c5-26d31c181935"><name>1</name>
|
953
1432
|
<stem type="AsciiMath">r = 1 %</stem>
|
954
1433
|
</formula>
|
955
1434
|
</foreword></preface>
|
@@ -1090,14 +1569,52 @@ World</p>
|
|
1090
1569
|
OUTPUT
|
1091
1570
|
end
|
1092
1571
|
|
1572
|
+
it "processes blockquotes (Presentation XML)" do
|
1573
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
1574
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1575
|
+
<preface><foreword>
|
1576
|
+
<quote id="_044bd364-c832-4b78-8fea-92242402a1d1">
|
1577
|
+
<source type="inline" bibitemid="ISO7301" citeas="ISO 7301:2011"><locality type="clause"><referenceFrom>1</referenceFrom></locality></source>
|
1578
|
+
<author>ISO</author>
|
1579
|
+
<p id="_d4fd0a61-f300-4285-abe6-602707590e53">This International Standard gives the minimum specifications for rice (<em>Oryza sativa</em> L.) which is subject to international trade. It is applicable to the following types: husked rice and milled rice, parboiled or not, intended for direct human consumption. It is neither applicable to other products derived from rice, nor to waxy rice (glutinous rice).</p>
|
1580
|
+
</quote>
|
1093
1581
|
|
1582
|
+
</foreword></preface>
|
1583
|
+
</iso-standard>
|
1584
|
+
INPUT
|
1585
|
+
<?xml version='1.0'?>
|
1586
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
1587
|
+
<preface>
|
1588
|
+
<foreword>
|
1589
|
+
<quote id='_044bd364-c832-4b78-8fea-92242402a1d1'>
|
1590
|
+
<source type='inline' bibitemid='ISO7301' citeas='ISO 7301:2011'>
|
1591
|
+
<locality type='clause'>
|
1592
|
+
<referenceFrom>1</referenceFrom>
|
1593
|
+
</locality>ISO 7301:2011, Clause 1
|
1594
|
+
</source>
|
1595
|
+
<author>ISO</author>
|
1596
|
+
<p id='_d4fd0a61-f300-4285-abe6-602707590e53'>
|
1597
|
+
This International Standard gives the minimum specifications for rice
|
1598
|
+
(
|
1599
|
+
<em>Oryza sativa</em>
|
1600
|
+
L.) which is subject to international trade. It is applicable to the
|
1601
|
+
following types: husked rice and milled rice, parboiled or not,
|
1602
|
+
intended for direct human consumption. It is neither applicable to
|
1603
|
+
other products derived from rice, nor to waxy rice (glutinous rice).
|
1604
|
+
</p>
|
1605
|
+
</quote>
|
1606
|
+
</foreword>
|
1607
|
+
</preface>
|
1608
|
+
</iso-standard>
|
1609
|
+
OUTPUT
|
1610
|
+
end
|
1094
1611
|
|
1095
|
-
it "processes blockquotes" do
|
1612
|
+
it "processes blockquotes (HTML)" do
|
1096
1613
|
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
1097
1614
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1098
1615
|
<preface><foreword>
|
1099
1616
|
<quote id="_044bd364-c832-4b78-8fea-92242402a1d1">
|
1100
|
-
<source type="inline" bibitemid="ISO7301" citeas="ISO 7301:2011"><locality type="clause"><referenceFrom>1</referenceFrom></locality
|
1617
|
+
<source type="inline" bibitemid="ISO7301" citeas="ISO 7301:2011"><locality type="clause"><referenceFrom>1</referenceFrom></locality>ISO 7301:2011, Clause 1</source>
|
1101
1618
|
<author>ISO</author>
|
1102
1619
|
<p id="_d4fd0a61-f300-4285-abe6-602707590e53">This International Standard gives the minimum specifications for rice (<em>Oryza sativa</em> L.) which is subject to international trade. It is applicable to the following types: husked rice and milled rice, parboiled or not, intended for direct human consumption. It is neither applicable to other products derived from rice, nor to waxy rice (glutinous rice).</p>
|
1103
1620
|
</quote>
|
@@ -1127,7 +1644,7 @@ World</p>
|
|
1127
1644
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1128
1645
|
<sections>
|
1129
1646
|
<terms>
|
1130
|
-
<term id="_extraneous_matter"><preferred>extraneous matter</preferred><admitted>EM</admitted>
|
1647
|
+
<term id="_extraneous_matter"><name>1.1.</name><preferred>extraneous matter</preferred><admitted>EM</admitted>
|
1131
1648
|
<domain>rice</domain>
|
1132
1649
|
<definition><p id="_318b3939-be09-46c4-a284-93f9826b981e">organic and inorganic components other than whole or broken kernels</p></definition>
|
1133
1650
|
</term>
|
@@ -1137,7 +1654,7 @@ World</p>
|
|
1137
1654
|
INPUT
|
1138
1655
|
#{HTML_HDR}
|
1139
1656
|
<p class="zzSTDTitle1"/>
|
1140
|
-
<div><h1
|
1657
|
+
<div><h1/>
|
1141
1658
|
<p class="TermNum" id="_extraneous_matter">1.1.</p><p class="Terms" style="text-align:left;">extraneous matter</p><p class="AltTerms" style="text-align:left;">EM</p>
|
1142
1659
|
|
1143
1660
|
<p id="_318b3939-be09-46c4-a284-93f9826b981e"><rice> organic and inorganic components other than whole or broken kernels</p>
|
@@ -1148,8 +1665,8 @@ World</p>
|
|
1148
1665
|
OUTPUT
|
1149
1666
|
end
|
1150
1667
|
|
1151
|
-
|
1152
|
-
expect(xmlpp(IsoDoc::
|
1668
|
+
it "processes permissions (Presentation XML)" do
|
1669
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
1153
1670
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1154
1671
|
<preface><foreword>
|
1155
1672
|
<permission id="_" keep-with-next="true" keep-lines-together="true">
|
@@ -1201,8 +1718,268 @@ World</p>
|
|
1201
1718
|
<bibliography><references id="_bibliography" obligation="informative" normative="false">
|
1202
1719
|
<title>Bibliography</title>
|
1203
1720
|
<bibitem id="rfc2616" type="standard"> <fetched>2020-03-27</fetched> <title format="text/plain" language="en" script="Latn">Hypertext Transfer Protocol — HTTP/1.1</title> <uri type="xml">https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2616.xml</uri> <uri type="src">https://www.rfc-editor.org/info/rfc2616</uri> <docidentifier type="IETF">RFC 2616</docidentifier> <docidentifier type="rfc-anchor">RFC2616</docidentifier> <docidentifier type="DOI">10.17487/RFC2616</docidentifier> <date type="published"> <on>1999-06</on> </date> <contributor> <role type="author"/> <person> <name> <completename language="en">R. Fielding</completename> </name> <affiliation> <organization> <name>IETF</name> <abbreviation>IETF</abbreviation> </organization> </affiliation> </person> </contributor> <contributor> <role type="author"/> <person> <name> <completename language="en">J. Gettys</completename> </name> <affiliation> <organization> <name>IETF</name> <abbreviation>IETF</abbreviation> </organization> </affiliation> </person> </contributor> <contributor> <role type="author"/> <person> <name> <completename language="en">J. Mogul</completename> </name> <affiliation> <organization> <name>IETF</name> <abbreviation>IETF</abbreviation> </organization> </affiliation> </person> </contributor> <contributor> <role type="author"/> <person> <name> <completename language="en">H. Frystyk</completename> </name> <affiliation> <organization> <name>IETF</name> <abbreviation>IETF</abbreviation> </organization> </affiliation> </person> </contributor> <contributor> <role type="author"/> <person> <name> <completename language="en">L. Masinter</completename> </name> <affiliation> <organization> <name>IETF</name> <abbreviation>IETF</abbreviation> </organization> </affiliation> </person> </contributor> <contributor> <role type="author"/> <person> <name> <completename language="en">P. Leach</completename> </name> <affiliation> <organization> <name>IETF</name> <abbreviation>IETF</abbreviation> </organization> </affiliation> </person> </contributor> <contributor> <role type="author"/> <person> <name> <completename language="en">T. Berners-Lee</completename> </name> <affiliation> <organization> <name>IETF</name> <abbreviation>IETF</abbreviation> </organization> </affiliation> </person> </contributor> <language>en</language> <script>Latn</script> <abstract format="text/plain" language="en" script="Latn">HTTP has been in use by the World-Wide Web global information initiative since 1990. This specification defines the protocol referred to as “HTTP/1.1”, and is an update to RFC 2068. [STANDARDS-TRACK]</abstract> <series type="main"> <title format="text/plain" language="en" script="Latn">RFC</title> <number>2616</number> </series> <place>Fremont, CA</place></bibitem>
|
1721
|
+
</references></bibliography>
|
1722
|
+
</iso-standard>
|
1723
|
+
INPUT
|
1724
|
+
<?xml version='1.0'?>
|
1725
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
1726
|
+
<preface>
|
1727
|
+
<foreword>
|
1728
|
+
<permission id='_' keep-with-next='true' keep-lines-together='true'>
|
1729
|
+
<name>Permission 1</name>
|
1730
|
+
<label>/ogc/recommendation/wfs/2</label>
|
1731
|
+
<inherit>/ss/584/2015/level/1</inherit>
|
1732
|
+
<inherit>
|
1733
|
+
<eref type='inline' bibitemid='rfc2616' citeas='RFC 2616'>RFC 2616 (HTTP/1.1)</eref>
|
1734
|
+
</inherit>
|
1735
|
+
<subject>user</subject>
|
1736
|
+
<classification>
|
1737
|
+
<tag>control-class</tag>
|
1738
|
+
<value>Technical</value>
|
1739
|
+
</classification>
|
1740
|
+
<classification>
|
1741
|
+
<tag>priority</tag>
|
1742
|
+
<value>P0</value>
|
1743
|
+
</classification>
|
1744
|
+
<classification>
|
1745
|
+
<tag>family</tag>
|
1746
|
+
<value>System and Communications Protection</value>
|
1747
|
+
</classification>
|
1748
|
+
<classification>
|
1749
|
+
<tag>family</tag>
|
1750
|
+
<value>System and Communications Protocols</value>
|
1751
|
+
</classification>
|
1752
|
+
<description>
|
1753
|
+
<p id='_'>
|
1754
|
+
I recommend
|
1755
|
+
<em>this</em>
|
1756
|
+
.
|
1757
|
+
</p>
|
1758
|
+
</description>
|
1759
|
+
<specification exclude='true' type='tabular'>
|
1760
|
+
<p id='_'>This is the object of the recommendation:</p>
|
1761
|
+
<table id='_'>
|
1762
|
+
<tbody>
|
1763
|
+
<tr>
|
1764
|
+
<td style='text-align:left;'>Object</td>
|
1765
|
+
<td style='text-align:left;'>Value</td>
|
1766
|
+
</tr>
|
1767
|
+
<tr>
|
1768
|
+
<td style='text-align:left;'>Mission</td>
|
1769
|
+
<td style='text-align:left;'>Accomplished</td>
|
1770
|
+
</tr>
|
1771
|
+
</tbody>
|
1772
|
+
</table>
|
1773
|
+
</specification>
|
1774
|
+
<description>
|
1775
|
+
<p id='_'>As for the measurement targets,</p>
|
1776
|
+
</description>
|
1777
|
+
<measurement-target exclude='false'>
|
1778
|
+
<p id='_'>The measurement target shall be measured as:</p>
|
1779
|
+
<formula id='_'>
|
1780
|
+
<name>1</name>
|
1781
|
+
<stem type='AsciiMath'>r/1 = 0</stem>
|
1782
|
+
</formula>
|
1783
|
+
</measurement-target>
|
1784
|
+
<verification exclude='false'>
|
1785
|
+
<p id='_'>The following code will be run for verification:</p>
|
1786
|
+
<sourcecode id='_'>
|
1787
|
+
CoreRoot(success): HttpResponse if (success) recommendation(label:
|
1788
|
+
success-response) end
|
1789
|
+
</sourcecode>
|
1790
|
+
</verification>
|
1791
|
+
<import exclude='true'>
|
1792
|
+
<sourcecode id='_'>success-response()</sourcecode>
|
1793
|
+
</import>
|
1794
|
+
</permission>
|
1795
|
+
</foreword>
|
1796
|
+
</preface>
|
1797
|
+
<bibliography>
|
1798
|
+
<references id='_bibliography' obligation='informative' normative='false'>
|
1799
|
+
<title depth="1">Bibliography</title>
|
1800
|
+
<bibitem id='rfc2616' type='standard'>
|
1801
|
+
<fetched>2020-03-27</fetched>
|
1802
|
+
<title format='text/plain' language='en' script='Latn'>Hypertext Transfer Protocol — HTTP/1.1</title>
|
1803
|
+
<uri type='xml'>https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2616.xml</uri>
|
1804
|
+
<uri type='src'>https://www.rfc-editor.org/info/rfc2616</uri>
|
1805
|
+
<docidentifier type='IETF'>RFC 2616</docidentifier>
|
1806
|
+
<docidentifier type='rfc-anchor'>RFC2616</docidentifier>
|
1807
|
+
<docidentifier type='DOI'>10.17487/RFC2616</docidentifier>
|
1808
|
+
<date type='published'>
|
1809
|
+
<on>1999-06</on>
|
1810
|
+
</date>
|
1811
|
+
<contributor>
|
1812
|
+
<role type='author'/>
|
1813
|
+
<person>
|
1814
|
+
<name>
|
1815
|
+
<completename language='en'>R. Fielding</completename>
|
1816
|
+
</name>
|
1817
|
+
<affiliation>
|
1818
|
+
<organization>
|
1819
|
+
<name>IETF</name>
|
1820
|
+
<abbreviation>IETF</abbreviation>
|
1821
|
+
</organization>
|
1822
|
+
</affiliation>
|
1823
|
+
</person>
|
1824
|
+
</contributor>
|
1825
|
+
<contributor>
|
1826
|
+
<role type='author'/>
|
1827
|
+
<person>
|
1828
|
+
<name>
|
1829
|
+
<completename language='en'>J. Gettys</completename>
|
1830
|
+
</name>
|
1831
|
+
<affiliation>
|
1832
|
+
<organization>
|
1833
|
+
<name>IETF</name>
|
1834
|
+
<abbreviation>IETF</abbreviation>
|
1835
|
+
</organization>
|
1836
|
+
</affiliation>
|
1837
|
+
</person>
|
1838
|
+
</contributor>
|
1839
|
+
<contributor>
|
1840
|
+
<role type='author'/>
|
1841
|
+
<person>
|
1842
|
+
<name>
|
1843
|
+
<completename language='en'>J. Mogul</completename>
|
1844
|
+
</name>
|
1845
|
+
<affiliation>
|
1846
|
+
<organization>
|
1847
|
+
<name>IETF</name>
|
1848
|
+
<abbreviation>IETF</abbreviation>
|
1849
|
+
</organization>
|
1850
|
+
</affiliation>
|
1851
|
+
</person>
|
1852
|
+
</contributor>
|
1853
|
+
<contributor>
|
1854
|
+
<role type='author'/>
|
1855
|
+
<person>
|
1856
|
+
<name>
|
1857
|
+
<completename language='en'>H. Frystyk</completename>
|
1858
|
+
</name>
|
1859
|
+
<affiliation>
|
1860
|
+
<organization>
|
1861
|
+
<name>IETF</name>
|
1862
|
+
<abbreviation>IETF</abbreviation>
|
1863
|
+
</organization>
|
1864
|
+
</affiliation>
|
1865
|
+
</person>
|
1866
|
+
</contributor>
|
1867
|
+
<contributor>
|
1868
|
+
<role type='author'/>
|
1869
|
+
<person>
|
1870
|
+
<name>
|
1871
|
+
<completename language='en'>L. Masinter</completename>
|
1872
|
+
</name>
|
1873
|
+
<affiliation>
|
1874
|
+
<organization>
|
1875
|
+
<name>IETF</name>
|
1876
|
+
<abbreviation>IETF</abbreviation>
|
1877
|
+
</organization>
|
1878
|
+
</affiliation>
|
1879
|
+
</person>
|
1880
|
+
</contributor>
|
1881
|
+
<contributor>
|
1882
|
+
<role type='author'/>
|
1883
|
+
<person>
|
1884
|
+
<name>
|
1885
|
+
<completename language='en'>P. Leach</completename>
|
1886
|
+
</name>
|
1887
|
+
<affiliation>
|
1888
|
+
<organization>
|
1889
|
+
<name>IETF</name>
|
1890
|
+
<abbreviation>IETF</abbreviation>
|
1891
|
+
</organization>
|
1892
|
+
</affiliation>
|
1893
|
+
</person>
|
1894
|
+
</contributor>
|
1895
|
+
<contributor>
|
1896
|
+
<role type='author'/>
|
1897
|
+
<person>
|
1898
|
+
<name>
|
1899
|
+
<completename language='en'>T. Berners-Lee</completename>
|
1900
|
+
</name>
|
1901
|
+
<affiliation>
|
1902
|
+
<organization>
|
1903
|
+
<name>IETF</name>
|
1904
|
+
<abbreviation>IETF</abbreviation>
|
1905
|
+
</organization>
|
1906
|
+
</affiliation>
|
1907
|
+
</person>
|
1908
|
+
</contributor>
|
1909
|
+
<language>en</language>
|
1910
|
+
<script>Latn</script>
|
1911
|
+
<abstract format='text/plain' language='en' script='Latn'>
|
1912
|
+
HTTP has been in use by the World-Wide Web global information
|
1913
|
+
initiative since 1990. This specification defines the protocol
|
1914
|
+
referred to as “HTTP/1.1”, and is an update to RFC 2068.
|
1915
|
+
[STANDARDS-TRACK]
|
1916
|
+
</abstract>
|
1917
|
+
<series type='main'>
|
1918
|
+
<title format='text/plain' language='en' script='Latn'>RFC</title>
|
1919
|
+
<number>2616</number>
|
1920
|
+
</series>
|
1921
|
+
<place>Fremont, CA</place>
|
1922
|
+
</bibitem>
|
1923
|
+
</references>
|
1924
|
+
</bibliography>
|
1925
|
+
</iso-standard>
|
1926
|
+
OUTPUT
|
1927
|
+
end
|
1204
1928
|
|
1205
|
-
|
1929
|
+
it "processes permissions (HTML)" do
|
1930
|
+
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
1931
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1932
|
+
<preface><foreword>
|
1933
|
+
<permission id="_" keep-with-next="true" keep-lines-together="true">
|
1934
|
+
<name>Permission 1</name>
|
1935
|
+
<label>/ogc/recommendation/wfs/2</label>
|
1936
|
+
<inherit>/ss/584/2015/level/1</inherit>
|
1937
|
+
<inherit><eref type="inline" bibitemid="rfc2616" citeas="RFC 2616">RFC 2616 (HTTP/1.1)</eref></inherit>
|
1938
|
+
<subject>user</subject>
|
1939
|
+
<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>
|
1940
|
+
<description>
|
1941
|
+
<p id="_">I recommend <em>this</em>.</p>
|
1942
|
+
</description>
|
1943
|
+
<specification exclude="true" type="tabular">
|
1944
|
+
<p id="_">This is the object of the recommendation:</p>
|
1945
|
+
<table id="_">
|
1946
|
+
<tbody>
|
1947
|
+
<tr>
|
1948
|
+
<td style="text-align:left;">Object</td>
|
1949
|
+
<td style="text-align:left;">Value</td>
|
1950
|
+
</tr>
|
1951
|
+
<tr>
|
1952
|
+
<td style="text-align:left;">Mission</td>
|
1953
|
+
<td style="text-align:left;">Accomplished</td>
|
1954
|
+
</tr>
|
1955
|
+
</tbody>
|
1956
|
+
</table>
|
1957
|
+
</specification>
|
1958
|
+
<description>
|
1959
|
+
<p id="_">As for the measurement targets,</p>
|
1960
|
+
</description>
|
1961
|
+
<measurement-target exclude="false">
|
1962
|
+
<p id="_">The measurement target shall be measured as:</p>
|
1963
|
+
<formula id="_">
|
1964
|
+
<stem type="AsciiMath">r/1 = 0</stem>
|
1965
|
+
</formula>
|
1966
|
+
</measurement-target>
|
1967
|
+
<verification exclude="false">
|
1968
|
+
<p id="_">The following code will be run for verification:</p>
|
1969
|
+
<sourcecode id="_">CoreRoot(success): HttpResponse
|
1970
|
+
if (success)
|
1971
|
+
recommendation(label: success-response)
|
1972
|
+
end
|
1973
|
+
</sourcecode>
|
1974
|
+
</verification>
|
1975
|
+
<import exclude="true">
|
1976
|
+
<sourcecode id="_">success-response()</sourcecode>
|
1977
|
+
</import>
|
1978
|
+
</permission>
|
1979
|
+
</foreword></preface>
|
1980
|
+
<bibliography><references id="_bibliography" obligation="informative" normative="false">
|
1981
|
+
<title>Bibliography</title>
|
1982
|
+
<bibitem id="rfc2616" type="standard"> <fetched>2020-03-27</fetched> <title format="text/plain" language="en" script="Latn">Hypertext Transfer Protocol — HTTP/1.1</title> <uri type="xml">https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2616.xml</uri> <uri type="src">https://www.rfc-editor.org/info/rfc2616</uri> <docidentifier type="IETF">RFC 2616</docidentifier> <docidentifier type="rfc-anchor">RFC2616</docidentifier> <docidentifier type="DOI">10.17487/RFC2616</docidentifier> <date type="published"> <on>1999-06</on> </date> <contributor> <role type="author"/> <person> <name> <completename language="en">R. Fielding</completename> </name> <affiliation> <organization> <name>IETF</name> <abbreviation>IETF</abbreviation> </organization> </affiliation> </person> </contributor> <contributor> <role type="author"/> <person> <name> <completename language="en">J. Gettys</completename> </name> <affiliation> <organization> <name>IETF</name> <abbreviation>IETF</abbreviation> </organization> </affiliation> </person> </contributor> <contributor> <role type="author"/> <person> <name> <completename language="en">J. Mogul</completename> </name> <affiliation> <organization> <name>IETF</name> <abbreviation>IETF</abbreviation> </organization> </affiliation> </person> </contributor> <contributor> <role type="author"/> <person> <name> <completename language="en">H. Frystyk</completename> </name> <affiliation> <organization> <name>IETF</name> <abbreviation>IETF</abbreviation> </organization> </affiliation> </person> </contributor> <contributor> <role type="author"/> <person> <name> <completename language="en">L. Masinter</completename> </name> <affiliation> <organization> <name>IETF</name> <abbreviation>IETF</abbreviation> </organization> </affiliation> </person> </contributor> <contributor> <role type="author"/> <person> <name> <completename language="en">P. Leach</completename> </name> <affiliation> <organization> <name>IETF</name> <abbreviation>IETF</abbreviation> </organization> </affiliation> </person> </contributor> <contributor> <role type="author"/> <person> <name> <completename language="en">T. Berners-Lee</completename> </name> <affiliation> <organization> <name>IETF</name> <abbreviation>IETF</abbreviation> </organization> </affiliation> </person> </contributor> <language>en</language> <script>Latn</script> <abstract format="text/plain" language="en" script="Latn">HTTP has been in use by the World-Wide Web global information initiative since 1990. This specification defines the protocol referred to as “HTTP/1.1”, and is an update to RFC 2068. [STANDARDS-TRACK]</abstract> <series type="main"> <title format="text/plain" language="en" script="Latn">RFC</title> <number>2616</number> </series> <place>Fremont, CA</place></bibitem>
|
1206
1983
|
</references></bibliography>
|
1207
1984
|
</iso-standard>
|
1208
1985
|
INPUT
|
@@ -1227,7 +2004,7 @@ Inherits: <a href='#rfc2616'>RFC 2616 (HTTP/1.1)</a>
|
|
1227
2004
|
</div>
|
1228
2005
|
<div class="requirement-measurement-target">
|
1229
2006
|
<p id="_">The measurement target shall be measured as:</p>
|
1230
|
-
<div id="_"><div class="formula"><p><span class="stem">(#(r/1 = 0)#)</span
|
2007
|
+
<div id="_"><div class="formula"><p><span class="stem">(#(r/1 = 0)#)</span></p></div></div>
|
1231
2008
|
|
1232
2009
|
|
1233
2010
|
</div>
|
@@ -1253,11 +2030,122 @@ Inherits: <a href='#rfc2616'>RFC 2616 (HTTP/1.1)</a>
|
|
1253
2030
|
OUTPUT
|
1254
2031
|
end
|
1255
2032
|
|
1256
|
-
|
2033
|
+
it "processes requirements (Presentation XML)" do
|
2034
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
2035
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
2036
|
+
<preface><foreword>
|
2037
|
+
<requirement id="A" unnumbered="true" keep-with-next="true" keep-lines-together="true">
|
2038
|
+
<title>A New Requirement</title>
|
2039
|
+
<label>/ogc/recommendation/wfs/2</label>
|
2040
|
+
<inherit>/ss/584/2015/level/1</inherit>
|
2041
|
+
<subject>user</subject>
|
2042
|
+
<description>
|
2043
|
+
<p id="_">I recommend <em>this</em>.</p>
|
2044
|
+
</description>
|
2045
|
+
<specification exclude="true" type="tabular">
|
2046
|
+
<p id="_">This is the object of the recommendation:</p>
|
2047
|
+
<table id="_">
|
2048
|
+
<tbody>
|
2049
|
+
<tr>
|
2050
|
+
<td style="text-align:left;">Object</td>
|
2051
|
+
<td style="text-align:left;">Value</td>
|
2052
|
+
</tr>
|
2053
|
+
<tr>
|
2054
|
+
<td style="text-align:left;">Mission</td>
|
2055
|
+
<td style="text-align:left;">Accomplished</td>
|
2056
|
+
</tr>
|
2057
|
+
</tbody>
|
2058
|
+
</table>
|
2059
|
+
</specification>
|
2060
|
+
<description>
|
2061
|
+
<p id="_">As for the measurement targets,</p>
|
2062
|
+
</description>
|
2063
|
+
<measurement-target exclude="false" keep-with-next="true" keep-lines-together="true">
|
2064
|
+
<p id="_">The measurement target shall be measured as:</p>
|
2065
|
+
<formula id="B">
|
2066
|
+
<stem type="AsciiMath">r/1 = 0</stem>
|
2067
|
+
</formula>
|
2068
|
+
</measurement-target>
|
2069
|
+
<verification exclude="false">
|
2070
|
+
<p id="_">The following code will be run for verification:</p>
|
2071
|
+
<sourcecode id="_">CoreRoot(success): HttpResponse
|
2072
|
+
if (success)
|
2073
|
+
recommendation(label: success-response)
|
2074
|
+
end
|
2075
|
+
</sourcecode>
|
2076
|
+
</verification>
|
2077
|
+
<import exclude="true">
|
2078
|
+
<sourcecode id="_">success-response()</sourcecode>
|
2079
|
+
</import>
|
2080
|
+
</requirement>
|
2081
|
+
</foreword></preface>
|
2082
|
+
</iso-standard>
|
2083
|
+
INPUT
|
2084
|
+
<?xml version='1.0'?>
|
2085
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
2086
|
+
<preface>
|
2087
|
+
<foreword>
|
2088
|
+
<requirement id='A' unnumbered='true' keep-with-next='true' keep-lines-together='true'>
|
2089
|
+
<name>Requirement</name>
|
2090
|
+
<title>A New Requirement</title>
|
2091
|
+
<label>/ogc/recommendation/wfs/2</label>
|
2092
|
+
<inherit>/ss/584/2015/level/1</inherit>
|
2093
|
+
<subject>user</subject>
|
2094
|
+
<description>
|
2095
|
+
<p id='_'>
|
2096
|
+
I recommend
|
2097
|
+
<em>this</em>
|
2098
|
+
.
|
2099
|
+
</p>
|
2100
|
+
</description>
|
2101
|
+
<specification exclude='true' type='tabular'>
|
2102
|
+
<p id='_'>This is the object of the recommendation:</p>
|
2103
|
+
<table id='_'>
|
2104
|
+
<tbody>
|
2105
|
+
<tr>
|
2106
|
+
<td style='text-align:left;'>Object</td>
|
2107
|
+
<td style='text-align:left;'>Value</td>
|
2108
|
+
</tr>
|
2109
|
+
<tr>
|
2110
|
+
<td style='text-align:left;'>Mission</td>
|
2111
|
+
<td style='text-align:left;'>Accomplished</td>
|
2112
|
+
</tr>
|
2113
|
+
</tbody>
|
2114
|
+
</table>
|
2115
|
+
</specification>
|
2116
|
+
<description>
|
2117
|
+
<p id='_'>As for the measurement targets,</p>
|
2118
|
+
</description>
|
2119
|
+
<measurement-target exclude='false' keep-with-next='true' keep-lines-together='true'>
|
2120
|
+
<p id='_'>The measurement target shall be measured as:</p>
|
2121
|
+
<formula id='B'>
|
2122
|
+
<name>1</name>
|
2123
|
+
<stem type='AsciiMath'>r/1 = 0</stem>
|
2124
|
+
</formula>
|
2125
|
+
</measurement-target>
|
2126
|
+
<verification exclude='false'>
|
2127
|
+
<p id='_'>The following code will be run for verification:</p>
|
2128
|
+
<sourcecode id='_'>
|
2129
|
+
CoreRoot(success): HttpResponse if (success) recommendation(label:
|
2130
|
+
success-response) end
|
2131
|
+
</sourcecode>
|
2132
|
+
</verification>
|
2133
|
+
<import exclude='true'>
|
2134
|
+
<sourcecode id='_'>success-response()</sourcecode>
|
2135
|
+
</import>
|
2136
|
+
</requirement>
|
2137
|
+
</foreword>
|
2138
|
+
</preface>
|
2139
|
+
</iso-standard>
|
2140
|
+
OUTPUT
|
2141
|
+
end
|
2142
|
+
|
2143
|
+
it "processes requirements (HTML)" do
|
1257
2144
|
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
1258
2145
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1259
2146
|
<preface><foreword>
|
1260
2147
|
<requirement id="A" unnumbered="true" keep-with-next="true" keep-lines-together="true">
|
2148
|
+
<name>Requirement</name>
|
1261
2149
|
<title>A New Requirement</title>
|
1262
2150
|
<label>/ogc/recommendation/wfs/2</label>
|
1263
2151
|
<inherit>/ss/584/2015/level/1</inherit>
|
@@ -1320,7 +2208,7 @@ Inherits: <a href='#rfc2616'>RFC 2616 (HTTP/1.1)</a>
|
|
1320
2208
|
</div>
|
1321
2209
|
<div class="requirement-measurement-target" style='page-break-after: avoid;page-break-inside: avoid;'>
|
1322
2210
|
<p id="_">The measurement target shall be measured as:</p>
|
1323
|
-
<div id="B"><div class="formula"><p><span class="stem">(#(r/1 = 0)#)</span
|
2211
|
+
<div id="B"><div class="formula"><p><span class="stem">(#(r/1 = 0)#)</span></p></div></div>
|
1324
2212
|
|
1325
2213
|
|
1326
2214
|
</div>
|
@@ -1338,7 +2226,125 @@ Inherits: <a href='#rfc2616'>RFC 2616 (HTTP/1.1)</a>
|
|
1338
2226
|
OUTPUT
|
1339
2227
|
end
|
1340
2228
|
|
1341
|
-
it "processes requirements in French" do
|
2229
|
+
it "processes requirements in French (Presentation XML)" do
|
2230
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
2231
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
2232
|
+
<bibdata>
|
2233
|
+
<language>fr</language>
|
2234
|
+
<script>Latn</script>
|
2235
|
+
</bibdata>
|
2236
|
+
<preface><foreword>
|
2237
|
+
<requirement id="A" unnumbered="true">
|
2238
|
+
<title>A New Requirement</title>
|
2239
|
+
<label>/ogc/recommendation/wfs/2</label>
|
2240
|
+
<inherit>/ss/584/2015/level/1</inherit>
|
2241
|
+
<subject>user</subject>
|
2242
|
+
<description>
|
2243
|
+
<p id="_">I recommend <em>this</em>.</p>
|
2244
|
+
</description>
|
2245
|
+
<specification exclude="true" type="tabular">
|
2246
|
+
<p id="_">This is the object of the recommendation:</p>
|
2247
|
+
<table id="_">
|
2248
|
+
<tbody>
|
2249
|
+
<tr>
|
2250
|
+
<td style="text-align:left;">Object</td>
|
2251
|
+
<td style="text-align:left;">Value</td>
|
2252
|
+
</tr>
|
2253
|
+
<tr>
|
2254
|
+
<td style="text-align:left;">Mission</td>
|
2255
|
+
<td style="text-align:left;">Accomplished</td>
|
2256
|
+
</tr>
|
2257
|
+
</tbody>
|
2258
|
+
</table>
|
2259
|
+
</specification>
|
2260
|
+
<description>
|
2261
|
+
<p id="_">As for the measurement targets,</p>
|
2262
|
+
</description>
|
2263
|
+
<measurement-target exclude="false">
|
2264
|
+
<p id="_">The measurement target shall be measured as:</p>
|
2265
|
+
<formula id="B">
|
2266
|
+
<stem type="AsciiMath">r/1 = 0</stem>
|
2267
|
+
</formula>
|
2268
|
+
</measurement-target>
|
2269
|
+
<verification exclude="false">
|
2270
|
+
<p id="_">The following code will be run for verification:</p>
|
2271
|
+
<sourcecode id="_">CoreRoot(success): HttpResponse
|
2272
|
+
if (success)
|
2273
|
+
recommendation(label: success-response)
|
2274
|
+
end
|
2275
|
+
</sourcecode>
|
2276
|
+
</verification>
|
2277
|
+
<import exclude="true">
|
2278
|
+
<sourcecode id="_">success-response()</sourcecode>
|
2279
|
+
</import>
|
2280
|
+
</requirement>
|
2281
|
+
</foreword></preface>
|
2282
|
+
</iso-standard>
|
2283
|
+
INPUT
|
2284
|
+
<?xml version='1.0'?>
|
2285
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
2286
|
+
<bibdata>
|
2287
|
+
<language>fr</language>
|
2288
|
+
<script>Latn</script>
|
2289
|
+
</bibdata>
|
2290
|
+
<preface>
|
2291
|
+
<foreword>
|
2292
|
+
<requirement id='A' unnumbered='true'>
|
2293
|
+
<name>Exigence</name>
|
2294
|
+
<title>A New Requirement</title>
|
2295
|
+
<label>/ogc/recommendation/wfs/2</label>
|
2296
|
+
<inherit>/ss/584/2015/level/1</inherit>
|
2297
|
+
<subject>user</subject>
|
2298
|
+
<description>
|
2299
|
+
<p id='_'>
|
2300
|
+
I recommend
|
2301
|
+
<em>this</em>
|
2302
|
+
.
|
2303
|
+
</p>
|
2304
|
+
</description>
|
2305
|
+
<specification exclude='true' type='tabular'>
|
2306
|
+
<p id='_'>This is the object of the recommendation:</p>
|
2307
|
+
<table id='_'>
|
2308
|
+
<tbody>
|
2309
|
+
<tr>
|
2310
|
+
<td style='text-align:left;'>Object</td>
|
2311
|
+
<td style='text-align:left;'>Value</td>
|
2312
|
+
</tr>
|
2313
|
+
<tr>
|
2314
|
+
<td style='text-align:left;'>Mission</td>
|
2315
|
+
<td style='text-align:left;'>Accomplished</td>
|
2316
|
+
</tr>
|
2317
|
+
</tbody>
|
2318
|
+
</table>
|
2319
|
+
</specification>
|
2320
|
+
<description>
|
2321
|
+
<p id='_'>As for the measurement targets,</p>
|
2322
|
+
</description>
|
2323
|
+
<measurement-target exclude='false'>
|
2324
|
+
<p id='_'>The measurement target shall be measured as:</p>
|
2325
|
+
<formula id='B'>
|
2326
|
+
<name>1</name>
|
2327
|
+
<stem type='AsciiMath'>r/1 = 0</stem>
|
2328
|
+
</formula>
|
2329
|
+
</measurement-target>
|
2330
|
+
<verification exclude='false'>
|
2331
|
+
<p id='_'>The following code will be run for verification:</p>
|
2332
|
+
<sourcecode id='_'>
|
2333
|
+
CoreRoot(success): HttpResponse if (success) recommendation(label:
|
2334
|
+
success-response) end
|
2335
|
+
</sourcecode>
|
2336
|
+
</verification>
|
2337
|
+
<import exclude='true'>
|
2338
|
+
<sourcecode id='_'>success-response()</sourcecode>
|
2339
|
+
</import>
|
2340
|
+
</requirement>
|
2341
|
+
</foreword>
|
2342
|
+
</preface>
|
2343
|
+
</iso-standard>
|
2344
|
+
OUTPUT
|
2345
|
+
end
|
2346
|
+
|
2347
|
+
it "processes requirements in French (HTML)" do
|
1342
2348
|
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
1343
2349
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1344
2350
|
<bibdata>
|
@@ -1347,6 +2353,7 @@ Inherits: <a href='#rfc2616'>RFC 2616 (HTTP/1.1)</a>
|
|
1347
2353
|
</bibdata>
|
1348
2354
|
<preface><foreword>
|
1349
2355
|
<requirement id="A" unnumbered="true">
|
2356
|
+
<name>Exigence</name>
|
1350
2357
|
<title>A New Requirement</title>
|
1351
2358
|
<label>/ogc/recommendation/wfs/2</label>
|
1352
2359
|
<inherit>/ss/584/2015/level/1</inherit>
|
@@ -1425,7 +2432,6 @@ Inherits: <a href='#rfc2616'>RFC 2616 (HTTP/1.1)</a>
|
|
1425
2432
|
<div id='B'><div class='formula'>
|
1426
2433
|
<p>
|
1427
2434
|
<span class='stem'>(#(r/1 = 0)#)</span>
|
1428
|
-
  (1)
|
1429
2435
|
</p>
|
1430
2436
|
</div>
|
1431
2437
|
</div>
|
@@ -1454,11 +2460,130 @@ Inherits: <a href='#rfc2616'>RFC 2616 (HTTP/1.1)</a>
|
|
1454
2460
|
OUTPUT
|
1455
2461
|
end
|
1456
2462
|
|
1457
|
-
|
2463
|
+
it "processes recommendation (Presentation XML)" do
|
2464
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
2465
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
2466
|
+
<preface><foreword>
|
2467
|
+
<recommendation id="_" obligation="shall,could" keep-with-next="true" keep-lines-together="true">
|
2468
|
+
<label>/ogc/recommendation/wfs/2</label>
|
2469
|
+
<inherit>/ss/584/2015/level/1</inherit>
|
2470
|
+
<classification><tag>type</tag><value>text</value></classification>
|
2471
|
+
<classification><tag>language</tag><value>BASIC</value></classification>
|
2472
|
+
<subject>user</subject>
|
2473
|
+
<description>
|
2474
|
+
<p id="_">I recommend <em>this</em>.</p>
|
2475
|
+
</description>
|
2476
|
+
<specification exclude="true" type="tabular">
|
2477
|
+
<p id="_">This is the object of the recommendation:</p>
|
2478
|
+
<table id="_">
|
2479
|
+
<tbody>
|
2480
|
+
<tr>
|
2481
|
+
<td style="text-align:left;">Object</td>
|
2482
|
+
<td style="text-align:left;">Value</td>
|
2483
|
+
</tr>
|
2484
|
+
<tr>
|
2485
|
+
<td style="text-align:left;">Mission</td>
|
2486
|
+
<td style="text-align:left;">Accomplished</td>
|
2487
|
+
</tr>
|
2488
|
+
</tbody>
|
2489
|
+
</table>
|
2490
|
+
</specification>
|
2491
|
+
<description>
|
2492
|
+
<p id="_">As for the measurement targets,</p>
|
2493
|
+
</description>
|
2494
|
+
<measurement-target exclude="false">
|
2495
|
+
<p id="_">The measurement target shall be measured as:</p>
|
2496
|
+
<formula id="_">
|
2497
|
+
<stem type="AsciiMath">r/1 = 0</stem>
|
2498
|
+
</formula>
|
2499
|
+
</measurement-target>
|
2500
|
+
<verification exclude="false">
|
2501
|
+
<p id="_">The following code will be run for verification:</p>
|
2502
|
+
<sourcecode id="_">CoreRoot(success): HttpResponse
|
2503
|
+
if (success)
|
2504
|
+
recommendation(label: success-response)
|
2505
|
+
end
|
2506
|
+
</sourcecode>
|
2507
|
+
</verification>
|
2508
|
+
<import exclude="true">
|
2509
|
+
<sourcecode id="_">success-response()</sourcecode>
|
2510
|
+
</import>
|
2511
|
+
</recommendation>
|
2512
|
+
</foreword></preface>
|
2513
|
+
</iso-standard>
|
2514
|
+
INPUT
|
2515
|
+
<?xml version='1.0'?>
|
2516
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
2517
|
+
<preface>
|
2518
|
+
<foreword>
|
2519
|
+
<recommendation id='_' obligation='shall,could' keep-with-next='true' keep-lines-together='true'>
|
2520
|
+
<name>Recommendation 1</name>
|
2521
|
+
<label>/ogc/recommendation/wfs/2</label>
|
2522
|
+
<inherit>/ss/584/2015/level/1</inherit>
|
2523
|
+
<classification>
|
2524
|
+
<tag>type</tag>
|
2525
|
+
<value>text</value>
|
2526
|
+
</classification>
|
2527
|
+
<classification>
|
2528
|
+
<tag>language</tag>
|
2529
|
+
<value>BASIC</value>
|
2530
|
+
</classification>
|
2531
|
+
<subject>user</subject>
|
2532
|
+
<description>
|
2533
|
+
<p id='_'>
|
2534
|
+
I recommend
|
2535
|
+
<em>this</em>
|
2536
|
+
.
|
2537
|
+
</p>
|
2538
|
+
</description>
|
2539
|
+
<specification exclude='true' type='tabular'>
|
2540
|
+
<p id='_'>This is the object of the recommendation:</p>
|
2541
|
+
<table id='_'>
|
2542
|
+
<tbody>
|
2543
|
+
<tr>
|
2544
|
+
<td style='text-align:left;'>Object</td>
|
2545
|
+
<td style='text-align:left;'>Value</td>
|
2546
|
+
</tr>
|
2547
|
+
<tr>
|
2548
|
+
<td style='text-align:left;'>Mission</td>
|
2549
|
+
<td style='text-align:left;'>Accomplished</td>
|
2550
|
+
</tr>
|
2551
|
+
</tbody>
|
2552
|
+
</table>
|
2553
|
+
</specification>
|
2554
|
+
<description>
|
2555
|
+
<p id='_'>As for the measurement targets,</p>
|
2556
|
+
</description>
|
2557
|
+
<measurement-target exclude='false'>
|
2558
|
+
<p id='_'>The measurement target shall be measured as:</p>
|
2559
|
+
<formula id='_'>
|
2560
|
+
<name>1</name>
|
2561
|
+
<stem type='AsciiMath'>r/1 = 0</stem>
|
2562
|
+
</formula>
|
2563
|
+
</measurement-target>
|
2564
|
+
<verification exclude='false'>
|
2565
|
+
<p id='_'>The following code will be run for verification:</p>
|
2566
|
+
<sourcecode id='_'>
|
2567
|
+
CoreRoot(success): HttpResponse if (success) recommendation(label:
|
2568
|
+
success-response) end
|
2569
|
+
</sourcecode>
|
2570
|
+
</verification>
|
2571
|
+
<import exclude='true'>
|
2572
|
+
<sourcecode id='_'>success-response()</sourcecode>
|
2573
|
+
</import>
|
2574
|
+
</recommendation>
|
2575
|
+
</foreword>
|
2576
|
+
</preface>
|
2577
|
+
</iso-standard>
|
2578
|
+
OUTPUT
|
2579
|
+
end
|
2580
|
+
|
2581
|
+
it "processes recommendation (HTML)" do
|
1458
2582
|
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
1459
2583
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1460
2584
|
<preface><foreword>
|
1461
2585
|
<recommendation id="_" obligation="shall,could" keep-with-next="true" keep-lines-together="true">
|
2586
|
+
<name>Recommendation 1</name>
|
1462
2587
|
<label>/ogc/recommendation/wfs/2</label>
|
1463
2588
|
<inherit>/ss/584/2015/level/1</inherit>
|
1464
2589
|
<classification><tag>type</tag><value>text</value></classification>
|
@@ -1521,7 +2646,7 @@ end
|
|
1521
2646
|
</div>
|
1522
2647
|
<div class="requirement-measurement-target">
|
1523
2648
|
<p id="_">The measurement target shall be measured as:</p>
|
1524
|
-
<div id="_"><div class="formula"><p><span class="stem">(#(r/1 = 0)#)</span
|
2649
|
+
<div id="_"><div class="formula"><p><span class="stem">(#(r/1 = 0)#)</span></p></div></div>
|
1525
2650
|
|
1526
2651
|
|
1527
2652
|
</div>
|
@@ -1539,8 +2664,8 @@ end
|
|
1539
2664
|
OUTPUT
|
1540
2665
|
end
|
1541
2666
|
|
1542
|
-
|
1543
|
-
expect(xmlpp(IsoDoc::
|
2667
|
+
it "processes pseudocode (Presentation XML)" do
|
2668
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
1544
2669
|
<itu-standard xmlns="http://riboseinc.com/isoxml">
|
1545
2670
|
<bibdata>
|
1546
2671
|
<language>en</language>
|
@@ -1550,6 +2675,59 @@ end
|
|
1550
2675
|
<smallcap>B</smallcap></p>
|
1551
2676
|
<p id="_"> <em>C</em></p></figure>
|
1552
2677
|
</preface></itu-standard>
|
2678
|
+
INPUT
|
2679
|
+
<?xml version='1.0'?>
|
2680
|
+
<itu-standard xmlns='http://riboseinc.com/isoxml'>
|
2681
|
+
<bibdata>
|
2682
|
+
<language>en</language>
|
2683
|
+
</bibdata>
|
2684
|
+
<preface>
|
2685
|
+
<foreword>
|
2686
|
+
<figure id='_' class='pseudocode' keep-with-next='true' keep-lines-together='true'>
|
2687
|
+
<name>Figure 1 — Label</name>
|
2688
|
+
<p id='_'>
|
2689
|
+
  
|
2690
|
+
<strong>A</strong>
|
2691
|
+
<br/>
|
2692
|
+
        
|
2693
|
+
<smallcap>B</smallcap>
|
2694
|
+
</p>
|
2695
|
+
<p id='_'>
|
2696
|
+
  
|
2697
|
+
<em>C</em>
|
2698
|
+
</p>
|
2699
|
+
</figure>
|
2700
|
+
</foreword>
|
2701
|
+
</preface>
|
2702
|
+
</itu-standard>
|
2703
|
+
OUTPUT
|
2704
|
+
end
|
2705
|
+
|
2706
|
+
it "processes pseudocode (HTML)" do
|
2707
|
+
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
2708
|
+
<itu-standard xmlns='http://riboseinc.com/isoxml'>
|
2709
|
+
<bibdata>
|
2710
|
+
<language>en</language>
|
2711
|
+
</bibdata>
|
2712
|
+
<preface>
|
2713
|
+
<foreword>
|
2714
|
+
<figure id='_' class='pseudocode' keep-with-next='true' keep-lines-together='true'>
|
2715
|
+
<name>Figure 1 — Label</name>
|
2716
|
+
<p id='_'>
|
2717
|
+
  
|
2718
|
+
<strong>A</strong>
|
2719
|
+
<br/>
|
2720
|
+
        
|
2721
|
+
<smallcap>B</smallcap>
|
2722
|
+
</p>
|
2723
|
+
<p id='_'>
|
2724
|
+
  
|
2725
|
+
<em>C</em>
|
2726
|
+
</p>
|
2727
|
+
</figure>
|
2728
|
+
</foreword>
|
2729
|
+
</preface>
|
2730
|
+
</itu-standard>
|
1553
2731
|
INPUT
|
1554
2732
|
#{HTML_HDR}
|
1555
2733
|
<br/>
|
@@ -1569,18 +2747,32 @@ OUTPUT
|
|
1569
2747
|
it "processes pseudocode (Word)" do
|
1570
2748
|
FileUtils.rm_f "test.doc"
|
1571
2749
|
IsoDoc::WordConvert.new({}).convert("test", <<~"INPUT", false)
|
1572
|
-
<itu-standard xmlns=
|
1573
|
-
|
2750
|
+
<itu-standard xmlns='http://riboseinc.com/isoxml'>
|
2751
|
+
<bibdata>
|
1574
2752
|
<language>en</language>
|
1575
|
-
|
1576
|
-
|
1577
|
-
|
1578
|
-
|
1579
|
-
<
|
1580
|
-
|
2753
|
+
</bibdata>
|
2754
|
+
<preface>
|
2755
|
+
<foreword>
|
2756
|
+
<figure id='_' class='pseudocode' keep-with-next='true' keep-lines-together='true'>
|
2757
|
+
<name>Figure 1 — Label</name>
|
2758
|
+
<p id='_'>
|
2759
|
+
  
|
2760
|
+
<strong>A</strong>
|
2761
|
+
<br/>
|
2762
|
+
        
|
2763
|
+
<smallcap>B</smallcap>
|
2764
|
+
</p>
|
2765
|
+
<p id='_'>
|
2766
|
+
  
|
2767
|
+
<em>C</em>
|
2768
|
+
</p>
|
2769
|
+
</figure>
|
2770
|
+
</foreword>
|
2771
|
+
</preface>
|
2772
|
+
</itu-standard>
|
1581
2773
|
INPUT
|
1582
2774
|
expect(xmlpp( File.read("test.doc").gsub(%r{^.*<h1 class="ForewordTitle">Foreword</h1>}m, "").gsub(%r{</div>.*}m, "</div>"))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
1583
|
-
<div class="pseudocode"><a name="_" id="_"></a><p class="pseudocode"><a name="_" id="_"></a>  <b>A</b><br/>
|
2775
|
+
<div class="pseudocode" style='page-break-after: avoid;page-break-inside: avoid;'><a name="_" id="_"></a><p class="pseudocode"><a name="_" id="_"></a>  <b>A</b><br/>
|
1584
2776
|
        <span style="font-variant:small-caps;">B</span></p>
|
1585
2777
|
<p class="pseudocode" style="page-break-after:avoid;"><a name="_" id="_"></a>  <i>C</i></p><p class="SourceTitle" style="text-align:center;">Figure 1 — Label</p></div>
|
1586
2778
|
OUTPUT
|
@@ -1606,7 +2798,6 @@ INPUT
|
|
1606
2798
|
<div>
|
1607
2799
|
<h1 class='ForewordTitle'>Foreword</h1>
|
1608
2800
|
<div class='example'>
|
1609
|
-
<p class='example-title'>EXAMPLE</p>
|
1610
2801
|
<pre id='B' class='prettyprint '>
|
1611
2802
|
A B C
|
1612
2803
|
</pre>
|