isodoc 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5dfad47b4bae84826332835e54c1010c3ffb1baad8c847db087255ba8a84099d
4
- data.tar.gz: 7eda7444d72c11ef8993306d04fc400a4721174d6d379d12b87a2ba18bc710e6
3
+ metadata.gz: 52d07c6881a991def663f5734c7db5def02b9c0d850571f34200ea9df32868ca
4
+ data.tar.gz: 5c0f1b18f7cdca0d7673613540d62b92c4a6a426916f3199ebc9dbca75a4144e
5
5
  SHA512:
6
- metadata.gz: 0d739c93248a158a13a553fbc2056883a873508caf32b26fbb61857ec899415f7bc4a06f732bed6885db34c926c79e6bb76199663ec444e6010eebae1239834f
7
- data.tar.gz: 85b469117c9c27b0cda0de0979657bb4008bae9a225af388c6e9fc07c0813d56a07fd4812cced716864091406ebd04a41dec4ec7e2ebc7ce5f19e3728b59ca49
6
+ metadata.gz: 7282cbd6ea762709618aa7c690eaa52e88235f5acf208ccd11cbb2495456d706aec612c00b2b0989e5f4f10b0e8bea0eef5e2aa8ad70f325449d673b584c9f64
7
+ data.tar.gz: 9e7ee5294eb3c0214e2b73709ce1dbbf3fafc2cb6d4fcb4cbc518cdb56bb999d58011dfe5357fe3ff45a39eb846905edf4f3b26cd99b74102f8bff285f166632
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- isodoc (1.0.2)
4
+ isodoc (1.0.3)
5
5
  asciimath
6
6
  html2doc (~> 0.8.11)
7
7
  htmlentities (~> 4.3.4)
@@ -42,12 +42,12 @@ GEM
42
42
  guard (~> 2.1)
43
43
  guard-compat (~> 1.1)
44
44
  rspec (>= 2.99.0, < 4.0)
45
- html2doc (0.8.12)
45
+ html2doc (0.8.13)
46
46
  asciimath (~> 1.0.7)
47
47
  htmlentities (~> 4.3.4)
48
48
  image_size
49
49
  mime-types
50
- nokogiri
50
+ nokogiri (>= 1.10.4)
51
51
  thread_safe
52
52
  uuidtools
53
53
  htmlentities (4.3.4)
@@ -108,10 +108,10 @@ GEM
108
108
  unicode-display_width (~> 1.0, >= 1.0.1)
109
109
  ruby-progressbar (1.10.1)
110
110
  ruby_dep (1.5.0)
111
- sassc (2.2.0)
111
+ sassc (2.2.1)
112
112
  ffi (~> 1.9)
113
113
  shellany (0.0.1)
114
- simplecov (0.17.0)
114
+ simplecov (0.17.1)
115
115
  docile (~> 1.1)
116
116
  json (>= 1.8, < 3)
117
117
  simplecov-html (~> 0.10.0)
@@ -37,6 +37,7 @@ termnote: Note % to entry
37
37
  list: List
38
38
  figure: Figure
39
39
  formula: Formula
40
+ inequality: Formula
40
41
  table: Table
41
42
  requirement: Requirement
42
43
  recommendation: Recommendation
@@ -29,6 +29,7 @@ note_xref: Note
29
29
  termnote: Note % à l'article
30
30
  figure: Figure
31
31
  formula: Formule
32
+ inequality: Formule
32
33
  list: Liste
33
34
  table: Tableau
34
35
  requirement: Exigence
@@ -31,6 +31,7 @@ note_xref: 注
31
31
  termnote: 注%
32
32
  figure: 图
33
33
  formula: 公式
34
+ inequality: 公式
34
35
  list: 列项
35
36
  table: 表
36
37
  requirement: 要求
@@ -51,6 +51,7 @@ module IsoDoc::Function
51
51
  @figure_lbl = y["figure"]
52
52
  @list_lbl = y["list"]
53
53
  @formula_lbl = y["formula"]
54
+ @inequality_lbl = y["inequality"]
54
55
  @table_lbl = y["table"]
55
56
  @key_lbl = y["key"]
56
57
  @example_lbl = y["example"]
@@ -51,10 +51,20 @@ module IsoDoc::Function
51
51
  )
52
52
  end
53
53
 
54
+ def tcaption(node, t)
55
+ return unless node["summary"]
56
+ t.caption do |c|
57
+ c.span **{ style: "display:none" } do |s|
58
+ s << node["summary"]
59
+ end
60
+ end
61
+ end
62
+
54
63
  def table_parse(node, out)
55
64
  @in_table = true
56
65
  table_title_parse(node, out)
