isodoc 1.0.24 → 1.0.25

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 50ac1215a8065519d1dbab07c61a8c4e84dbc90923300bef4f6e44e4b9a8a843
4
- data.tar.gz: b89e80351f424c11fb7cb2b92c838a8b8b05f2791a1f91a1d531b14611632229
3
+ metadata.gz: b0256be2230e0c8757987eb82dee6f8ced68e1cc8794964fabbc446e78d53195
4
+ data.tar.gz: a8bc10c2952aacf1542b3a4a1edae6c363bee78604dea3c541f9fd769031ea13
5
5
  SHA512:
6
- metadata.gz: d5ca6cf434f62383545145ccb02adccc060cc9fc5b79478655a5eaa21ca03332f1032baa87abc670935a586fa2cd957f3b8c9358e40802f33dcbc978e8da4b0a
7
- data.tar.gz: 01f839c290c1e557a162e2ae43aba2c8ecb291b86664759d72eeacd80b1f338734ce470827cd35485446b589f77b637a5cece6f3118b0855d2494f7537adc1e1
6
+ metadata.gz: b54f7daa32cc4e7e80a560dfd660f76bf4acae581cda2c3b7f89012ab368da2d0951dec308982bea80e07b1e9d59eed1d170aecae686f42b82f31843a9fff4e9
7
+ data.tar.gz: 75bceea7c655e1bf34de59ed6eb185596966c70b09f4da3c786c80fb57394a8e28c7f87cd47b1a795bee0b5e72d08f372981c587f27e3fb31240a96668cebeaf
@@ -29,10 +29,10 @@ jobs:
29
29
  - name: Use Node
30
30
  uses: actions/setup-node@v1
31
31
  with:
32
- node-version: '8'
32
+ node-version: '12'
33
33
  - name: Install Puppeteer
34
34
  run: |
35
- npm install -g puppeteer
35
+ npm install -g puppeteer@3.0.1
36
36
  - name: Run specs
37
37
  run: |
38
38
  bundle exec rake
@@ -29,10 +29,12 @@ jobs:
29
29
  - name: Use Node
30
30
  uses: actions/setup-node@v1
31
31
  with:
32
- node-version: '8'
32
+ node-version: '12'
33
33
  - name: Install Puppeteer
34
34
  run: |
35
- npm install -g puppeteer
35
+ sudo apt-get update
36
+ sudo apt-get install libgbm1
37
+ npm install -g puppeteer@3.0.1
36
38
  - name: Run specs
37
39
  run: |
38
40
  bundle exec rake
@@ -31,10 +31,10 @@ jobs:
31
31
  - name: Use Node
32
32
  uses: actions/setup-node@v1
33
33
  with:
34
- node-version: '8'
34
+ node-version: '12'
35
35
  - name: Install Puppeteer
36
36
  run: |
37
- npm install -g puppeteer
37
+ npm install -g puppeteer@3.0.1
38
38
  - name: Run specs
39
39
  run: |
40
40
  bundle exec rake
@@ -6,7 +6,9 @@ introduction: Introduction
6
6
  foreword: Foreword
7
7
  abstract: Abstract
8
8
  termsdef: Terms and definitions
9
- termsdefsymbols: Terms, definitions, symbols and abbreviated terms
9
+ termsdefsymbolsabbrev: Terms, definitions, symbols and abbreviated terms
10
+ termsdefsymbols: Terms, definitions and symbols
11
+ termsdefabbrev: Terms, definitions and abbreviated terms
10
12
  normref: Normative references
11
13
  bibliography: Bibliography
12
14
  clause: Clause
@@ -6,7 +6,9 @@ introduction: Introduction
6
6
  foreword: Avant-propos
7
7
  abstract: Résumé
8
8
  termsdef: Terms et définitions
9
- termsdefsymbols: Terms, définitions, symboles et termes abrégés
9
+ termsdefsymbolsabbrev: Terms, définitions, symboles et termes abrégés
10
+ termsdefsymbols: Terms, définitions et symboles
11
+ termsdefabbrev: Terms, définitions et termes abrégés
10
12
  normref: Références normatives
11
13
  bibliography: Bibliographie
12
14
  clause: Article
@@ -6,7 +6,9 @@ introduction: 引言
6
6
  foreword: 前言
7
7
  abstract: 摘要
8
8
  termsdef: 术语和定义
9
- termsdefsymbols: 术语、定义、符号、代号和缩略语
9
+ termsdefsymbolsabbrev: 术语、定义、符号、代号和缩略语
10
+ termsdefsymbols: 术语、定义、符号和代号
11
+ termsdefabbrev: 术语、定义、符号和缩略语
10
12
  normref: 规范性引用文件
11
13
  bibliography: 参考文献
12
14
  clause: 条
@@ -48,6 +48,7 @@ module IsoDoc
48
48
  @olstyle = options[:olstyle]
49
49
  @datauriimage = options[:datauriimage]
50
50
  @suppressheadingnumbers = options[:suppressheadingnumbers]
51
+ @break_up_urls_in_tables = options[:break_up_urls_in_tables] == "true"
51
52
  @termdomain = ""
52
53
  @termexample = false
53
54
  @note = false
@@ -20,6 +20,7 @@ module IsoDoc::Function
20
20
  end
21
21
 
22
22
  def table_long_strings_cleanup(docxml)
23
+ return unless @break_up_urls_in_tables == true
23
24
  docxml.xpath("//td | //th").each do |d|
24
25
  d.traverse do |n|
25
26
  next unless n.text?
@@ -30,6 +31,7 @@ module IsoDoc::Function
30
31
  end
31
32
 
32
33
  def break_up_long_strings(t)
34
+ return t if t.match(/^\s*$/)
33
35
  t.split(/(?=\s)/).map do |w|
34
36
  (/^\s*$/.match(t) or w.size < 30) ? w :
35
37
  w.scan(/.{,30}/).map do |w1|
@@ -107,6 +107,14 @@ module IsoDoc::Function
107
107
  end
108
108
  end
109
109
 
110
+ def origin_parse(node, out)
111
+ if t = node.at(ns("./termref"))
112
+ termrefelem_parse(t, out)
113
+ else
114
+ eref_parse(node, out)
115
+ end
116
+ end
117
+
110
118
  def termrefelem_parse(node, out)
111
119
  out << "Termbase #{node['base']}, term ID #{node['target']}"
112
120
  end
@@ -109,20 +109,29 @@ module IsoDoc::Function
109
109
  num
110
110
  end
111
111
 
112
- def terms_defs_title(f)
113
- symbols = f.at(ns(".//definitions"))
114
- return @termsdefsymbols_lbl if symbols
115
- @termsdef_lbl
116
- end
117
-
118
112
  TERM_CLAUSE = "//sections/terms | "\
119
113
  "//sections/clause[descendant::terms]".freeze
120
114
 
115
+ def term_def_title(title)
116
+ case title&.text
117
+ when "Terms, definitions, symbols and abbreviated terms"
118
+ @labels["termsdefsymbolsabbrev"]
119
+ when "Terms, definitions and symbols"
120
+ @labels["termsdefsymbols"]
121
+ when "Terms, definitions and abbreviated terms"
122
+ @labels["termsdefabbrev"]
123
+ when "Terms and definitions"
124
+ @labels["termsdef"]
125
+ else
126
+ title
127
+ end
128
+ end
129
+
121
130
  def terms_defs(isoxml, out, num)
122
131
  f = isoxml.at(ns(TERM_CLAUSE)) or return num
123
132
  out.div **attr_code(id: f["id"]) do |div|
