isodoc 1.0.26 → 1.0.27
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/macos.yml +8 -0
- data/.github/workflows/ubuntu.yml +9 -1
- data/.github/workflows/windows.yml +8 -0
- data/lib/isodoc/function/blocks.rb +1 -1
- data/lib/isodoc/function/cleanup.rb +8 -0
- data/lib/isodoc/function/inline.rb +14 -0
- data/lib/isodoc/function/references.rb +44 -31
- data/lib/isodoc/function/table.rb +0 -1
- data/lib/isodoc/function/to_word_html.rb +1 -0
- data/lib/isodoc/function/utils.rb +6 -1
- data/lib/isodoc/html_function/html.rb +3 -0
- data/lib/isodoc/html_function/postprocess.rb +2 -1
- data/lib/isodoc/version.rb +1 -1
- data/spec/isodoc/blocks_spec.rb +21 -12
- data/spec/isodoc/cleanup_spec.rb +4 -11
- data/spec/isodoc/inline_spec.rb +35 -0
- data/spec/isodoc/ref_spec.rb +3 -3
- data/spec/isodoc/table_spec.rb +22 -22
- data/spec/isodoc/xref_spec.rb +12 -12
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68d6f17f0d5291c6c067bfc6a3a476885b80f128bdc9c4e3e3d8356c6af30482
|
4
|
+
data.tar.gz: 2710c48aa2fb9eeee44b586107b07884d52802a53fec81d69c0f3fb68fa988ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c38cb43027aa1a056d465660449a4a58e1a5b78474a5f0184fca4164f2af2480720329e5a7181fcc1731151ef15db71019aa9fc34175b779de517006bf85fa6
|
7
|
+
data.tar.gz: '09503b88edfb1db0b3def003bca81c356b40790014953a9bc08de680af8db75222ded714f43a1f6820ec30dbaa2e3f83ac2a5e386f3c757f0d639f086e0b4b2c'
|
data/.github/workflows/macos.yml
CHANGED
@@ -6,15 +6,23 @@ on:
|
|
6
6
|
push:
|
7
7
|
branches: [ master ]
|
8
8
|
pull_request:
|
9
|
+
paths-ignore:
|
10
|
+
- .github/workflows/ubuntu.yml
|
11
|
+
- .github/workflows/windows.yml
|
9
12
|
|
10
13
|
jobs:
|
11
14
|
test-macos:
|
12
15
|
name: Test on Ruby ${{ matrix.ruby }} macOS
|
13
16
|
runs-on: macos-latest
|
17
|
+
continue-on-error: ${{ matrix.experimental }}
|
14
18
|
strategy:
|
15
19
|
fail-fast: false
|
16
20
|
matrix:
|
17
21
|
ruby: [ '2.6', '2.5', '2.4' ]
|
22
|
+
experimental: [false]
|
23
|
+
include:
|
24
|
+
- ruby: '2.7'
|
25
|
+
experimental: true
|
18
26
|
steps:
|
19
27
|
- uses: actions/checkout@master
|
20
28
|
- name: Use Ruby
|
@@ -6,15 +6,23 @@ on:
|
|
6
6
|
push:
|
7
7
|
branches: [ master ]
|
8
8
|
pull_request:
|
9
|
+
paths-ignore:
|
10
|
+
- .github/workflows/macos.yml
|
11
|
+
- .github/workflows/windows.yml
|
9
12
|
|
10
13
|
jobs:
|
11
14
|
test-linux:
|
12
15
|
name: Test on Ruby ${{ matrix.ruby }} Ubuntu
|
13
16
|
runs-on: ubuntu-latest
|
17
|
+
continue-on-error: ${{ matrix.experimental }}
|
14
18
|
strategy:
|
15
19
|
fail-fast: false
|
16
20
|
matrix:
|
17
21
|
ruby: [ '2.6', '2.5', '2.4' ]
|
22
|
+
experimental: [false]
|
23
|
+
include:
|
24
|
+
- ruby: '2.7'
|
25
|
+
experimental: true
|
18
26
|
steps:
|
19
27
|
- uses: actions/checkout@master
|
20
28
|
- name: Use Ruby
|
@@ -39,7 +47,7 @@ jobs:
|
|
39
47
|
run: |
|
40
48
|
bundle exec rake
|
41
49
|
- name: Trigger dependent repositories
|
42
|
-
if: github.ref == 'refs/heads/master'
|
50
|
+
if: github.ref == 'refs/heads/master' && matrix.ruby == '2.6'
|
43
51
|
env:
|
44
52
|
GH_USERNAME: ${{ secrets.PAT_USERNAME }}
|
45
53
|
GH_ACCESS_TOKEN: ${{ secrets.PAT_TOKEN }}
|
@@ -6,15 +6,23 @@ on:
|
|
6
6
|
push:
|
7
7
|
branches: [ master ]
|
8
8
|
pull_request:
|
9
|
+
paths-ignore:
|
10
|
+
- .github/workflows/macos.yml
|
11
|
+
- .github/workflows/ubuntu.yml
|
9
12
|
|
10
13
|
jobs:
|
11
14
|
test-windows:
|
12
15
|
name: Test on Ruby ${{ matrix.ruby }} Windows
|
13
16
|
runs-on: windows-latest
|
17
|
+
continue-on-error: ${{ matrix.experimental }}
|
14
18
|
strategy:
|
15
19
|
fail-fast: false
|
16
20
|
matrix:
|
17
21
|
ruby: [ '2.6', '2.5', '2.4' ]
|
22
|
+
experimental: [false]
|
23
|
+
include:
|
24
|
+
- ruby: '2.7'
|
25
|
+
experimental: true
|
18
26
|
steps:
|
19
27
|
- uses: actions/checkout@master
|
20
28
|
- name: Use Ruby
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module IsoDoc::Function
|
2
2
|
module Cleanup
|
3
3
|
def textcleanup(docxml)
|
4
|
+
docxml = passthrough_cleanup(docxml)
|
4
5
|
docxml.
|
5
6
|
gsub(/\[TERMREF\]\s*/, l10n("[#{@source_lbl}: ")).
|
6
7
|
gsub(/\s*\[MODIFICATION\]\s*\[\/TERMREF\]/, l10n(", #{@modified_lbl} [/TERMREF]")).
|
@@ -8,6 +9,13 @@ module IsoDoc::Function
|
|
8
9
|
gsub(/\s*\[MODIFICATION\]/, l10n(", #{@modified_lbl} — "))
|
9
10
|
end
|
10
11
|
|
12
|
+
def passthrough_cleanup(docxml)
|
13
|
+
docxml = docxml.split(%r{(<passthrough>|</passthrough>)}).each_slice(4).map do |a|
|
14
|
+
a.size > 2 and a[2] = HTMLEntities.new.decode(a[2])
|
15
|
+
[a[0], a[2]]
|
16
|
+
end.join
|
17
|
+
end
|
18
|
+
|
11
19
|
def cleanup(docxml)
|
12
20
|
comment_cleanup(docxml)
|
13
21
|
footnote_cleanup(docxml)
|
@@ -227,5 +227,19 @@ module IsoDoc::Function
|
|
227
227
|
p.b(**{ role: "strong" }) { |e| e << text }
|
228
228
|
end
|
229
229
|
end
|
230
|
+
|
231
|
+
def variant_parse(node, out)
|
232
|
+
if node["lang"] == @lang && node["script"] == @script
|
233
|
+
node.children.each { |n| parse(n, out) }
|
234
|
+
else
|
235
|
+
prev = node.xpath("./preceding-sibling::xmlns:variant")
|
236
|
+
foll = node.xpath("./following-sibling::xmlns:variant")
|
237
|
+
found = false
|
238
|
+
(prev + foll).each { |n| found = true if n["lang"] == @lang && n["script"] == @script }
|
239
|
+
return if found
|
240
|
+
return unless prev.empty?
|
241
|
+
node.children.each { |n| parse(n, out) }
|
242
|
+
end
|
243
|
+
end
|
230
244
|
end
|
231
245
|
end
|
@@ -9,26 +9,26 @@ module IsoDoc::Function
|
|
9
9
|
end
|
10
10
|
|
11
11
|
# TODO generate formatted ref if not present
|
12
|
-
def nonstd_bibitem(list, b, ordinal,
|
13
|
-
list.p **attr_code(iso_bibitem_entry_attrs(b,
|
14
|
-
|
15
|
-
|
16
|
-
if
|
12
|
+
def nonstd_bibitem(list, b, ordinal, biblio)
|
13
|
+
list.p **attr_code(iso_bibitem_entry_attrs(b, biblio)) do |ref|
|
14
|
+
ids = bibitem_ref_code(b)
|
15
|
+
identifiers = render_identifier(ids)
|
16
|
+
if biblio then ref_entry_code(ref, ordinal, identifiers, ids)
|
17
17
|
else
|
18
|
-
|
19
|
-
|
18
|
+
ref << "#{identifiers[0] || identifiers[1]}, "
|
19
|
+
ref << "#{identifiers[1]}, " if identifiers[0] && identifiers[1]
|
20
20
|
end
|
21
|
-
reference_format(b,
|
21
|
+
reference_format(b, ref)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
def std_bibitem_entry(list, b, ordinal, biblio)
|
26
26
|
list.p **attr_code(iso_bibitem_entry_attrs(b, biblio)) do |ref|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
ref <<
|
27
|
+
ids = bibitem_ref_code(b)
|
28
|
+
identifiers = render_identifier(ids)
|
29
|
+
prefix_bracketed_ref(ref, "[#{ordinal}]") if biblio
|
30
|
+
ref << "#{identifiers[0] || identifiers[1]}"
|
31
|
+
ref << ", #{identifiers[1]}" if identifiers[0] && identifiers[1]
|
32
32
|
date_note_process(b, ref)
|
33
33
|
ref << ", "
|
34
34
|
reference_format(b, ref)
|
@@ -38,29 +38,43 @@ module IsoDoc::Function
|
|
38
38
|
# if t is just a number, only use that ([1] Non-Standard)
|
39
39
|
# else, use both ordinal, as prefix, and t
|
40
40
|
def ref_entry_code(r, ordinal, t, id)
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
prefix_bracketed_ref(r, ordinal)
|
45
|
-
if !t.empty? && !%w(DOI ISSN ISBN).include?(id["type"])
|
46
|
-
r << "#{t}, "
|
47
|
-
end
|
41
|
+
prefix_bracketed_ref(r, t[0] || "[#{ordinal}]")
|
42
|
+
if t[1]
|
43
|
+
r << "#{t[1]}, "
|
48
44
|
end
|
49
45
|
end
|
50
46
|
|
47
|
+
def pref_ref_code(b)
|
48
|
+
b.at(ns("./docidentifier[not(@type = 'DOI' or @type = 'metanorma' "\
|
49
|
+
"or @type = 'ISSN' or @type = 'ISBN' or @type = 'rfc-anchor')]"))
|
50
|
+
end
|
51
|
+
|
52
|
+
# returns [metanorma, non-metanorma, DOI/ISSN/ISBN] identifiers
|
51
53
|
def bibitem_ref_code(b)
|
52
54
|
id = b.at(ns("./docidentifier[@type = 'metanorma']"))
|
53
|
-
|
54
|
-
|
55
|
-
id
|
56
|
-
return id if id
|
55
|
+
id1 = pref_ref_code(b)
|
56
|
+
id2 = b.at(ns("./docidentifier[@type = 'DOI' or @type = 'ISSN' or @type = 'ISBN']"))
|
57
|
+
return [id, id1, id2] if id || id1 || id2
|
57
58
|
id = Nokogiri::XML::Node.new("docidentifier", b.document)
|
58
59
|
id << "(NO ID)"
|
59
|
-
id
|
60
|
+
[nil, id, nil]
|
61
|
+
end
|
62
|
+
|
63
|
+
def bracket_if_num(x)
|
64
|
+
return nil if x.nil?
|
65
|
+
x = x.text.sub(/^\[/, "").sub(/\]$/, "")
|
66
|
+
return "[#{x}]" if /^\d+$/.match(x)
|
67
|
+
x
|
60
68
|
end
|
61
69
|
|
62
70
|
def render_identifier(id)
|
63
|
-
|
71
|
+
[
|
72
|
+
bracket_if_num(id[0]),
|
73
|
+
id[1].nil? ? nil :
|
74
|
+
docid_prefix(id[1]["type"], id[1].text.sub(/^\[/, "").sub(/\]$/, "")),
|
75
|
+
id[2].nil? ? nil :
|
76
|
+
docid_prefix(id[2]["type"], id[2].text.sub(/^\[/, "").sub(/\]$/, "")),
|
77
|
+
]
|
64
78
|
end
|
65
79
|
|
66
80
|
def docid_prefix(prefix, docid)
|
@@ -100,7 +114,7 @@ module IsoDoc::Function
|
|
100
114
|
end
|
101
115
|
|
102
116
|
def prefix_bracketed_ref(ref, text)
|
103
|
-
ref <<
|
117
|
+
ref << text.to_s
|
104
118
|
insert_tab(ref, 1)
|
105
119
|
end
|
106
120
|
|
@@ -187,12 +201,11 @@ module IsoDoc::Function
|
|
187
201
|
|
188
202
|
def reference_names(ref)
|
189
203
|
isopub = ref.at(ns(ISO_PUBLISHER_XPATH))
|
190
|
-
|
191
|
-
|
204
|
+
ids = bibitem_ref_code(ref)
|
205
|
+
identifiers = render_identifier(ids)
|
192
206
|
date = ref.at(ns("./date[@type = 'published']"))
|
193
207
|
allparts = ref.at(ns("./extent[@type='part'][referenceFrom='all']"))
|
194
|
-
reference =
|
195
|
-
allparts)
|
208
|
+
reference = docid_l10n(identifiers[0] || identifiers[1])
|
196
209
|
@anchors[ref["id"]] = { xref: reference }
|
197
210
|
end
|
198
211
|
|
@@ -91,7 +91,6 @@ module IsoDoc::Function
|
|
91
91
|
style += <<~STYLE
|
92
92
|
border-top:#{row.zero? ? "#{SW} 1.5pt;" : 'none;'}
|
93
93
|
border-bottom:#{SW} #{rowmax == totalrows ? '1.5' : '1.0'}pt;
|
94
|
-
padding:0;
|
95
94
|
STYLE
|
96
95
|
header and scope = (td["colspan"] ? "colgroup" : "col")
|
97
96
|
!header and td.name == "th" and scope =
|
@@ -211,6 +211,7 @@ module IsoDoc::Function
|
|
211
211
|
when "legal-statement" then legal_parse(node, out)
|
212
212
|
when "feedback-statement" then feedback_parse(node, out)
|
213
213
|
when "passthrough" then passthrough_parse(node, out)
|
214
|
+
when "variant" then variant_parse(node, out)
|
214
215
|
else
|
215
216
|
error_parse(node, out)
|
216
217
|
end
|
@@ -49,7 +49,12 @@ module IsoDoc::Function
|
|
49
49
|
/^(\&[^ \t\r\n#;]+;)/.match(t) ?
|
50
50
|
HTMLEntities.new.encode(HTMLEntities.new.decode(t), :hexadecimal) : t
|
51
51
|
end.join("")
|
52
|
-
|
52
|
+
begin
|
53
|
+
Nokogiri::XML.parse(xml) { |config| config.strict }
|
54
|
+
rescue Nokogiri::XML::SyntaxError => e
|
55
|
+
File.open("#{@filename}.#{@format}.err", "w:UTF-8") { |f| f.write xml }
|
56
|
+
abort "Malformed Output XML for #{@format}: #{e} (see #{@filename}.#{@format}.err)"
|
57
|
+
end
|
53
58
|
end
|
54
59
|
|
55
60
|
def to_xhtml_fragment(xml)
|
@@ -159,7 +159,8 @@ module IsoDoc::HtmlFunction
|
|
159
159
|
def inject_script(doc)
|
160
160
|
return doc unless @scripts
|
161
161
|
scripts = File.read(@scripts, encoding: "UTF-8")
|
162
|
-
doc.
|
162
|
+
a = doc.split(%r{</body>})
|
163
|
+
a[0] + scripts + "</body>" + a[1]
|
163
164
|
end
|
164
165
|
|
165
166
|
def update_footnote_filter(fn, x, i, seen)
|
data/lib/isodoc/version.rb
CHANGED
data/spec/isodoc/blocks_spec.rb
CHANGED
@@ -1463,26 +1463,35 @@ INPUT
|
|
1463
1463
|
end
|
1464
1464
|
|
1465
1465
|
it "processes passthrough with compatible format" do
|
1466
|
-
|
1466
|
+
FileUtils.rm_f "test.html"
|
1467
|
+
IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", false)
|
1467
1468
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1468
1469
|
<preface><foreword>
|
1469
|
-
<passthrough format="html,rfc"><A></passthrough>
|
1470
|
+
<passthrough format="html,rfc"><A></passthrough><em>Hello</em><passthrough format="html,rfc"></A></passthrough>
|
1470
1471
|
</foreword></preface>
|
1471
1472
|
</iso-standard>
|
1472
1473
|
INPUT
|
1473
|
-
|
1474
|
-
<
|
1475
|
-
<div>
|
1476
|
-
<h1 class='ForewordTitle'>Foreword</h1>
|
1477
|
-
<a/>
|
1478
|
-
</div>
|
1479
|
-
<p class='zzSTDTitle1'/>
|
1480
|
-
</div>
|
1481
|
-
</body>
|
1482
|
-
</html>
|
1474
|
+
expect(( File.read("test.html").gsub(%r{^.*<h1 class="ForewordTitle">Foreword</h1>}m, "").gsub(%r{</div>.*}m, ""))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
1475
|
+
<A><i>Hello</i></A>
|
1483
1476
|
OUTPUT
|
1484
1477
|
end
|
1485
1478
|
|
1479
|
+
it "aborts if passthrough results in malformed XML" do
|
1480
|
+
FileUtils.rm_f "test.html"
|
1481
|
+
FileUtils.rm_f "test.html.err"
|
1482
|
+
begin
|
1483
|
+
expect { IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", false) }.to raise_error(SystemExit)
|
1484
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
1485
|
+
<preface><foreword>
|
1486
|
+
<passthrough format="html,rfc"><A></passthrough><em>Hello</em>
|
1487
|
+
</foreword></preface>
|
1488
|
+
</iso-standard>
|
1489
|
+
INPUT
|
1490
|
+
rescue SystemExit
|
1491
|
+
end
|
1492
|
+
expect(File.exist?("test.html.err")).to be true
|
1493
|
+
end
|
1494
|
+
|
1486
1495
|
it "ignore passthrough with incompatible format" do
|
1487
1496
|
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
1488
1497
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
data/spec/isodoc/cleanup_spec.rb
CHANGED
@@ -798,7 +798,7 @@ INPUT
|
|
798
798
|
OUTPUT
|
799
799
|
end
|
800
800
|
|
801
|
-
it "
|
801
|
+
it "does not break up very long strings in tables on request in HTML" do
|
802
802
|
expect(xmlpp(IsoDoc::HtmlConvert.new({break_up_urls_in_tables: "true"}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s)).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
803
803
|
<html xmlns:epub="http://www.idpf.org/2007/ops">
|
804
804
|
<head>
|
@@ -863,19 +863,12 @@ INPUT
|
|
863
863
|
<tbody>
|
864
864
|
<tr>
|
865
865
|
<td align='left' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;'>
|
866
|
-
http://www.example.com/
|
867
|
-
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA/
|
868
|
-
BBBBBBBBBBBBBBBBBBBBBBBBBBBB
|
866
|
+
http://www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/BBBBBBBBBBBBBBBBBBBBBBBBBBBB
|
869
867
|
</td>
|
870
868
|
<td align='left' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;'>
|
871
|
-
http://www.example.com/
|
872
|
-
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
873
|
-
AAAAAAAABBBBBBBBBBBBBBBBBBBBBB BBBBBB
|
874
|
-
</td>
|
869
|
+
http://www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBB</td>
|
875
870
|
<td align='center' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;'>
|
876
|
-
www.example.com/
|
877
|
-
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
878
|
-
ABBBBBBBBBBBBBBBBBBBBBBBBBBBB
|
871
|
+
www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBB
|
879
872
|
</td>
|
880
873
|
</tr>
|
881
874
|
</tbody>
|
data/spec/isodoc/inline_spec.rb
CHANGED
@@ -515,5 +515,40 @@ OUTPUT
|
|
515
515
|
OUTPUT
|
516
516
|
end
|
517
517
|
|
518
|
+
it "processes variant" do
|
519
|
+
expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
520
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
521
|
+
<bibdata>
|
522
|
+
<language>en</language>
|
523
|
+
<script>Latn</script>
|
524
|
+
</bibdata>
|
525
|
+
<preface>
|
526
|
+
<clause id="A"><title><variant lang="en" script="Latn">ABC</variant><variant lang="fr" script="Latn">DEF</variant></title></clause>
|
527
|
+
<clause id="B"><title><variant lang="de" script="Latn">GHI</variant><variant lang="es" script="Latn">JKL</variant></title></clause>
|
528
|
+
<clause id="C"><title><variant lang="fr" script="Latn">ABC</variant><variant lang="en" script="Latn">DEF</variant></title></clause>
|
529
|
+
</preface>
|
530
|
+
</iso-standard>
|
531
|
+
INPUT
|
532
|
+
#{HTML_HDR}
|
533
|
+
<br/>
|
534
|
+
<div class='Section3' id='A'>
|
535
|
+
<h1 class='IntroTitle'>ABC</h1>
|
536
|
+
</div>
|
537
|
+
<br/>
|
538
|
+
<div class='Section3' id='B'>
|
539
|
+
<h1 class='IntroTitle'>GHI</h1>
|
540
|
+
</div>
|
541
|
+
<br/>
|
542
|
+
<div class='Section3' id='C'>
|
543
|
+
<h1 class='IntroTitle'>DEF</h1>
|
544
|
+
</div>
|
545
|
+
<p class='zzSTDTitle1'/>
|
546
|
+
</div>
|
547
|
+
</body>
|
548
|
+
</html>
|
549
|
+
OUTPUT
|
550
|
+
end
|
551
|
+
|
552
|
+
|
518
553
|
|
519
554
|
end
|
data/spec/isodoc/ref_spec.rb
CHANGED
@@ -135,7 +135,7 @@ RSpec.describe IsoDoc do
|
|
135
135
|
<a href="#ISO16634">ISO 16634:-- (all parts)</a>
|
136
136
|
<a href="#ref1">ICC 167</a>
|
137
137
|
<a href="#ref10">[10]</a>
|
138
|
-
<a href="#ref12">
|
138
|
+
<a href="#ref12">Citn</a>
|
139
139
|
<a href='#zip_ffs'>[5]</a>
|
140
140
|
</p>
|
141
141
|
</div>
|
@@ -143,7 +143,7 @@ RSpec.describe IsoDoc do
|
|
143
143
|
<div>
|
144
144
|
<h1>1.  Normative references</h1>
|
145
145
|
<p>The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.</p>
|
146
|
-
<p id="ISO712" class="NormRef">[110], <i>Cereals and cereal products</i></p>
|
146
|
+
<p id="ISO712" class="NormRef">[110], ISO 712, <i>Cereals and cereal products</i></p>
|
147
147
|
<p id="ISO16634" class="NormRef">ISO 16634:-- (all parts)<a rel="footnote" href="#fn:1" epub:type="footnote"><sup>1</sup></a>, <i>Cereals, pulses, milled cereal products, oilseeds and animal feeding stuffs</i></p>
|
148
148
|
<p id="ISO20483" class="NormRef">ISO 20483:2013-2014, <i>Cereals and pulses</i></p>
|
149
149
|
<p id="ref1" class="NormRef">ICC 167, <span style="font-variant:small-caps;">Standard No I.C.C 167</span>. <i>Determination of the protein content in cereal and cereal products for food and animal feeding stuffs according to the Dumas combustion method</i> (see <a href="http://www.icc.or.at">http://www.icc.or.at</a>)</p>
|
@@ -166,7 +166,7 @@ RSpec.describe IsoDoc do
|
|
166
166
|
<p id="ISO3696" class="Biblio">[3]  ISO 3696, <i>Water for analytical laboratory use</i></p>
|
167
167
|
<p id="ref10" class="Biblio">[10]  <span style="font-variant:small-caps;">Standard No I.C.C 167</span>. <i>Determination of the protein content in cereal and cereal products for food and animal feeding stuffs according to the Dumas combustion method</i> (see <a href="http://www.icc.or.at">http://www.icc.or.at</a>)</p>
|
168
168
|
<p id="ref11" class="Biblio">[5]  IETF RFC 10, <i>Internet Calendaring and Scheduling Core Object Specification (iCalendar)</i></p>
|
169
|
-
<p id="ref12" class="Biblio">[6]  Citn, CitationWorks. 2019. <i>How to cite a reference</i>.</p>
|
169
|
+
<p id="ref12" class="Biblio">[6]  Citn, IETF RFC 20, CitationWorks. 2019. <i>How to cite a reference</i>.</p>
|
170
170
|
</div>
|
171
171
|
<aside id="fn:1" class="footnote">
|
172
172
|
<p>Under preparation. (Stage at the time of publication ISO/DIS 16634)</p>
|
data/spec/isodoc/table_spec.rb
CHANGED
@@ -78,41 +78,41 @@ RSpec.describe IsoDoc do
|
|
78
78
|
</caption>
|
79
79
|
<thead>
|
80
80
|
<tr>
|
81
|
-
<td rowspan="2" style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
82
|
-
<td colspan="4" style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;
|
81
|
+
<td rowspan="2" style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;" scope="col">Description</td>
|
82
|
+
<td colspan="4" style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;" scope="colgroup">Rice sample</td>
|
83
83
|
</tr>
|
84
84
|
<tr>
|
85
|
-
<td style="text-align:left;border-top:none;border-bottom:solid windowtext 1.5pt;
|
86
|
-
<td style="text-align:center;border-top:none;border-bottom:solid windowtext 1.5pt;
|
85
|
+
<td style="text-align:left;border-top:none;border-bottom:solid windowtext 1.5pt;" scope="col">Arborio</td>
|
86
|
+
<td style="text-align:center;border-top:none;border-bottom:solid windowtext 1.5pt;" scope="col">Drago<a href="#tableD-1a" class="TableFootnoteRef">a</a><aside class="footnote"><div id="fn:tableD-1a"><span><span id="tableD-1a" class="TableFootnoteRef">a</span>  </span>
|
87
87
|
<p id="_0fe65e9a-5531-408e-8295-eeff35f41a55">Parboiled rice.</p>
|
88
88
|
</div></aside></td>
|
89
|
-
<td style="text-align:center;border-top:none;border-bottom:solid windowtext 1.5pt;
|
90
|
-
<td style="text-align:center;border-top:none;border-bottom:solid windowtext 1.5pt;
|
89
|
+
<td style="text-align:center;border-top:none;border-bottom:solid windowtext 1.5pt;" scope="col">Balilla<a href="#tableD-1a" class="TableFootnoteRef">a</a></td>
|
90
|
+
<td style="text-align:center;border-top:none;border-bottom:solid windowtext 1.5pt;" scope="col">Thaibonnet</td>
|
91
91
|
</tr>
|
92
92
|
</thead>
|
93
93
|
<tbody>
|
94
94
|
<tr>
|
95
|
-
<th style="font-weight:bold;text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;
|
96
|
-
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;
|
97
|
-
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;
|
98
|
-
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;
|
99
|
-
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;
|
95
|
+
<th style="font-weight:bold;text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;" scope="row">Number of laboratories retained after eliminating outliers</th>
|
96
|
+
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;">13</td>
|
97
|
+
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;">11</td>
|
98
|
+
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;">13</td>
|
99
|
+
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;">13</td>
|
100
100
|
</tr>
|
101
101
|
<tr>
|
102
|
-
<td style="text-align:left;border-top:none;border-bottom:solid windowtext 1.5pt;
|
103
|
-
<td style="text-align:center;border-top:none;border-bottom:solid windowtext 1.5pt;
|
104
|
-
<td style="text-align:center;border-top:none;border-bottom:solid windowtext 1.5pt;
|
105
|
-
<td style="text-align:center;border-top:none;border-bottom:solid windowtext 1.5pt;
|
106
|
-
<td style="text-align:center;border-top:none;border-bottom:solid windowtext 1.5pt;
|
102
|
+
<td style="text-align:left;border-top:none;border-bottom:solid windowtext 1.5pt;">Mean value, g/100 g</td>
|
103
|
+
<td style="text-align:center;border-top:none;border-bottom:solid windowtext 1.5pt;">81,2</td>
|
104
|
+
<td style="text-align:center;border-top:none;border-bottom:solid windowtext 1.5pt;">82,0</td>
|
105
|
+
<td style="text-align:center;border-top:none;border-bottom:solid windowtext 1.5pt;">81,8</td>
|
106
|
+
<td style="text-align:center;border-top:none;border-bottom:solid windowtext 1.5pt;">77,7</td>
|
107
107
|
</tr>
|
108
108
|
</tbody>
|
109
109
|
<tfoot>
|
110
110
|
<tr>
|
111
|
-
<td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
112
|
-
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
113
|
-
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
114
|
-
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
115
|
-
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
111
|
+
<td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Reproducibility limit, <span class="stem">(#(R)#)</span> (= 2,83 <span class="stem">(#(s_R)#)</span>)</td>
|
112
|
+
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">2,89</td>
|
113
|
+
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">0,57</td>
|
114
|
+
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">2,26</td>
|
115
|
+
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">6,06</td>
|
116
116
|
</tr>
|
117
117
|
</tfoot>
|
118
118
|
<dl>
|
@@ -128,7 +128,7 @@ RSpec.describe IsoDoc do
|
|
128
128
|
<table id="tableD-2" class="MsoISOTable" style="border-width:1px;border-spacing:0;">
|
129
129
|
<tbody>
|
130
130
|
<tr>
|
131
|
-
<td style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
131
|
+
<td style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">A</td>
|
132
132
|
</tr>
|
133
133
|
</tbody>
|
134
134
|
</table>
|
data/spec/isodoc/xref_spec.rb
CHANGED
@@ -1491,14 +1491,14 @@ OUTPUT
|
|
1491
1491
|
<table id="N1" class="MsoISOTable" style="border-width:1px;border-spacing:0;">
|
1492
1492
|
<tbody>
|
1493
1493
|
<tr>
|
1494
|
-
<td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
1495
|
-
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
1496
|
-
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
1494
|
+
<td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td>
|
1495
|
+
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td>
|
1496
|
+
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td>
|
1497
1497
|
</tr>
|
1498
1498
|
</tbody>
|
1499
1499
|
</table>
|
1500
1500
|
<div id="xyz"><h2>Preparatory</h2>
|
1501
|
-
<p class="TableTitle" style="text-align:center;">Repeatability and reproducibility of husked rice yield</p><table id="N2" class="MsoISOTable" style="border-width:1px;border-spacing:0;"><tbody><tr><td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
1501
|
+
<p class="TableTitle" style="text-align:center;">Repeatability and reproducibility of husked rice yield</p><table id="N2" class="MsoISOTable" style="border-width:1px;border-spacing:0;"><tbody><tr><td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td><td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td><td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td></tr></tbody></table>
|
1502
1502
|
</div>
|
1503
1503
|
</div>
|
1504
1504
|
<p class="zzSTDTitle1"/>
|
@@ -1510,9 +1510,9 @@ OUTPUT
|
|
1510
1510
|
<table id="N" class="MsoISOTable" style="border-width:1px;border-spacing:0;">
|
1511
1511
|
<tbody>
|
1512
1512
|
<tr>
|
1513
|
-
<td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
1514
|
-
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
1515
|
-
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
1513
|
+
<td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td>
|
1514
|
+
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td>
|
1515
|
+
<td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td>
|
1516
1516
|
</tr>
|
1517
1517
|
</tbody>
|
1518
1518
|
</table>
|
@@ -1525,8 +1525,8 @@ OUTPUT
|
|
1525
1525
|
<div id="widgets">
|
1526
1526
|
<h1>3.  Widgets</h1>
|
1527
1527
|
<div id="widgets1"><h2>3.1. </h2>
|
1528
|
-
<p class="TableTitle" style="text-align:center;">Table 3 — Repeatability and reproducibility of husked rice yield</p><table id="note1" class="MsoISOTable" style="border-width:1px;border-spacing:0;"><tbody><tr><td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
1529
|
-
<p class="TableTitle" style="text-align:center;">Table 4 — Repeatability and reproducibility of husked rice yield</p><table id="note2" class="MsoISOTable" style="border-width:1px;border-spacing:0;"><tbody><tr><td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
1528
|
+
<p class="TableTitle" style="text-align:center;">Table 3 — Repeatability and reproducibility of husked rice yield</p><table id="note1" class="MsoISOTable" style="border-width:1px;border-spacing:0;"><tbody><tr><td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td><td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td><td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td></tr></tbody></table>
|
1529
|
+
<p class="TableTitle" style="text-align:center;">Table 4 — Repeatability and reproducibility of husked rice yield</p><table id="note2" class="MsoISOTable" style="border-width:1px;border-spacing:0;"><tbody><tr><td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td><td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td><td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td></tr></tbody></table>
|
1530
1530
|
<p> <a href="#note1">Table 3</a> <a href="#note2">Table 4</a> </p>
|
1531
1531
|
</div>
|
1532
1532
|
</div>
|
@@ -1541,11 +1541,11 @@ OUTPUT
|
|
1541
1541
|
<b/>
|
1542
1542
|
</h1>
|
1543
1543
|
<div id="annex1a"><h2>A.1. </h2>
|
1544
|
-
<p class="TableTitle" style="text-align:center;">Table A.1 — Repeatability and reproducibility of husked rice yield</p><table id="AN" class="MsoISOTable" style="border-width:1px;border-spacing:0;"><tbody><tr><td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
1544
|
+
<p class="TableTitle" style="text-align:center;">Table A.1 — Repeatability and reproducibility of husked rice yield</p><table id="AN" class="MsoISOTable" style="border-width:1px;border-spacing:0;"><tbody><tr><td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td><td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td><td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td></tr></tbody></table>
|
1545
1545
|
</div>
|
1546
1546
|
<div id="annex1b"><h2>A.2. </h2>
|
1547
|
-
<p class="TableTitle" style="text-align:center;">Repeatability and reproducibility of husked rice yield</p><table id="Anote1" class="MsoISOTable" style="border-width:1px;border-spacing:0;"><tbody><tr><td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
1548
|
-
<p class="TableTitle" style="text-align:center;">Table A.2 — Repeatability and reproducibility of husked rice yield</p><table id="Anote2" class="MsoISOTable" style="border-width:1px;border-spacing:0;"><tbody><tr><td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;
|
1547
|
+
<p class="TableTitle" style="text-align:center;">Repeatability and reproducibility of husked rice yield</p><table id="Anote1" class="MsoISOTable" style="border-width:1px;border-spacing:0;"><tbody><tr><td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td><td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td><td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td></tr></tbody></table>
|
1548
|
+
<p class="TableTitle" style="text-align:center;">Table A.2 — Repeatability and reproducibility of husked rice yield</p><table id="Anote2" class="MsoISOTable" style="border-width:1px;border-spacing:0;"><tbody><tr><td style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Number of laboratories retained after eliminating outliers</td><td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">13</td><td style="text-align:center;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">11</td></tr></tbody></table>
|
1549
1549
|
</div>
|
1550
1550
|
</div>
|
1551
1551
|
</div>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: isodoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.27
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-05-
|
11
|
+
date: 2020-05-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciimath
|