57
66
  out.table **make_table_attr(node) do |t|
67
+ tcaption(node, t)
58
68
  thead_parse(node, t)
59
69
  tbody_parse(node, t)
60
70
  tfoot_parse(node, t)
@@ -0,0 +1,42 @@
1
+ require "roman-numerals"
2
+
3
+ module IsoDoc::Function
4
+ module XrefGen
5
+ class Counter
6
+ def initialize
7
+ @num = 0
8
+ @letter = ""
9
+ @subseq = ""
10
+ end
11
+
12
+ def increment(node)
13
+ return self if node["unnumbered"]
14
+ if node["subsequence"] != @subseq
15
+ @subseq = node["subsequence"]
16
+ @num += 1
17
+ @letter = node["subsequence"] ? "a" : ""
18
+ else
19
+ if @letter.empty?
20
+ @num += 1
21
+ else
22
+ @letter = (@letter.ord + 1).chr.to_s
23
+ end
24
+ end
25
+ self
26
+ end
27
+
28
+ def print
29
+ "#{@num}#{@letter}"
30
+ end
31
+
32
+ def listlabel(depth)
33
+ return @num.to_s if [2, 7].include? depth
34
+ return (96 + @num).chr.to_s if [1, 6].include? depth
35
+ return (64 + @num).chr.to_s if [4, 9].include? depth
36
+ return RomanNumerals.to_roman(@num).downcase if [3, 8].include? depth
37
+ return RomanNumerals.to_roman(@num).upcase if [5, 10].include? depth
38
+ return @num.to_s
39
+ end
40
+ end
41
+ end
42
+ end
@@ -1,4 +1,5 @@
1
1
  require "roman-numerals"
2
+ require_relative "xref_counter"
2
3
 
3
4
  module IsoDoc::Function
4
5
  module XrefGen
@@ -12,7 +13,7 @@ module IsoDoc::Function
12
13
  def anchor(id, lbl, warning = true)
13
14
  unless @anchors[id]
14
15
  warning and warn "No label has been processed for ID #{id}"
15
- return nil
16
+ return "[#{id}]"
16
17
  end
17
18
  @anchors.dig(id, lbl)
18
19
  end
@@ -23,13 +24,15 @@ module IsoDoc::Function
23
24
 
24
25
  def termnote_anchor_names(docxml)
25
26
  docxml.xpath(ns("//term[descendant::termnote]")).each do |t|
26
- t.xpath(ns(".//termnote")).each_with_index do |n, i|
27
+ c = Counter.new
28
+ t.xpath(ns(".//termnote")).each do |n|
27
29
  return if n["id"].nil? || n["id"].empty?
30
+ c.increment(n)
28
31
  @anchors[n["id"]] =
29
- { label: termnote_label(i + 1),
32
+ { label: termnote_label(c.print),
30
33
  type: "termnote",
31
34
  xref: l10n("#{anchor(t['id'], :xref)}, "\
32
- "#{@note_xref_lbl} #{i + 1}") }
35
+ "#{@note_xref_lbl} #{c.print}") }
33
36
  end
34
37
  end
35
38
  end
@@ -37,13 +40,15 @@ module IsoDoc::Function
37
40
  def termexample_anchor_names(docxml)
38
41
  docxml.xpath(ns("//term[descendant::termexample]")).each do |t|
39
42
  examples = t.xpath(ns(".//termexample"))
40
- examples.each_with_index do |n, i|
43
+ c = Counter.new
44
+ examples.each do |n|
41
45
  return if n["id"].nil? || n["id"].empty?
42
- idx = examples.size == 1 ? "" : (i + 1).to_s
46
+ c.increment(n)
47
+ idx = examples.size == 1 ? "" : c.print
43
48
  @anchors[n["id"]] = {
44
49
  type: "termexample",
45
50
  label: idx, xref: l10n("#{anchor(t['id'], :xref)}, "\
46
- "#{@note_xref_lbl} #{i + 1}") }
51
+ "#{@example_xref_lbl} #{c.print}") }
47
52
  end
48
53
  end
49
54
  end
@@ -61,11 +66,12 @@ module IsoDoc::Function
61
66
  def note_anchor_names(sections)
62
67
  sections.each do |s|
63
68
  notes = s.xpath(CHILD_NOTES_XPATH)
64
- notes.each_with_index do |n, i|
65
- next if @anchors[n["id"]]
66
- next if n["id"].nil? || n["id"].empty?
67
- idx = notes.size == 1 ? "" : " #{i + 1}"
68
- @anchors[n["id"]] = anchor_struct(idx, n, @note_xref_lbl, "note", false)
69
+ c = Counter.new
70
+ notes.each do |n|
71
+ next if @anchors[n["id"]] || n["id"].nil? || n["id"].empty?
72
+ idx = notes.size == 1 ? "" : " #{c.increment(n).print}"
73
+ @anchors[n["id"]] = anchor_struct(idx, n, @note_xref_lbl,
74
+ "note", false)
69
75
  end