124
133
  num = num + 1
125
- clause_name(num, terms_defs_title(f), div, nil)
134
+ clause_name(num, term_def_title(f&.at(ns("./title"))), div, nil)
126
135
  f.elements.each do |e|
127
136
  parse(e, div) unless %w{title source}.include? e.name
128
137
  end
@@ -157,7 +157,7 @@ module IsoDoc::Function
157
157
  when "clause" then clause_parse(node, out)
158
158
  when "xref" then xref_parse(node, out)
159
159
  when "eref" then eref_parse(node, out)
160
- when "origin" then eref_parse(node, out)
160
+ when "origin" then origin_parse(node, out)
161
161
  when "link" then link_parse(node, out)
162
162
  when "ul" then ul_parse(node, out)
163
163
  when "ol" then ol_parse(node, out)
@@ -64,7 +64,7 @@ module IsoDoc::Function
64
64
 
65
65
  CLAUSE_ANCESTOR =
66
66
  ".//ancestor::*[local-name() = 'annex' or "\
67
- "local-name() = 'acknowledgements' or "\
67
+ "local-name() = 'acknowledgements' or local-name() = 'term' or "\
68
68
  "local-name() = 'appendix' or local-name() = 'foreword' or "\
69
69
  "local-name() = 'introduction' or local-name() = 'terms' or "\
70
70
  "local-name() = 'clause' or local-name() = 'references']/@id".freeze
@@ -78,7 +78,7 @@ module IsoDoc::Function
78
78
  ".//ancestor::*[local-name() = 'annex' or "\
79
79
  "local-name() = 'foreword' or local-name() = 'appendix' or "\
80
80
  "local-name() = 'introduction' or local-name() = 'terms' or "\
81
- "local-name() = 'acknowledgements' or "\
81
+ "local-name() = 'acknowledgements' or local-name() = 'term' or "\
82
82
  "local-name() = 'clause' or local-name() = 'references' or "\
83
83
  "local-name() = 'figure' or local-name() = 'formula' or "\
84
84
  "local-name() = 'table' or local-name() = 'example']/@id".freeze
@@ -110,7 +110,8 @@ module IsoDoc::Function
110
110
  end
111
111
 
112
112
  def header_strip(h)
113
- h = h.to_s.gsub(%r{<br/>}, " ").sub(/<\/?h[123456][^>]*>/, "")
113
+ h = h.to_s.gsub(%r{<br\s*/>}, " ").gsub(/<\/?h[123456][^>]*>/, "").
114
+ gsub(/<\/?b[^>]*>/, "")
114
115
  h1 = to_xhtml_fragment(h.dup)
115
116
  h1.traverse do |x|
116
117
  x.replace(" ") if x.name == "span" && /mso-tab-count/.match(x["style"])
@@ -79,7 +79,7 @@ module IsoDoc::Function
79
79
  "//references[title = 'Normative References' or title = "\
80
80
  "'Normative references'] | "\
81
81
  "//sections/terms | //preface/abstract | //foreword | "\
82
- "//introduction | //preface/clause | //acknowledgements "\
82
+ "//introduction | //preface/clause | //acknowledgements | "\
83
83
  "//sections/definitions | //clause[parent::sections]"
84
84
  sequential_asset_names(d.xpath(ns(middle_sections)))
85
85
  end
@@ -48,7 +48,7 @@ module IsoDoc::HtmlFunction
48
48
  end
49
49
 
50
50
  def table_footnote_parse(node, out)
51
- fn = node["reference"]
51
+ fn = node["reference"] || UUIDTools::UUID.random_create.to_s
52
52
  tid = get_table_ancestor_id(node)
53
53
  make_table_footnote_link(out, tid + fn, fn)
54
54
  # do not output footnote text if we have already seen it for this table
@@ -64,7 +64,7 @@ module IsoDoc::HtmlFunction
64
64
  def footnote_parse(node, out)
65
65
  return table_footnote_parse(node, out) if (@in_table || @in_figure) &&
66
66
  !node.ancestors.map {|m| m.name }.include?("name")
67
- fn = node["reference"]
67
+ fn = node["reference"] || UUIDTools::UUID.random_create.to_s
68
68
  attrs = { "epub:type": "footnote", rel: "footnote", href: "#fn:#{fn}" }
69
69
  out.a **attrs do |a|
70
70
  a.sup { |sup| sup << fn }
@@ -108,7 +108,7 @@ module IsoDoc::HtmlFunction
108
108
  idx = docxml.at("//div[@id = 'toc']") or return docxml
109
109
  toc = "<ul>"
110
110
  path = toclevel_classes.map do |l|
111
- "//main//#{l}[not(@class = 'TermNum')][not(@class = 'noTOC')][not(text())]"
111
+ "//main//#{l}[not(@class = 'TermNum')][not(@class = 'noTOC')][text()]"
112
112
  end
113
113
  docxml.xpath(path.join(" | ")).each_with_index do |h, tocidx|
114
114
  h["id"] ||= "toc#{tocidx}"
@@ -3,7 +3,8 @@ require_relative "./metadata_date"
3
3
  module IsoDoc
4
4
  class Metadata
5
5
  DATETYPES = %w{published accessed created implemented obsoleted confirmed
6
- updated issued received transmitted copied unchanged circulated}.freeze
6
+ updated issued received transmitted copied unchanged circulated vote-started
7
+ vote-ended}.freeze
7
8
 
8
9
  def ns(xpath)
9
10
  Common::ns(xpath)
@@ -15,7 +16,7 @@ module IsoDoc
15
16
 
16
17
  def initialize(lang, script, labels)
17
18
  @metadata = {}
18
- DATETYPES.each { |w| @metadata["#{w}date".to_sym] = "XXX" }
19
+ DATETYPES.each { |w| @metadata["#{w.gsub(/-/, "_")}date".to_sym] = "XXX" }
19
20
  @lang = lang
20
21
  @script = script
21
22
  @c = HTMLEntities.new
@@ -84,7 +85,7 @@ module IsoDoc
84
85
 
85
86
  def bibdate(isoxml, _out)
86
87
  isoxml.xpath(ns("//bibdata/date")).each do |d|
87
- set("#{d['type']}date".to_sym, Common::date_range(d))
88
+ set("#{d['type'].gsub(/-/, "_")}date".to_sym, Common::date_range(d))
88
89
  end
89
90
  end
90
91
 
@@ -1,3 +1,3 @@
1
1
  module IsoDoc
2
- VERSION = "1.0.24".freeze
2
+ VERSION = "1.0.25".freeze
3
3
  end
@@ -204,10 +204,6 @@ module IsoDoc::WordFunction
204
204
  alt: node["alt"],
205
205
  title: node["title"],
206
206
  width: node["width"] }
207
- if node["height"] == "auto" || node["width"] == "auto"
208
- attrs[:height] = nil
209
- attrs[:width] = nil
210
- end
211
207
  out.img **attr_code(attrs)
212
208
  image_title_parse(out, caption)
213
209
  end
@@ -56,7 +56,7 @@ module IsoDoc::WordFunction
56
56
  end
57
57
 
58
58
  def table_footnote_parse(node, out)
59
- fn = node["reference"]
59
+ fn = node["reference"] || UUIDTools::UUID.random_create.to_s
60
60
  tid = get_table_ancestor_id(node)
61
61
  make_table_footnote_link(out, tid + fn, fn)
62
62
  # do not output footnote text if we have already seen it for this table
@@ -80,7 +80,7 @@ module IsoDoc::WordFunction
80
80
  def footnote_parse(node, out)