70
76
  note_anchor_names(s.xpath(ns(CHILD_SECTIONS)))
71
77
  end
@@ -81,14 +87,13 @@ module IsoDoc::Function
81
87
  def example_anchor_names(sections)
82
88
  sections.each do |s|
83
89
  notes = s.xpath(CHILD_EXAMPLES_XPATH)
84
- i = 0
90
+ c = Counter.new
85
91
  notes.each do |n|
86
92
  next if @anchors[n["id"]]
87
93
  next if n["id"].nil? || n["id"].empty?
88
- idx = notes.size == 1 ? "" : " #{i + 1}"
94
+ idx = notes.size == 1 ? "" : " #{c.increment(n).print}"
89
95
  @anchors[n["id"]] = anchor_struct(idx, n, @example_xref_lbl,
90
96
  "example", n["unnumbered"])
91
- i += 1 unless n["unnumbered"]
92
97
  end
93
98
  example_anchor_names(s.xpath(ns(CHILD_SECTIONS)))
94
99
  end
@@ -98,9 +103,10 @@ module IsoDoc::Function
98
103
  sections.each do |s|
99
104
  notes = s.xpath(ns(".//ol")) - s.xpath(ns(".//clause//ol")) -
100
105
  s.xpath(ns(".//appendix//ol")) - s.xpath(ns(".//ol//ol"))
101
- notes.each_with_index do |n, i|
106
+ c = Counter.new
107
+ notes.each do |n|
102
108
  next if n["id"].nil? || n["id"].empty?
103
- idx = notes.size == 1 ? "" : " #{i + 1}"
109
+ idx = notes.size == 1 ? "" : " #{c.increment(n).print}"
104
110
  @anchors[n["id"]] = anchor_struct(idx, n, @list_lbl, "list", false)
105
111
  list_item_anchor_names(n, @anchors[n["id"]], 1, "", notes.size != 1)
106
112
  end
@@ -108,21 +114,13 @@ module IsoDoc::Function
108
114
  end
109
115
  end
110
116
 
111
- def listlabel(depth, i)
112
- return i.to_s if [2, 7].include? depth
113
- return (96 + i).chr.to_s if [1, 6].include? depth
114
- return (64 + i).chr.to_s if [4, 9].include? depth
115
- return RomanNumerals.to_roman(i).downcase if [3, 8].include? depth
116
- return RomanNumerals.to_roman(i).upcase if [5, 10].include? depth
117
- return i.to_s
118
- end
119
-
120
117
  def list_item_anchor_names(list, list_anchor, depth, prev_label, refer_list)
121
- list.xpath(ns("./li")).each_with_index do |li, i|
122
- label = listlabel(depth, i + 1)
118
+ c = Counter.new
119
+ list.xpath(ns("./li")).each do |li|
120
+ label = c.increment(li).listlabel(depth)
123
121
  label = "#{prev_label}.#{label}" unless prev_label.empty?
124
122
  label = "#{list_anchor[:xref]} #{label}" if refer_list
125
- li["id"] && @anchors[li["id"]] = { xref: "#{label})",
123
+ li["id"] and @anchors[li["id"]] = { xref: "#{label})",
126
124
  type: "listitem",
127
125
  container: list_anchor[:container] }
128
126
  li.xpath(ns("./ol")).each do |ol|
@@ -144,16 +142,18 @@ module IsoDoc::Function
144
142
  end
145
143
 
146
144
  def sequential_figure_names(clause)
147
- i = j = 0
145
+ c = Counter.new
146
+ j = 0
148
147
  clause.xpath(ns(".//figure")).each do |t|
149
148
  if t.parent.name == "figure" then j += 1
150
149
  else
151
150
  j = 0
152
- i += 1 unless t["unnumbered"]
151
+ c.increment(t)
153
152
  end
154
- label = i.to_s + (j.zero? ? "" : "-#{j}")
153
+ label = c.print + (j.zero? ? "" : "-#{j}")
155
154
  next if t["id"].nil? || t["id"].empty?
156
- @anchors[t["id"]] = anchor_struct(label, nil, @figure_lbl, "figure", t["unnumbered"])
155
+ @anchors[t["id"]] =
156
+ anchor_struct(label, nil, @figure_lbl, "figure", t["unnumbered"])
157
157
  end
158
158
  end
159
159
 
@@ -168,6 +168,7 @@ module IsoDoc::Function
168
168
  def anchor_struct_xref(lbl, elem)
169
169
  case elem
170
170
  when @formula_lbl then l10n("#{elem} (#{lbl})")
171
+ when @inequality_lbl then l10n("#{elem} (#{lbl})")
171
172
  else
172
173
  l10n("#{elem} #{lbl}")
173
174
  end
@@ -184,97 +185,48 @@ module IsoDoc::Function
184
185
  end
185
186
 
186
187
  def sequential_table_names(clause)
187
- i = 0
188
+ c = Counter.new
188
189
  clause.xpath(ns(".//table")).each do |t|
189
190
  next if t["id"].nil? || t["id"].empty?
190
- @anchors[t["id"]] = anchor_struct(i + 1, nil, @table_lbl, "table", t["unnumbered"])
191
- i += 1 unless t["unnumbered"]
191
+ @anchors[t["id"]] = anchor_struct(c.increment(t).print, nil,
192
+ @table_lbl, "table", t["unnumbered"])
192
193
  end
193
194
  end
194
195
 
195
196
  def sequential_formula_names(clause)
196
- i = 0
197
+ c = Counter.new
197
198
  clause.xpath(ns(".//formula")).each do |t|
198
199
  next if t["id"].nil? || t["id"].empty?
199
- @anchors[t["id"]] = anchor_struct(i + 1, t, @formula_lbl, "formula", t["unnumbered"])
200
- i += 1 unless t["unnumbered"]
200
+ @anchors[t["id"]] =
201
+ anchor_struct(c.increment(t).print, t,
202
+ t["inequality"] ? @inequality_lbl : @formula_lbl,
203
+ "formula", t["unnumbered"])
201
204
  end
202
205
  end
203
206
 
204
207
  FIRST_LVL_REQ = "[not(ancestor::permission or ancestor::requirement or ancestor::recommendation)]".freeze
205
208
 
206
- def sequential_permission_names(clause)
207
- i = 0
208
- clause.xpath(ns(".//permission#{FIRST_LVL_REQ}")).each do |t|
209
- next if t["id"].nil? || t["id"].empty?
210
- @anchors[t["id"]] = anchor_struct(i + 1, t, @permission_lbl, "permission", t["unnumbered"])
211
- sequential_permission_names1(t, i + 1)
212
- sequential_requirement_names1(t, i + 1)
213
- sequential_recommendation_names1(t, i + 1)
214
- i += 1 unless t["unnumbered"]
215
- end
216
- end
217
-
218
- def sequential_permission_names1(block, lbl)
219
- i = 0
220
- block.xpath(ns("./permission")).each do |t|
221
- next if t["id"].nil? || t["id"].empty?
222
- newlbl = "#{lbl}#{hierfigsep}#{i + 1}"
223
- @anchors[t["id"]] = anchor_struct(newlbl, t, @permission_lbl, "permission", t["unnumbered"])
224
- sequential_permission_names1(t, newlbl)
225
- sequential_requirement_names1(t, newlbl)
226
- sequential_recommendation_names1(t, newlbl)
227
- i += 1 unless t["unnumbered"]
228
- end
229
- end
230
-
231
- def sequential_requirement_names(clause)
232
- i = 0
233
- clause.xpath(ns(".//requirement#{FIRST_LVL_REQ}")).each do |t|
234
- next if t["id"].nil? || t["id"].empty?
235
- @anchors[t["id"]] = anchor_struct(i + 1, t, @requirement_lbl, "requirement", t["unnumbered"])
236
- sequential_permission_names1(t, i + 1)
237
- sequential_requirement_names1(t, i + 1)
238
- sequential_recommendation_names1(t, i + 1)
239
- i += 1 unless t["unnumbered"]
240
- end
241
- end
242
-
243
- def sequential_requirement_names1(block, lbl)
244
- i = 0
245
- block.xpath(ns("./requirement")).each do |t|
246
- next if t["id"].nil? || t["id"].empty?
247
- newlbl = "#{lbl}#{hierfigsep}#{i + 1}"
248
- @anchors[t["id"]] = anchor_struct(newlbl, t, @requirement_lbl, "requirement", t["unnumbered"])
249
- sequential_permission_names1(t, newlbl)
250
- sequential_requirement_names1(t, newlbl)
251
- sequential_recommendation_names1(t, newlbl)
252
- i += 1 unless t["unnumbered"]
253
- end
254
- end
255
-
256
- def sequential_recommendation_names(clause)
257
- i = 0
258
- clause.xpath(ns(".//recommendation#{FIRST_LVL_REQ}")).each do |t|
209
+ def sequential_permission_names(clause, klass, label)
210
+ c = Counter.new
211
+ clause.xpath(ns(".//#{klass}#{FIRST_LVL_REQ}")).each do |t|
259
212
  next if t["id"].nil? || t["id"].empty?
260
- @anchors[t["id"]] = anchor_struct(i + 1, t, @recommendation_lbl, "recommendation", t["unnumbered"])
261
- sequential_permission_names1(t, i + 1)
262
- sequential_requirement_names1(t, i + 1)
263
- sequential_recommendation_names1(t, i + 1)
264
- i += 1 unless t["unnumbered"]
213
+ id = c.increment(t).print
214
+ @anchors[t["id"]] = anchor_struct(id, t, label, klass, t["unnumbered"])
215
+ sequential_permission_names1(t, id, "permission", @permission_lbl)
216
+ sequential_permission_names1(t, id, "requirement", @requirement_lbl)
217
+ sequential_permission_names1(t, id, "recommendation", @recommendation_lbl)
265
218
  end
266
219
  end
267
220
 
268
- def sequential_recommendation_names1(block, lbl)
269
- i = 0
270
- block.xpath(ns("./recommendation")).each do |t|
221
+ def sequential_permission_names1(block, lbl, klass, label)
222
+ c = Counter.new
223
+ block.xpath(ns("./#{klass}")).each do |t|
271
224
  next if t["id"].nil? || t["id"].empty?
272
- newlbl = "#{lbl}#{hierfigsep}#{i + 1}"
273
- @anchors[t["id"]] = anchor_struct(newlbl, t, @recommendation_lbl, "recommendation", t["unnumbered"])
274
- sequential_permission_names1(t, newlbl)
275
- sequential_requirement_names1(t, newlbl)
276
- sequential_recommendation_names1(t, newlbl)
277
- i += 1 unless t["unnumbered"]
225
+ id = "#{lbl}#{hierfigsep}#{c.increment(t).print}"
226
+ @anchors[t["id"]] = anchor_struct(id, t, label, klass, t["unnumbered"])
227
+ sequential_permission_names1(t, id, "permission", @permission_lbl)
228
+ sequential_permission_names1(t, id, "requirement", @requirement_lbl)
229
+ sequential_permission_names1(t, id, "recommendation", @recommendation_lbl)
278
230
  end
279
231
  end
280
232
 
@@ -282,9 +234,9 @@ module IsoDoc::Function
282
234
  sequential_table_names(clause)
283
235
  sequential_figure_names(clause)
284
236
  sequential_formula_names(clause)
285
- sequential_permission_names(clause)
286
- sequential_requirement_names(clause)
287
- sequential_recommendation_names(clause)
237
+ sequential_permission_names(clause, "permission", @permission_lbl)
238
+ sequential_permission_names(clause, "requirement", @requirement_lbl)
239
+ sequential_permission_names(clause, "recommendation", @recommendation_lbl)
288
240
  end
289
241
 
290
242
  def hiersep
@@ -296,26 +248,29 @@ module IsoDoc::Function
296
248
  end
297
249
 
298
250
  def hierarchical_figure_names(clause, num)
299
- i = j = 0
251
+ c = Counter.new
252
+ j = 0
300
253
  clause.xpath(ns(".//figure")).each do |t|
301
254
  if t.parent.name == "figure" then j += 1
302
255
  else
303
256
  j = 0
304
- i += 1 unless t["unnumbered"]
257
+ c.increment(t)
305
258
  end
306
- label = "#{num}#{hiersep}#{i}" + (j.zero? ? "" : "#{hierfigsep}#{j}")
259
+ label = "#{num}#{hiersep}#{c.print}" +
260
+ (j.zero? ? "" : "#{hierfigsep}#{j}")
307
261
  next if t["id"].nil? || t["id"].empty?
308
- @anchors[t["id"]] = anchor_struct(label, nil, @figure_lbl, "figure", t["unnumbered"])
262
+ @anchors[t["id"]] = anchor_struct(label, nil, @figure_lbl, "figure",
263
+ t["unnumbered"])
309
264
  end
310
265
  end
311
266
 
312
267
  def hierarchical_table_names(clause, num)
313
- i = 0
268
+ c = Counter.new
314
269
  clause.xpath(ns(".//table")).each do |t|
315
270
  next if t["id"].nil? || t["id"].empty?
316
- @anchors[t["id"]] = anchor_struct("#{num}#{hiersep}#{i + 1}",
317
- nil, @table_lbl, "table", t["unnumbered"])
318
- i += 1 unless t["unnumbered"]
271
+ @anchors[t["id"]] =
272
+ anchor_struct("#{num}#{hiersep}#{c.increment(t).print}",
273
+ nil, @table_lbl, "table", t["unnumbered"])
319
274
  end
320
275
  end
321
276
 
@@ -323,57 +278,31 @@ module IsoDoc::Function
323
278
  hierarchical_table_names(clause, num)
324
279
  hierarchical_figure_names(clause, num)
325
280
  hierarchical_formula_names(clause, num)
326
- hierarchical_permission_names(clause, num)
327
- hierarchical_requirement_names(clause, num)
328
- hierarchical_recommendation_names(clause, num)
281
+ hierarchical_permission_names(clause, num, "permission", @permission_lbl)
282
+ hierarchical_permission_names(clause, num, "requirement", @requirement_lbl)
283
+ hierarchical_permission_names(clause, num, "recommendation", @recommendation_lbl)
329
284
  end
330
285
 
331
286
  def hierarchical_formula_names(clause, num)
332
- i = 0
287
+ c = Counter.new
333
288
  clause.xpath(ns(".//formula")).each do |t|
334
289
  next if t["id"].nil? || t["id"].empty?
335
- @anchors[t["id"]] = anchor_struct("#{num}#{hiersep}#{i + 1}",
336
- t, @formula_lbl, "formula", t["unnumbered"])
337
- i += 1 unless t["unnumbered"]
338
- end
339
- end
340
-
341
- def hierarchical_permission_names(clause, num)
342
- i = 0
343
- clause.xpath(ns(".//permission#{FIRST_LVL_REQ}")).each do |t|
344
- next if t["id"].nil? || t["id"].empty?
345
- lbl = "#{num}#{hiersep}#{i + 1}"
346
- @anchors[t["id"]] = anchor_struct(lbl, t, @permission_lbl, "permission", t["unnumbered"])
347
- sequential_permission_names1(t, lbl)
348
- sequential_requirement_names1(t, lbl)
349
- sequential_recommendation_names1(t, lbl)
350
- i += 1 unless t["unnumbered"]
351
- end
352
- end
353
-
354
- def hierarchical_requirement_names(clause, num)
355
- i = 0
356
- clause.xpath(ns(".//requirement#{FIRST_LVL_REQ}")).each do |t|
357
- next if t["id"].nil? || t["id"].empty?
358
- lbl = "#{num}#{hiersep}#{i + 1}"
359
- @anchors[t["id"]] = anchor_struct(lbl, t, @requirement_lbl, "requirement", t["unnumbered"])
360
- sequential_permission_names1(t, lbl)
361
- sequential_requirement_names1(t, lbl)
362
- sequential_recommendation_names1(t, lbl)
363
- i += 1 unless t["unnumbered"]
290
+ @anchors[t["id"]] =
291
+ anchor_struct("#{num}#{hiersep}#{c.increment(t).print}", t,
292
+ t["inequality"] ? @inequality_lbl : @formula_lbl,
293
+ "formula", t["unnumbered"])
364
294
  end
365
295
  end
366
296
 
367
- def hierarchical_recommendation_names(clause, num)
368
- i = 0
369
- clause.xpath(ns(".//recommendation#{FIRST_LVL_REQ}")).each do |t|
297
+ def hierarchical_permission_names(clause, num, klass, label)
298
+ c = Counter.new
299
+ clause.xpath(ns(".//#{klass}#{FIRST_LVL_REQ}")).each do |t|
370
300
  next if t["id"].nil? || t["id"].empty?
371
- lbl = "#{num}#{hiersep}#{i + 1}"
372
- @anchors[t["id"]] = anchor_struct(lbl, t, @recommendation_lbl, "recommendation", t["unnumbered"])
373
- sequential_permission_names1(t, lbl)
374
- sequential_requirement_names1(t, lbl)
375
- sequential_recommendation_names1(t, lbl)
376
- i += 1 unless t["unnumbered"]
301
+ lbl = "#{num}#{hiersep}#{c.increment(t).print}"
302
+ @anchors[t["id"]] = anchor_struct(lbl, t, label, klass, t["unnumbered"])
303
+ sequential_permission_names1(t, lbl, "permission", @permission_lbl)
304
+ sequential_permission_names1(t, lbl, "requirement", @requirement_lbl)
305
+ sequential_permission_names1(t, lbl, "recommendation", @recommendation_lbl)
377
306
  end
378
307
  end
379
308
  end
@@ -1,3 +1,3 @@
1
1
  module IsoDoc
2
- VERSION = "1.0.2".freeze
2
+ VERSION = "1.0.3".freeze
3
3
  end
@@ -237,9 +237,9 @@ module IsoDoc::WordFunction
237
237
  })
238
238
  end
239
239
 
240
-
241
240
  def make_table_attr(node)
242
241
  super.merge({
242
+ summary: node["summary"],
243
243
  style: "mso-table-lspace:15.0cm;margin-left:423.0pt;"\
244
244
  "mso-table-rspace:15.0cm;margin-right:423.0pt;mso-table-bspace:14.2pt;"\
245
245
  "mso-table-anchor-vertical:paragraph;mso-table-anchor-horizontal:column;"\
@@ -6,7 +6,7 @@ RSpec.describe IsoDoc do
6
6
  <iso-standard xmlns="http://riboseinc.com/isoxml">
7
7
  <preface>
8
8
  <foreword>
9
- <table id="tableD-1" alt="tool tip">
9
+ <table id="tableD-1" alt="tool tip" summary="long desc">
10
10
  <name>Repeatability and reproducibility of <em>husked</em> rice yield</name>
11
11
  <thead>
12
12
  <tr>
@@ -69,6 +69,9 @@ RSpec.describe IsoDoc do
69
69
  <h1 class="ForewordTitle">Foreword</h1>
70
70
  <p class="TableTitle" style="text-align:center;">Table 1&#160;&#8212; Repeatability and reproducibility of <i>husked</i> rice yield</p>
71
71
  <table id="tableD-1" class="MsoISOTable" style="border-width:1px;border-spacing:0;" title="tool tip">
72
+ <caption>
73
+ <span style="display:none">long desc</span>
74
+ </caption>
72
75
  <thead>
73
76
  <tr>
74
77
  <td rowspan="2" style="text-align:left;border-top:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;padding:0;" scope="col">Description</td>
@@ -139,7 +142,7 @@ RSpec.describe IsoDoc do
139
142
  <iso-standard xmlns="http://riboseinc.com/isoxml">
140
143
  <preface>
141
144
  <foreword>
142
- <table id="tableD-1" alt="tool tip">
145
+ <table id="tableD-1" alt="tool tip" summary="long desc">
143
146
  <name>Repeatability and reproducibility of husked rice yield</name>
144
147
  <thead>
145
148
  <tr>
@@ -205,7 +208,7 @@ RSpec.describe IsoDoc do
205
208
  <h1 class="ForewordTitle">Foreword</h1>
206
209
  <p class="TableTitle" style="text-align:center;">Table 1&#160;&#8212; Repeatability and reproducibility of husked rice yield</p>
207
210
  <div align="center">
208
- <table id="tableD-1" class="MsoISOTable" style="mso-table-lspace:15.0cm;margin-left:423.0pt;mso-table-rspace:15.0cm;margin-right:423.0pt;mso-table-bspace:14.2pt;mso-table-anchor-vertical:paragraph;mso-table-anchor-horizontal:column;mso-table-overlap:never;border-spacing:0;border-width:1px;" title="tool tip">
211
+ <table id="tableD-1" class="MsoISOTable" style="mso-table-lspace:15.0cm;margin-left:423.0pt;mso-table-rspace:15.0cm;margin-right:423.0pt;mso-table-bspace:14.2pt;mso-table-anchor-vertical:paragraph;mso-table-anchor-horizontal:column;mso-table-overlap:never;border-spacing:0;border-width:1px;" title="tool tip" summary="long desc">
209
212
  <thead>
210
213
  <tr>
211
214
  <td rowspan="2" align="left" style="border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;">Description</td>
@@ -1988,4 +1988,98 @@ OUTPUT
1988
1988
  OUTPUT
1989
1989
  end
1990
1990
 
1991
+ it "realises subsequences" do
1992
+ expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
1993
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
1994
+ <preface>
1995
+ <foreword id="fwd">
1996
+ <p>
1997
+ <xref target="N1"/>
1998
+ <xref target="N2"/>
1999
+ <xref target="N3"/>
2000
+ <xref target="N4"/>
2001
+ <xref target="N5"/>
2002
+ <xref target="N6"/>
2003
+ <xref target="N7"/>
2004
+ <xref target="N8"/>
2005
+ </p>
2006
+ </foreword>
2007
+ <introduction id="intro">
2008
+ <figure id="N1"> <name>Split-it-right sample divider</name>
2009
+ <image src="rice_images/rice_image1.png" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" mimetype="image/png"/>
2010
+ </figure>
2011
+ <figure id="N2" subsequence="A"> <name>Split-it-right sample divider</name>
2012
+ <image src="rice_images/rice_image1.png" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" mimetype="image/png"/>
2013
+ </figure>
2014
+ <figure id="N3" subsequence="A"> <name>Split-it-right sample divider</name>
2015
+ <image src="rice_images/rice_image1.png" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" mimetype="image/png"/>
2016
+ </figure>
2017
+ <figure id="N4" subsequence="B"> <name>Split-it-right sample divider</name>
2018
+ <image src="rice_images/rice_image1.png" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" mimetype="image/png"/>
2019
+ </figure>
2020
+ <figure id="N5" subsequence="B"> <name>Split-it-right sample divider</name>
2021
+ <image src="rice_images/rice_image1.png" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" mimetype="image/png"/>
2022
+ </figure>
2023
+ <figure id="N6" subsequence="B"> <name>Split-it-right sample divider</name>
2024
+ <image src="rice_images/rice_image1.png" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" mimetype="image/png"/>
2025
+ </figure>
2026
+ <figure id="N7"> <name>Split-it-right sample divider</name>
2027
+ <image src="rice_images/rice_image1.png" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" mimetype="image/png"/>
2028
+ </figure>
2029
+ <figure id="N8"> <name>Split-it-right sample divider</name>
2030
+ <image src="rice_images/rice_image1.png" id="_8357ede4-6d44-4672-bac4-9a85e82ab7f0" mimetype="image/png"/>
2031
+ </figure>
2032
+ </introduction>
2033
+ </iso-standard>
2034
+ INPUT
2035
+ #{HTML_HDR}
2036
+ <br/>
2037
+ <div id="fwd">
2038
+ <h1 class="ForewordTitle">Foreword</h1>
2039
+ <p>
2040
+ <a href="#N1">Figure 1</a>
2041
+ <a href="#N2">Figure 2a</a>
2042
+ <a href="#N3">Figure 2b</a>
2043
+ <a href="#N4">Figure 3a</a>
2044
+ <a href="#N5">Figure 3b</a>
2045
+ <a href="#N6">Figure 3c</a>
2046
+ <a href="#N7">Figure 4</a>
2047
+ <a href="#N8">Figure 5</a>
2048
+ </p>
2049
+ </div>
2050
+ <br/>
2051
+ <div class="Section3" id="intro">
2052
+ <h1 class="IntroTitle">Introduction</h1>
2053
+ <div id="N1" class="figure">
2054
+ <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
2055
+ <p class="FigureTitle" style="text-align:center;">Figure 1&#160;&#8212; Split-it-right sample divider</p></div>
2056
+ <div id="N2" class="figure">
2057
+ <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
2058
+ <p class="FigureTitle" style="text-align:center;">Figure 2a&#160;&#8212; Split-it-right sample divider</p></div>
2059
+ <div id="N3" class="figure">
2060
+ <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
2061
+ <p class="FigureTitle" style="text-align:center;">Figure 2b&#160;&#8212; Split-it-right sample divider</p></div>
2062
+ <div id="N4" class="figure">
2063
+ <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
2064
+ <p class="FigureTitle" style="text-align:center;">Figure 3a&#160;&#8212; Split-it-right sample divider</p></div>
2065
+ <div id="N5" class="figure">
2066
+ <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
2067
+ <p class="FigureTitle" style="text-align:center;">Figure 3b&#160;&#8212; Split-it-right sample divider</p></div>
2068
+ <div id="N6" class="figure">
2069
+ <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
2070
+ <p class="FigureTitle" style="text-align:center;">Figure 3c&#160;&#8212; Split-it-right sample divider</p></div>
2071
+ <div id="N7" class="figure">
2072
+ <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
2073
+ <p class="FigureTitle" style="text-align:center;">Figure 4&#160;&#8212; Split-it-right sample divider</p></div>
2074
+ <div id="N8" class="figure">
2075
+ <img src="rice_images/rice_image1.png" height="auto" width="auto"/>
2076
+ <p class="FigureTitle" style="text-align:center;">Figure 5&#160;&#8212; Split-it-right sample divider</p></div>
2077
+ </div>
2078
+ <p class="zzSTDTitle1"/>
2079
+ </div>
2080
+ </body>
2081
+ </html>
2082
+ OUTPUT
2083
+ end
2084
+
1991
2085
  end
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.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-12 00:00:00.000000000 Z
11
+ date: 2019-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciimath
@@ -336,6 +336,7 @@ files:
336
336
  - lib/isodoc/function/terms.rb
337
337
  - lib/isodoc/function/to_word_html.rb
338
338
  - lib/isodoc/function/utils.rb
339
+ - lib/isodoc/function/xref_counter.rb
339
340
  - lib/isodoc/function/xref_gen.rb
340
341
  - lib/isodoc/function/xref_sect_gen.rb
341
342
  - lib/isodoc/headlesshtml_convert.rb