81
81
  return table_footnote_parse(node, out) if (@in_table || @in_figure) &&
82
82
  !node.ancestors.map {|m| m.name }.include?("name")
83
- fn = node["reference"]
83
+ fn = node["reference"] || UUIDTools::UUID.random_create.to_s
84
84
  return seen_footnote_parse(node, out, fn) if @seen_footnote.include?(fn)
85
85
  @fn_bookmarks[fn] = bookmarkid
86
86
  out.span **{style: "mso-bookmark:_Ref#{@fn_bookmarks[fn]}"} do |s|
@@ -39,7 +39,6 @@ xmlns:m="http://schemas.microsoft.com/office/2004/12/omml">
39
39
  end
40
40
 
41
41
  def toWord(result, filename, dir, header)
42
- #result = populate_template(result, :word)
43
42
  result = from_xhtml(word_cleanup(to_xhtml(result)))
44
43
  unless @landscapestyle.empty?
45
44
  @wordstylesheet&.open
@@ -196,6 +195,8 @@ xmlns:m="http://schemas.microsoft.com/office/2004/12/omml">
196
195
  @landscapestyle = ""
197
196
  word_section_breaks1(docxml, "WordSection2")
198
197
  word_section_breaks1(docxml, "WordSection3")
198
+ word_remove_pb_before_annex(docxml)
199
+ docxml.xpath("//br[@orientation]").each { |br| br.delete("orientation") }
199
200
  end
200
201
 
201
202
  def word_section_breaks1(docxml, sect)
@@ -203,7 +204,6 @@ xmlns:m="http://schemas.microsoft.com/office/2004/12/omml">
203
204
  each_with_index do |br, i|
204
205
  @landscapestyle += "\ndiv.#{sect}_#{i} {page:#{sect}"\
205
206
  "#{br["orientation"] == "landscape" ? "L" : "P"};}\n"
206
- br.delete("orientation")
207
207
  split_at_section_break(docxml, sect, br, i)
208
208
  end
209
209
  end
@@ -219,6 +219,17 @@ xmlns:m="http://schemas.microsoft.com/office/2004/12/omml">
219
219
  end
220
220
  end
221
221
 
222
+ # applies for <div class="WordSectionN_M"><p><pagebreak/></p>...
223
+ def word_remove_pb_before_annex(docxml)
224
+ docxml.xpath("//div[p/br]").each do |d|
225
+ /^WordSection\d+_\d+$/.match(d["class"]) or next
226
+ d.elements[0].name == "p" && !d.elements[0].elements.empty? or next
227
+ d.elements[0].elements[0].name == "br" && d.elements[0].elements[0]["style"] ==
228
+ "mso-special-character:line-break;page-break-before:always" or next
229
+ d.elements[0].remove
230
+ end
231
+ end
232
+
222
233
  def word_footnote_format(docxml)
223
234
  # the content is in a[@epub:type = 'footnote']//sup, but in Word,
224
235
  # we need to inject content around the autonumbered footnote reference
@@ -417,8 +417,8 @@ B</pre>
417
417
  <div id="figureA-1" class="figure">
418
418
 
419
419
  <img src="rice_images/rice_image1.png" height="20" width="30" alt="alttext" title="titletext"/>
420
- <img src="rice_images/rice_image1.png"/>
421
- <img src="_.gif"/>
420
+ <img src="rice_images/rice_image1.png" height='20' width='auto'/>
421
+ <img src='_.gif' height='20' width='auto'/>
422
422
  <a href="#_" class="TableFootnoteRef">a</a><aside><div id="ftn_"><span><span id="_" class="TableFootnoteRef">a</span><span style="mso-tab-count:1">&#160; </span></span>
423
423
  <p id="_">The time <span class="stem">(#(t_90)#)</span> was estimated to be 18,2 min for this example.</p>
424
424
  </div></aside>
@@ -969,7 +969,7 @@ World</p>
969
969
  INPUT
970
970
  #{HTML_HDR}
971
971
  <p class="zzSTDTitle1"/>
972
- <div><h1>1.&#160; Terms and definitions</h1>
972
+ <div><h1>1.&#160; </h1>
973
973
  <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>
974
974
 
975
975
  <p id="_318b3939-be09-46c4-a284-93f9826b981e">&lt;rice&gt; organic and inorganic components other than whole or broken kernels</p>
@@ -715,7 +715,7 @@ INPUT
715
715
  OUTPUT
716
716
  end
717
717
 
718
- it "breaks up very long strings in tables" do
718
+ it "does not break up very long strings in tables by default" do
719
719
  expect(xmlpp(IsoDoc::HtmlConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s)).to be_equivalent_to xmlpp(<<~"OUTPUT")
720
720
  <html xmlns:epub="http://www.idpf.org/2007/ops">
721
721
  <head>
@@ -739,6 +739,7 @@ INPUT
739
739
  <td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Description</td>
740
740
  <td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;">Rice sample</td>
741
741
  </tr>
742
+ </thead>
742
743
  <tbody>
743
744
  <tr>
744
745
  <td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">http://www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/BBBBBBBBBBBBBBBBBBBBBBBBBBBB</td>
@@ -775,6 +776,90 @@ INPUT
775
776
  <td align='left' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;'>Description</td>
776
777
  <td align='center' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;'>Rice sample</td>
777
778
  </tr>
779
+ </thead>
780
+ <tbody>
781
+ <tr>
782
+ <td align='left' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;'>
783
+ http://www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/BBBBBBBBBBBBBBBBBBBBBBBBBBBB
784
+ </td>
785
+ <td align='left' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;'>
786
+ http://www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBB </td>
787
+ <td align='center' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;'>
788
+ www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBB
789
+ </td>
790
+ </tr>
791
+ </tbody>
792
+ </table>
793
+ </div>
794
+ </div>
795
+ </body>
796
+ </head>
797
+ </html>
798
+ OUTPUT
799
+ end
800
+
801
+ it "breaks up very long strings in tables on request" do
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
+ <html xmlns:epub="http://www.idpf.org/2007/ops">
804
+ <head>
805
+ <title>test</title>
806
+ <body lang="EN-US" link="blue" vlink="#954F72">
807
+ <div class="WordSection1">
808
+ <p>&#160;</p>
809
+ </div>
810
+ <br clear="all" class="section"/>
811
+ <div class="WordSection2">
812
+ <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
813
+ <div>
814
+ <h1 class="ForewordTitle">Foreword</h1>
815
+ <p class="TableTitle" align="center">
816
+ <b>Table 1&#160;&#8212; Repeatability and reproducibility of husked rice yield</b>
817
+ </p>
818
+ <table id="tableD-1" class="MsoISOTable" border="1" cellspacing="0" cellpadding="0">
819
+ <thead>
820
+ <tr>
821
+ <td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Description</td>
822
+ <td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Description</td>
823
+ <td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;">Rice sample</td>
824
+ </tr>
825
+ </thead>
826
+ <tbody>
827
+ <tr>
828
+ <td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">http://www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/BBBBBBBBBBBBBBBBBBBBBBBBBBBB</td>
829
+ <td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">http://www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBB</td>
830
+ <td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;">www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBB</td>
831
+ </tr>
832
+ </tbody>
833
+ </table>
834
+ </div>
835
+ </div>
836
+ </body>
837
+ </html>
838
+ INPUT
839
+ <?xml version='1.0'?>
840
+ <html xmlns:epub='http://www.idpf.org/2007/ops'>
841
+ <head>
842
+ <title>test</title>
843
+ <body lang='EN-US' link='blue' vlink='#954F72'>
844
+ <div class='WordSection1'>
845
+ <p>&#xA0;</p>
846
+ </div>
847
+ <br clear='all' class='section'/>
848
+ <div class='WordSection2'>
849
+ <br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
850
+ <div>
851
+ <h1 class='ForewordTitle'>Foreword</h1>
852
+ <p class='TableTitle' align='center'>
853
+ <b>Table 1&#xA0;&#x2014; Repeatability and reproducibility of husked rice yield</b>
854
+ </p>
855
+ <table id='tableD-1' class='MsoISOTable' border='1' cellspacing='0' cellpadding='0'>
856
+ <thead>
857
+ <tr>
858
+ <td align='left' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;'>Description</td>
859
+ <td align='left' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;'>Description</td>
860
+ <td align='center' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;'>Rice sample</td>
861
+ </tr>
862
+ </thead>
778
863
  <tbody>
779
864
  <tr>
780
865
  <td align='left' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;'>
@@ -794,7 +879,6 @@ ABBBBBBBBBBBBBBBBBBBBBBBBBBBB
794
879
  </td>
795
880
  </tr>
796
881
  </tbody>
797
- </thead>
798
882
  </table>
799
883
  </div>
800
884
  </div>
@@ -804,7 +888,8 @@ ABBBBBBBBBBBBBBBBBBBBBBBBBBBB
804
888
  OUTPUT
805
889
  end
806
890
 
807
- it "breaks up very long strings in tables (Word)" do
891
+
892
+ it "does not break up very long strings in tables by default (Word)" do
808
893
  expect(xmlpp(IsoDoc::WordConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s)).to be_equivalent_to xmlpp(<<~"OUTPUT")
809
894
  <html xmlns:epub="http://www.idpf.org/2007/ops">
810
895
  <head>
@@ -828,16 +913,17 @@ ABBBBBBBBBBBBBBBBBBBBBBBBBBBB
828
913
  <td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Description</td>
829
914
  <td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;">Rice sample</td>
830
915
  </tr>
916
+ </thead>
831
917
  <tbody>
832
918
  <tr>
833
919
  <td align='left' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;'>
834
- http://www.example.com/ &amp;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA/ BBBBBBBBBBBBBBBBBBBBBBBBBBBB
920
+ http://www.example.com/&amp;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/BBBBBBBBBBBBBBBBBBBBBBBBBBBB
835
921
  </td>
836
922
  <td align='left' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;'>
837
- http://www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAABBBBBBBBBBBBBBBBBBBBBB BBBBBB
923
+ http://www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBB
838
924
  </td>
839
925
  <td align='center' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;'>
840
- www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABBBBBBBBBBBBBBBBBBBBBBBBBBBB
926
+ www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBB
841
927
  </td>
842
928
  </tr>
843
929
  </tbody>
@@ -870,20 +956,104 @@ ABBBBBBBBBBBBBBBBBBBBBBBBBBBB
870
956
  <td align='left' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;'>Description</td>
871
957
  <td align='center' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;'>Rice sample</td>
872
958
  </tr>
959
+ </thead>
873
960
  <tbody>
874
961
  <tr>
875
962
  <td align='left' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;'>
876
- http://www.example.com/ &amp;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA/ BBBBBBBBBBBBBBBBBBBBBBBBBBBB
963
+ http://www.example.com/&amp;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/BBBBBBBBBBBBBBBBBBBBBBBBBBBB
877
964
  </td>
878
965
  <td align='left' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;'>
879
- http://www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAABBBBBBBBBBBBBBBBBBBBBB BBBBBB
966
+ http://www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBB
880
967
  </td>
881
968
  <td align='center' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;'>
882
- www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABBBBBBBBBBBBBBBBBBBBBBBBBBBB
969
+ www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBB
970
+ </td>
971
+ </tr>
972
+ </tbody>
973
+ </table>
974
+ </div>
975
+ </div>
976
+ </body>
977
+ </head>
978
+ </html>
979
+ OUTPUT
980
+ end
981
+
982
+ it "breaks up very long strings in tables on request (Word)" do
983
+ expect(xmlpp(IsoDoc::WordConvert.new({break_up_urls_in_tables: "true"}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s)).to be_equivalent_to xmlpp(<<~"OUTPUT")
984
+ <html xmlns:epub="http://www.idpf.org/2007/ops">
985
+ <head>
986
+ <title>test</title>
987
+ <body lang="EN-US" link="blue" vlink="#954F72">
988
+ <div class="WordSection1">
989
+ <p>&#160;</p>
990
+ </div>
991
+ <br clear="all" class="section"/>
992
+ <div class="WordSection2">
993
+ <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
994
+ <div>
995
+ <h1 class="ForewordTitle">Foreword</h1>
996
+ <p class="TableTitle" align="center">
997
+ <b>Table 1&#160;&#8212; Repeatability and reproducibility of husked rice yield</b>
998
+ </p>
999
+ <table id="tableD-1" class="MsoISOTable" border="1" cellspacing="0" cellpadding="0">
1000
+ <thead>
1001
+ <tr>
1002
+ <td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Description</td>
1003
+ <td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">Description</td>
1004
+ <td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;">Rice sample</td>
1005
+ </tr>
1006
+ </thead>
1007
+ <tbody>
1008
+ <tr>
1009
+ <td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">http://www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/BBBBBBBBBBBBBBBBBBBBBBBBBBBB</td>
1010
+ <td align="left" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;">http://www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBB</td>
1011
+ <td align="center" style="border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;">www.example.com/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBB</td>
1012
+ </tr>
1013
+ </tbody>
1014
+ </table>
1015
+ </div>
1016
+ </div>
1017
+ </body>
1018
+ </html>
1019
+ INPUT
1020
+ <?xml version='1.0'?>
1021
+ <html xmlns:epub='http://www.idpf.org/2007/ops'>
1022
+ <head>
1023
+ <title>test</title>
1024
+ <body lang='EN-US' link='blue' vlink='#954F72'>
1025
+ <div class='WordSection1'>
1026
+ <p>&#xA0;</p>
1027
+ </div>
1028
+ <br clear='all' class='section'/>
1029
+ <div class='WordSection2'>
1030
+ <br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
1031
+ <div>
1032
+ <h1 class='ForewordTitle'>Foreword</h1>
1033
+ <p class='TableTitle' align='center'>
1034
+ <b>Table 1&#xA0;&#x2014; Repeatability and reproducibility of husked rice yield</b>
1035
+ </p>
1036
+ <table id='tableD-1' class='MsoISOTable' border='1' cellspacing='0' cellpadding='0'>
1037
+ <thead>
1038
+ <tr>
1039
+ <td align='left' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;'>Description</td>
1040
+ <td align='left' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;'>Description</td>
1041
+ <td align='center' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;'>Rice sample</td>
1042
+ </tr>
1043
+ </thead>
1044
+ <tbody>
1045
+ <tr>
1046
+ <td align='left' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;'>
1047
+ http://www.example.com/ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA/ BBBBBBBBBBBBBBBBBBBBBBBBBBBB
1048
+ </td>
1049
+ <td align='left' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;'>
1050
+ http://www.example.com/ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAABBBBBBBBBBBBBBBBBBBBBB BBBBBB
1051
+ </td>
1052
+ <td align='center' style='border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;'>
1053
+ www.example.com/ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABBBBBBBBBBBBBBBBBBBBBBBBBBBB
883
1054
  </td>
884
1055
  </tr>
885
1056
  </tbody>
886
- </thead>
887
1057
  </table>
888
1058
  </div>
889
1059
  </div>
@@ -21,7 +21,7 @@ RSpec.describe IsoDoc do
21
21
  <p id="E">Text</p>
22
22
  </clause>
23
23
 
24
- <clause id="H" obligation="normative"><title>Terms, Definitions, Symbols and Abbreviated Terms</title><terms id="I" obligation="normative">
24
+ <clause id="H" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
25
25
  <title>Normal Terms</title>
26
26
  <term id="J">
27
27
  <preferred>Term2</preferred>
@@ -157,7 +157,7 @@ RSpec.describe IsoDoc do
157
157
  <p id="E">Text</p>
158
158
  </clause>
159
159
 
160
- <clause id="H" obligation="normative"><title>Terms, Definitions, Symbols and Abbreviated Terms</title><terms id="I" obligation="normative">
160
+ <clause id="H" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
161
161
  <title>Normal Terms</title>
162
162
  <term id="J">
163
163
  <preferred>Term2</preferred>
@@ -293,7 +293,7 @@ RSpec.describe IsoDoc do
293
293
  <p id="E">Text</p>
294
294
  </clause>
295
295
 
296
- <clause id="H" obligation="normative"><title>Terms, Definitions, Symbols and Abbreviated Terms</title><terms id="I" obligation="normative">
296
+ <clause id="H" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
297
297
  <title>Normal Terms</title>
298
298
  <term id="J">
299
299
  <preferred>Term2</preferred>
@@ -430,7 +430,7 @@ RSpec.describe IsoDoc do
430
430
  <p id="E"><eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom><referenceTo>1</referenceTo></locality></eref></p>
431
431
  </clause>
432
432
 
433
- <clause id="H" obligation="normative"><title>Terms, Definitions, Symbols and Abbreviated Terms</title><terms id="I" obligation="normative">
433
+ <clause id="H" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
434
434
  <title>Normal Terms</title>
435
435
  <term id="J">
436
436
  <preferred>Term2</preferred>
@@ -30,6 +30,8 @@ RSpec.describe IsoDoc do
30
30
  <date type="updated"><on>2018</on></date>
31
31
  <date type="unchanged"><on>2019</on></date>
32
32
  <date type="transmitted"><on>2020</on></date>
33
+ <date type="vote-started"><on>2021</on></date>
34
+ <date type="vote-ended"><on>2022</on></date>
33
35
  <edition>2</edition>
34
36
  <version>
35
37
  <revision-date>2016-05-01</revision-date>
@@ -92,7 +94,7 @@ RSpec.describe IsoDoc do
92
94
  </bibdata>
93
95
  </iso-standard>
94
96
  INPUT
95
- {:accesseddate=>"2012", :activateddate=>"2013", :agency=>"ISO", :authors=>["Barney Rubble", "Fred Flintstone"], :authors_affiliations=>{"Slate Inc., Bedrock"=>["Barney Rubble"], ""=>["Fred Flintstone"]}, :circulateddate=>"2015", :confirmeddate=>"2017", :copieddate=>"2016", :createddate=>"2010&ndash;2011", :doc=>"URL E", :docnumber=>"17301-1", :docnumeric=>"17301", :doctitle=>"Cereals and pulses", :doctype=>"International Standard", :docyear=>"2016", :draft=>"0.4", :draftinfo=>" (draft 0.4, 2016-05-01)", :edition=>"2", :html=>"URL B", :implementeddate=>"XXX", :issueddate=>"XXX", :iteration=>"2", :obsoleteddate=>"2014", :pdf=>"URL D", :publisheddate=>"2011", :publisher=>"", :receiveddate=>"XXX", :revdate=>"2016-05-01", :revdate_monthyear=>"May 2016", :stage=>"Committee draft", :stageabbr=>"CD", :substage=>"Withdrawn", :transmitteddate=>"2020", :unchangeddate=>"2019", :unpublished=>true, :updateddate=>"2018", :url=>"URL A", :xml=>"URL C"}
97
+ {:accesseddate=>"2012", :activateddate=>"2013", :agency=>"ISO", :authors=>["Barney Rubble", "Fred Flintstone"], :authors_affiliations=>{"Slate Inc., Bedrock"=>["Barney Rubble"], ""=>["Fred Flintstone"]}, :circulateddate=>"2015", :confirmeddate=>"2017", :copieddate=>"2016", :createddate=>"2010&ndash;2011", :doc=>"URL E", :docnumber=>"17301-1", :docnumeric=>"17301", :doctitle=>"Cereals and pulses", :doctype=>"International Standard", :docyear=>"2016", :draft=>"0.4", :draftinfo=>" (draft 0.4, 2016-05-01)", :edition=>"2", :html=>"URL B", :implementeddate=>"XXX", :issueddate=>"XXX", :iteration=>"2", :obsoleteddate=>"2014", :pdf=>"URL D", :publisheddate=>"2011", :publisher=>"", :receiveddate=>"XXX", :revdate=>"2016-05-01", :revdate_monthyear=>"May 2016", :stage=>"Committee draft", :stageabbr=>"CD", :substage=>"Withdrawn", :transmitteddate=>"2020", :unchangeddate=>"2019", :unpublished=>true, :updateddate=>"2018", :url=>"URL A", :vote_endeddate=>"2022", :vote_starteddate=>"2021", :xml=>"URL C"}
96
98
  OUTPUT
97
99
  end
98
100
 
@@ -166,7 +168,7 @@ OUTPUT
166
168
  </version>
167
169
  </iso-standard>
168
170
  INPUT
169
- {:accesseddate=>"XXX", :agency=>"ISO/IEC/IEEE", :authors=>[], :authors_affiliations=>{}, :circulateddate=>"XXX", :confirmeddate=>"XXX", :copieddate=>"XXX", :createddate=>"XXX", :docnumber=>"17301-1-3", :docnumeric=>"17301", :doctitle=>"Cereals and pulses", :doctype=>"International Standard", :docyear=>"2016", :draft=>"12", :draftinfo=>" (draft 12, 2016-05)", :edition=>nil, :implementeddate=>"XXX", :issueddate=>"XXX", :obsoleteddate=>"XXX", :obsoletes=>"IEC 8121", :obsoletes_part=>"3.1", :partof=>"IEC 8122", :publisheddate=>"2011-01", :publisher=>"International Organization for Standardization, International Electrotechnical Commission and Institute of Electrical and Electronics Engineers", :receiveddate=>"XXX", :revdate=>"2016-05", :revdate_monthyear=>"May 2016", :stage=>"Published", :transmitteddate=>"XXX", :unchangeddate=>"XXX", :unpublished=>false, :updateddate=>"XXX"}
171
+ {:accesseddate=>"XXX", :agency=>"ISO/IEC/IEEE", :authors=>[], :authors_affiliations=>{}, :circulateddate=>"XXX", :confirmeddate=>"XXX", :copieddate=>"XXX", :createddate=>"XXX", :docnumber=>"17301-1-3", :docnumeric=>"17301", :doctitle=>"Cereals and pulses", :doctype=>"International Standard", :docyear=>"2016", :draft=>"12", :draftinfo=>" (draft 12, 2016-05)", :edition=>nil, :implementeddate=>"XXX", :issueddate=>"XXX", :obsoleteddate=>"XXX", :obsoletes=>"IEC 8121", :obsoletes_part=>"3.1", :partof=>"IEC 8122", :publisheddate=>"2011-01", :publisher=>"International Organization for Standardization, International Electrotechnical Commission and Institute of Electrical and Electronics Engineers", :receiveddate=>"XXX", :revdate=>"2016-05", :revdate_monthyear=>"May 2016", :stage=>"Published", :transmitteddate=>"XXX", :unchangeddate=>"XXX", :unpublished=>false, :updateddate=>"XXX", :vote_endeddate=>"XXX", :vote_starteddate=>"XXX"}
170
172
  OUTPUT
171
173
  end
172
174
 
@@ -225,7 +227,7 @@ OUTPUT
225
227
  </bibdata>
226
228
  </iso-standard>
227
229
  INPUT
228
- {:accesseddate=>"XXX", :agency=>"ISO/IEC", :authors=>[], :authors_affiliations=>{}, :circulateddate=>"XXX", :confirmeddate=>"XXX", :copieddate=>"XXX", :createddate=>"XXX", :docnumber=>"17301-1-3", :docnumeric=>"17301", :doctitle=>"Cereals and pulses", :docyear=>"2016", :draft=>nil, :draftinfo=>"", :edition=>nil, :implementeddate=>"XXX", :issueddate=>"XXX", :obsoleteddate=>"XXX", :publisheddate=>"2011-01", :publisher=>"International Organization for Standardization et International Electrotechnical Commission", :receiveddate=>"XXX", :revdate=>"2016-05", :revdate_monthyear=>"Mai 2016", :stage=>"Published", :transmitteddate=>"XXX", :unchangeddate=>"XXX", :unpublished=>false, :updateddate=>"XXX"}
230
+ {:accesseddate=>"XXX", :agency=>"ISO/IEC", :authors=>[], :authors_affiliations=>{}, :circulateddate=>"XXX", :confirmeddate=>"XXX", :copieddate=>"XXX", :createddate=>"XXX", :docnumber=>"17301-1-3", :docnumeric=>"17301", :doctitle=>"Cereals and pulses", :docyear=>"2016", :draft=>nil, :draftinfo=>"", :edition=>nil, :implementeddate=>"XXX", :issueddate=>"XXX", :obsoleteddate=>"XXX", :publisheddate=>"2011-01", :publisher=>"International Organization for Standardization et International Electrotechnical Commission", :receiveddate=>"XXX", :revdate=>"2016-05", :revdate_monthyear=>"Mai 2016", :stage=>"Published", :transmitteddate=>"XXX", :unchangeddate=>"XXX", :unpublished=>false, :updateddate=>"XXX", :vote_endeddate=>"XXX", :vote_starteddate=>"XXX"}
229
231
  OUTPUT
230
232
  end
231
233
 
@@ -299,7 +299,7 @@ expect(File.exist?("test.doc")).to be true
299
299
  expect(xmlpp(word)).to be_equivalent_to xmlpp(<<~"OUTPUT")
300
300
  <div class="WordSection3">
301
301
  <p class="zzSTDTitle1"></p>
302
- <div><a name="_terms_and_definitions" id="_terms_and_definitions"></a><h1>1.<span style="mso-tab-count:1">&#xA0; </span>Terms and definitions</h1>
302
+ <div><a name="_terms_and_definitions" id="_terms_and_definitions"></a><h1>1.<span style="mso-tab-count:1">&#xA0; </span>Terms and Definitions</h1>
303
303
  <p class="TermNum"><a name="paddy1" id="paddy1"></a>1.1.</p><p class="Terms" style="text-align:left;">paddy</p>
304
304
  <p class="MsoNormal"><a name="_eb29b35e-123e-4d1c-b50b-2714d41e747f" id="_eb29b35e-123e-4d1c-b50b-2714d41e747f"></a>rice retaining its husk after threshing</p>
305
305
  <p class="MsoNormal">[SOURCE: <a href="#ISO7301">ISO 7301:2011, Clause 3.1</a>, modified &#x2014; The term "cargo rice" is shown as deprecated, and Note 1 to entry is not included here]</p></div>
@@ -1316,7 +1316,11 @@ OUTPUT
1316
1316
  <pagebreak orientation="portrait"/>
1317
1317
  <p>And up</p>
1318
1318
  </note>
1319
+ <pagebreak orientation="portrait"/>
1319
1320
  </clause></sections>
1321
+ <annex id="_level_1" inline-header="false" obligation="normative">
1322
+ <title>Annex 1</title>
1323
+ </annex>
1320
1324
  </standard-document>
1321
1325
  INPUT
1322
1326
  expect(File.exist?("test.doc")).to be true
@@ -1324,7 +1328,9 @@ OUTPUT
1324
1328
  expect(html).to include "div.WordSection2_0 {page:WordSection2P;}"
1325
1329
  expect(html).to include "div.WordSection2_1 {page:WordSection2L;}"
1326
1330
  expect(html).to include "div.WordSection3_0 {page:WordSection3P;}"
1327
- expect(html).to include "div.WordSection3_1 {page:WordSection3L;}"
1331
+ expect(html).to include "div.WordSection3_1 {page:WordSection3P;}"
1332
+ expect(html).to include "div.WordSection3_2 {page:WordSection3L;}"
1333
+
1328
1334
 
1329
1335
  expect(xmlpp(html.sub(/^.*<body /m, "<body ").sub(%r{</body>.*$}m, "</body>"))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1330
1336
  <body lang='EN-US' xml:lang='EN-US' link='blue' vlink='#954F72'>
@@ -1335,9 +1341,9 @@ expect(xmlpp(html.sub(/^.*<body /m, "<body ").sub(%r{</body>.*$}m, "</body>"))).
1335
1341
  <br clear='all' class='section'/>
1336
1342
  </p>
1337
1343
  <div class='WordSection2'>
1338
- <p class='MsoNormal'>
1339
- <br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
1340
- </p>
1344
+ <p class='MsoNormal'>
1345
+ <br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
1346
+ </p>
1341
1347
  <div class='Section3' id=''>
1342
1348
  <h1 class='IntroTitle'>Introduction</h1>
1343
1349
  <p align='center' style='text-align:center' class='MsoNormal'>
@@ -1396,7 +1402,7 @@ expect(xmlpp(html.sub(/^.*<body /m, "<body ").sub(%r{</body>.*$}m, "</body>"))).
1396
1402
  </div>
1397
1403
  </div>
1398
1404
  </div>
1399
- <div class='WordSection3_1'>
1405
+ <div class='WordSection3_2'>
1400
1406
  <p class='TableTitle' style='text-align:center;'>Table 1</p>
1401
1407
  <div align='center' class='table_container'>
1402
1408
  <table class='MsoISOTable' style='mso-table-anchor-horizontal:column;mso-table-overlap:never;border-spacing:0;border-width:1px;'>
@@ -1433,8 +1439,24 @@ expect(xmlpp(html.sub(/^.*<body /m, "<body ").sub(%r{</body>.*$}m, "</body>"))).
1433
1439
  <br clear='all' class='section'/>
1434
1440
  </p>
1435
1441
  </div>
1436
- <div class='WordSection3_0'>
1442
+ <div class='WordSection3_1'>
1437
1443
  <p class='Note'>And up</p>
1444
+ <p class='MsoNormal'>
1445
+ <br clear='all' class='section'/>
1446
+ </p>
1447
+ </div>
1448
+ <div class='WordSection3_0'>
1449
+ <div class='Section3'>
1450
+ <a name='_level_1' id='_level_1'/>
1451
+ <h1 class='Annex'>
1452
+ <b>Annex A</b>
1453
+ <br/>
1454
+ (normative)
1455
+ <br/>
1456
+ <br/>
1457
+ <b>Annex 1</b>
1458
+ </h1>
1459
+ </div>
1438
1460
  </div>
1439
1461
  <div style='mso-element:footnote-list'/>
1440
1462
  </body>
@@ -188,7 +188,7 @@ RSpec.describe IsoDoc do
188
188
  <div>
189
189
  <h1>2.&#160; Normative references</h1>
190
190
  </div>
191
- <div id="H"><h1>3.&#160; Terms, definitions, symbols and abbreviated terms</h1>
191
+ <div id="H"><h1>3.&#160; Terms, Definitions, Symbols and Abbreviated Terms</h1>
192
192
  <div id="I">
193
193
  <h2>3.1.&#160; Normal Terms</h2>
194
194
  <p class="TermNum" id="J">3.1.1.</p>
@@ -429,7 +429,7 @@ OUTPUT
429
429
  <div>
430
430
  <h1>2.<span style="mso-tab-count:1">&#160; </span>Normative references</h1>
431
431
  </div>
432
- <div id="H"><h1>3.<span style="mso-tab-count:1">&#160; </span>Terms, definitions, symbols and abbreviated terms</h1>
432
+ <div id="H"><h1>3.<span style="mso-tab-count:1">&#160; </span>Terms, Definitions, Symbols and Abbreviated Terms</h1>
433
433
  <div id="I">
434
434
  <h2>3.1.<span style="mso-tab-count:1">&#160; </span>Normal Terms</h2>
435
435
  <p class="TermNum" id="J">3.1.1.</p>
@@ -669,7 +669,12 @@ OUTPUT
669
669
  </div>
670
670
  <p class='zzSTDTitle1'/>
671
671
  <div id='H'>
672
- <h1>1.&#160; Terms, definitions, symbols and abbreviated terms</h1>
672
+ <h1>
673
+ 1.&#160; Terms, Definitions, Symbols and Abbreviated Terms
674
+ <a rel='footnote' href='#fn:10' epub:type='footnote'>
675
+ <sup>10</sup>
676
+ </a>
677
+ </h1>
673
678
  <div id='I'>
674
679
  <h2>
675
680
  1.1.&#160; Normal Terms
@@ -872,7 +877,7 @@ OUTPUT
872
877
  <div>
873
878
  <h1>Normative references</h1>
874
879
  </div>
875
- <div id="H"><h1>Terms, definitions, symbols and abbreviated terms</h1>
880
+ <div id="H"><h1>Terms, Definitions, Symbols and Abbreviated Terms</h1>
876
881
  <div id="I"><h2>Normal Terms</h2>
877
882
 
878
883
  <p class="TermNum" id="J">3.1.1.</p>
@@ -964,7 +969,7 @@ OUTPUT
964
969
  INPUT
965
970
  #{HTML_HDR}
966
971
  <p class="zzSTDTitle1"/>
967
- <div id="H"><h1>1.&#160; Terms and definitions</h1>
972
+ <div id="H"><h1>1.&#160; Terms, Definitions, Symbols and Abbreviated Terms</h1>
968
973
  <p class="TermNum" id="J">1.1.</p>
969
974
  <p class="Terms" style="text-align:left;">Term2</p>
970
975
  </div>
@@ -28,7 +28,26 @@ RSpec.describe IsoDoc do
28
28
  <modification>
29
29
  <p id="_e73a417d-ad39-417d-a4c8-20e4e2529489">The term "cargo rice" is shown as deprecated, and Note 1 to entry is not included here</p>
30
30
  </modification>
31
- </termsource></term>
31
+ </termsource>
32
+
33
+ <termsource status='identical'>
34
+ <origin citeas=''>
35
+ <termref base='IEV' target='xyz'>t1</termref>
36
+ </origin>
37
+ </termsource>
38
+
39
+ <termsource status='modified'>
40
+ <origin citeas=''>
41
+ <termref base='IEV' target='xyz'/>
42
+ </origin>
43
+ <modification>
44
+ <p id='_'>with adjustments</p>
45
+ </modification>
46
+ </termsource>
47
+
48
+
49
+
50
+ </term>
32
51
 
33
52
  <term id="paddy"><preferred>paddy</preferred><admitted>paddy rice</admitted>
34
53
  <admitted>rough rice</admitted>
@@ -55,7 +74,7 @@ RSpec.describe IsoDoc do
55
74
  INPUT
56
75
  #{HTML_HDR}
57
76
  <p class="zzSTDTitle1"/>
58
- <div id="_terms_and_definitions"><h1>1.&#160; Terms and definitions</h1><p>For the purposes of this document,
77
+ <div id="_terms_and_definitions"><h1>1.&#160; Terms and Definitions</h1><p>For the purposes of this document,
59
78
  the following terms and definitions apply.</p>
60
79
  <p class="TermNum" id="paddy1">1.1.</p><p class="Terms" style="text-align:left;">paddy</p>
61
80
 
@@ -75,7 +94,10 @@ RSpec.describe IsoDoc do
75
94
  <p>[TERMREF]
76
95
  <a href="#ISO7301">ISO 7301:2011, Clause 3.1</a>
77
96
  [MODIFICATION]The term "cargo rice" is shown as deprecated, and Note 1 to entry is not included here
78
- [/TERMREF]</p><p class="TermNum" id="paddy">1.2.</p><p class="Terms" style="text-align:left;">paddy</p><p class="AltTerms" style="text-align:left;">paddy rice</p>
97
+ [/TERMREF]</p>
98
+ <p>[TERMREF] Termbase IEV, term ID xyz [/TERMREF]</p>
99
+ <p>[TERMREF] Termbase IEV, term ID xyz [MODIFICATION]with adjustments [/TERMREF]</p>
100
+ <p class="TermNum" id="paddy">1.2.</p><p class="Terms" style="text-align:left;">paddy</p><p class="AltTerms" style="text-align:left;">paddy rice</p>
79
101
  <p class="AltTerms" style="text-align:left;">rough rice</p>
80
102
  <p class="DeprecatedTerms" style="text-align:left;">DEPRECATED: cargo rice</p>
81
103
  <p id="_eb29b35e-123e-4d1c-b50b-2714d41e747f">rice retaining its husk after threshing</p>
@@ -122,7 +144,26 @@ OUTPUT
122
144
  <modification>
123
145
  <p id="_e73a417d-ad39-417d-a4c8-20e4e2529489">The term "cargo rice" is shown as deprecated, and Note 1 to entry is not included here</p>
124
146
  </modification>
125
- </termsource></term>
147
+ </termsource>
148
+
149
+ <termsource status='identical'>
150
+ <origin citeas=''>
151
+ <termref base='IEV' target='xyz'>t1</termref>
152
+ </origin>
153
+ </termsource>
154
+
155
+ <termsource status='modified'>
156
+ <origin citeas=''>
157
+ <termref base='IEV' target='xyz'/>
158
+ </origin>
159
+ <modification>
160
+ <p id='_'>with adjustments</p>
161
+ </modification>
162
+ </termsource>
163
+
164
+
165
+
166
+ </term>
126
167
 
127
168
  <term id="paddy"><preferred>paddy</preferred><admitted>paddy rice</admitted>
128
169
  <admitted>rough rice</admitted>
@@ -149,7 +190,7 @@ OUTPUT
149
190
  INPUT
150
191
  #{WORD_HDR}
151
192
  <p class="zzSTDTitle1"/>
152
- <div id="_terms_and_definitions"><h1>1.<span style="mso-tab-count:1">&#160; </span>Terms and definitions</h1><p>For the purposes of this document,
193
+ <div id="_terms_and_definitions"><h1>1.<span style="mso-tab-count:1">&#160; </span>Terms and Definitions</h1><p>For the purposes of this document,
153
194
  the following terms and definitions apply.</p>
154
195
  <p class="TermNum" id="paddy1">1.1.</p><p class="Terms" style="text-align:left;">paddy</p>
155
196
 
@@ -169,7 +210,10 @@ OUTPUT
169
210
  <p>[TERMREF]
170
211
  <a href="#ISO7301">ISO 7301:2011, Clause 3.1</a>
171
212
  [MODIFICATION]The term "cargo rice" is shown as deprecated, and Note 1 to entry is not included here
172
- [/TERMREF]</p><p class="TermNum" id="paddy">1.2.</p><p class="Terms" style="text-align:left;">paddy</p><p class="AltTerms" style="text-align:left;">paddy rice</p>
213
+ [/TERMREF]</p>
214
+ <p>[TERMREF] Termbase IEV, term ID xyz [/TERMREF]</p>
215
+ <p>[TERMREF] Termbase IEV, term ID xyz [MODIFICATION]with adjustments [/TERMREF]</p>
216
+ <p class="TermNum" id="paddy">1.2.</p><p class="Terms" style="text-align:left;">paddy</p><p class="AltTerms" style="text-align:left;">paddy rice</p>
173
217
  <p class="AltTerms" style="text-align:left;">rough rice</p>
174
218
  <p class="DeprecatedTerms" style="text-align:left;">DEPRECATED: cargo rice</p>
175
219
  <p id="_eb29b35e-123e-4d1c-b50b-2714d41e747f">rice retaining its husk after threshing</p>
@@ -176,7 +176,7 @@ RSpec.describe IsoDoc do
176
176
  <a href="#N">Note</a>
177
177
  </p>
178
178
  </div>
179
- <div id="terms"><h1>2.&#160; Terms and definitions</h1>
179
+ <div id="terms"><h1>2.&#160; </h1>
180
180
  </div>
181
181
  <div id="widgets">
182
182
  <h1>3.&#160; Widgets</h1>
@@ -345,7 +345,7 @@ RSpec.describe IsoDoc do
345
345
  <a href="#N">Figure 2</a>
346
346
  </p>
347
347
  </div>
348
- <div id="terms"><h1>2.&#160; Terms and definitions</h1>
348
+ <div id="terms"><h1>2.&#160; </h1>
349
349
  </div>
350
350
  <div id="widgets">
351
351
  <h1>3.&#160; Widgets</h1>
@@ -492,7 +492,7 @@ RSpec.describe IsoDoc do
492
492
  <div id="scope">
493
493
  <h1>1.&#160; Scope</h1>
494
494
  </div>
495
- <div id="terms"><h1>2.&#160; Terms and definitions</h1>
495
+ <div id="terms"><h1>2.&#160; </h1>
496
496
  </div>
497
497
  <div id="widgets">
498
498
  <h1>3.&#160; Widgets</h1>
@@ -642,7 +642,7 @@ RSpec.describe IsoDoc do
642
642
  <a href="#N">Example</a>
643
643
  </p>
644
644
  </div>
645
- <div id="terms"><h1>2.&#160; Terms and definitions</h1>
645
+ <div id="terms"><h1>2.&#160; </h1>
646
646
  </div>
647
647
  <div id="widgets">
648
648
  <h1>3.&#160; Widgets</h1>
@@ -781,7 +781,7 @@ RSpec.describe IsoDoc do
781
781
  <a href="#N">Formula (2)</a>
782
782
  </p>
783
783
  </div>
784
- <div id="terms"><h1>2.&#160; Terms and definitions</h1>
784
+ <div id="terms"><h1>2.&#160; </h1>
785
785
  </div>
786
786
  <div id="widgets">
787
787
  <h1>3.&#160; Widgets</h1>
@@ -916,7 +916,7 @@ RSpec.describe IsoDoc do
916
916
  <a href="#N">Requirement 2</a>
917
917
  </p>
918
918
  </div>
919
- <div id="terms"><h1>2.&#160; Terms and definitions</h1>
919
+ <div id="terms"><h1>2.&#160; </h1>
920
920
  </div>
921
921
  <div id="widgets">
922
922
  <h1>3.&#160; Widgets</h1>
@@ -1061,7 +1061,7 @@ OUTPUT
1061
1061
  <a href="#N">Recommendation 2</a>
1062
1062
  </p>
1063
1063
  </div>
1064
- <div id="terms"><h1>2.&#160; Terms and definitions</h1>
1064
+ <div id="terms"><h1>2.&#160; </h1>
1065
1065
  </div>
1066
1066
  <div id="widgets">
1067
1067
  <h1>3.&#160; Widgets</h1>
@@ -1206,7 +1206,7 @@ OUTPUT
1206
1206
  <a href="#N">Permission 2</a>
1207
1207
  </p>
1208
1208
  </div>
1209
- <div id="terms"><h1>2.&#160; Terms and definitions</h1>
1209
+ <div id="terms"><h1>2.&#160; </h1>
1210
1210
  </div>
1211
1211
  <div id="widgets">
1212
1212
  <h1>3.&#160; Widgets</h1>
@@ -1520,7 +1520,7 @@ OUTPUT
1520
1520
  <a href="#N">Table 2</a>
1521
1521
  </p>
1522
1522
  </div>
1523
- <div id="terms"><h1>2.&#160; Terms and definitions</h1>
1523
+ <div id="terms"><h1>2.&#160; </h1>
1524
1524
  </div>
1525
1525
  <div id="widgets">
1526
1526
  <h1>3.&#160; Widgets</h1>
@@ -1599,7 +1599,7 @@ OUTPUT
1599
1599
  <div id="scope">
1600
1600
  <h1>1.&#160; Scope</h1>
1601
1601
  </div>
1602
- <div id="terms"><h1>2.&#160; Terms and definitions</h1>
1602
+ <div id="terms"><h1>2.&#160; </h1>
1603
1603
  <p class="TermNum" id="_waxy_rice">2.1.</p><p class="Terms" style="text-align:left;">waxy rice</p>
1604
1604
  <div class="Note"><p>Note 1 to entry: The starch of waxy rice consists almost entirely of amylopectin. The kernels have a tendency to stick together after cooking.</p></div><p class="TermNum" id="_nonwaxy_rice">2.2.</p><p class="Terms" style="text-align:left;">nonwaxy rice</p>
1605
1605
  <div class="Note"><p>Note 1 to entry: The starch of waxy rice consists almost entirely of amylopectin. The kernels have a tendency to stick together after cooking.</p></div>
@@ -1875,7 +1875,7 @@ OUTPUT
1875
1875
  <li><p>A</p></li>
1876
1876
  </ol>
1877
1877
  </div>
1878
- <div id="terms"><h1>2.&#160; Terms and definitions</h1>
1878
+ <div id="terms"><h1>2.&#160; </h1>
1879
1879
  </div>
1880
1880
  <div id="widgets">
1881
1881
  <h1>3.&#160; Widgets</h1>
@@ -2014,7 +2014,7 @@ OUTPUT
2014
2014
  <li id="N"><p>A</p></li>
2015
2015
  </ol>
2016
2016
  </div>
2017
- <div id="terms"><h1>2.&#160; Terms and definitions</h1>
2017
+ <div id="terms"><h1>2.&#160; </h1>
2018
2018
  </div>
2019
2019
  <div id="widgets">
2020
2020
  <h1>3.&#160; Widgets</h1>
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.24
4
+ version: 1.0.25
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-04-17 00:00:00.000000000 Z
11
+ date: 2020-05-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciimath