isodoc 0.9.0 → 0.9.1

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: 9a6782d0471fb7cd450a7dce15e825e76a86e4f3c8854ddc69faaa648f65974c
4
- data.tar.gz: 8062dc310b20e6c1d13a41ac100489dff153be0152a543c20b1aa043093aa72c
3
+ metadata.gz: 14a2b122e4618bfd1d6ef74231405ad9b28d18bb7a8b812df2381c65f3443ca9
4
+ data.tar.gz: 47ee8c2b1bc90444256371e188ffec407ca79facafe199684ac8693c1254dd80
5
5
  SHA512:
6
- metadata.gz: fc34ddc8a06fd1632889c00b4a60641c33f983a5b6c3ac6c18c290992d7a8dee91d3074044513ce3608146488a710fa1a0099a09b2103bcc63355c7e570572be
7
- data.tar.gz: f9977b4049756a609cc048e022aa138731182beb53a36be53dfb8a46b7285a48c836fa280782ea95f10d06196c05e6bf5a99a5b02dee0c50b6b190e4f2f74f83
6
+ metadata.gz: a6d74be6c585040de05deb7aeb5d92ec39651dc5a77f4f210479b77ef9cbb6fb82013ac87dfa77863853132b4026c3946039e79e51aad691243ca8fbfa86c5cf
7
+ data.tar.gz: '010093e4801400b6308c204cdd9745944def9a405b98934f57f16529e0cd1272cdcaf03ef85befe4acb91392d694161af5a38ea35d67dffeeda2ccede0ea1298'
@@ -22,16 +22,19 @@ module IsoDoc::Function
22
22
  out << " &lt;#{node.text}&gt;"
23
23
  end
24
24
 
25
+ def prefix_container(container, linkend, _target)
26
+ l10n(get_anchors[container][:xref] + ", " + linkend)
27
+ end
28
+
25
29
  def anchor_linkend(node, linkend)
26
30
  if node["citeas"].nil? && node["bibitemid"] &&
27
31
  get_anchors.has_key?(node["bibitemid"])
28
- #return get_anchors[node["bibitemid"]][:xref]
29
32
  return get_anchors.dig(node["bibitemid"] ,:xref)
30
33
  elsif node["target"] && get_anchors.has_key?(node["target"])
31
34
  linkend = get_anchors[node["target"]][:xref]
32
35
  container = get_anchors[node["target"]][:container]
33
36
  (container && get_note_container_id(node) != container) &&
34
- linkend = l10n(get_anchors[container][:xref] + ", " + linkend)
37
+ linkend = prefix_container(container, linkend, node["target"])
35
38
  end
36
39
  linkend
37
40
  end
@@ -76,10 +79,10 @@ module IsoDoc::Function
76
79
 
77
80
  def stem_parse(node, out)
78
81
  ooml = if node["type"] == "AsciiMath"
79
- "#{@openmathdelim}#{node.text}#{@closemathdelim}"
82
+ "#{@openmathdelim}#{HTMLEntities.new.encode(node.text)}#{@closemathdelim}"
80
83
  elsif node["type"] == "MathML" then node.first_element_child.to_s
81
84
  else
82
- node.text
85
+ HTMLEntities.new.encode(node.text)
83
86
  end
84
87
  out.span **{ class: "stem" } do |span|
85
88
  span.parent.add_child ooml
@@ -20,9 +20,15 @@ module IsoDoc::Function
20
20
  Dir.mkdir(dir) unless File.exists?(dir)
21
21
  system "rm -r #{dir}/*"
22
22
  end
23
+ @filename = filename
23
24
  [filename, dir]
24
25
  end
25
26
 
27
+ def tmpimagedir
28
+ @filename + @tmpimagedir
29
+ end
30
+
31
+
26
32
  # isodoc.css overrides any CSS injected by Html2Doc, which
27
33
  # is inserted before this CSS.
28
34
  def define_head(html, filename, _dir)
@@ -19,7 +19,7 @@ module IsoDoc::Function
19
19
  return if n["id"].nil? || n["id"].empty?
20
20
  @anchors[n["id"]] =
21
21
  { label: termnote_label(i + 1),
22
- #xref: l10n("#{@anchors[t['id']][:xref]}, "\
22
+ type: "termnote",
23
23
  xref: l10n("#{@anchors.dig(t['id'], :xref)}, "\
24
24
  "#{@note_xref_lbl} #{i + 1}") }
25
25
  end
@@ -33,7 +33,7 @@ module IsoDoc::Function
33
33
  return if n["id"].nil? || n["id"].empty?
34
34
  idx = examples.size == 1 ? "" : (i + 1).to_s
35
35
  @anchors[n["id"]] = {
36
- #label: idx, xref: l10n("#{@anchors[t['id']][:xref]}, "\
36
+ type: "termexample",
37
37
  label: idx, xref: l10n("#{@anchors.dig(t['id'], :xref)}, "\
38
38
  "#{@note_xref_lbl} #{i + 1}") }
39
39
  end
@@ -56,7 +56,7 @@ module IsoDoc::Function
56
56
  next if @anchors[n["id"]]
57
57
  next if n["id"].nil? || n["id"].empty?
58
58
  idx = notes.size == 1 ? "" : " #{i + 1}"
59
- @anchors[n["id"]] = anchor_struct(idx, n, @note_xref_lbl)
59
+ @anchors[n["id"]] = anchor_struct(idx, n, @note_xref_lbl, "note")
60
60
  end
61
61
  note_anchor_names(s.xpath(ns("./clause | ./appendix")))
62
62
  end
@@ -73,7 +73,7 @@ module IsoDoc::Function
73
73
  next if @anchors[n["id"]]
74
74
  next if n["id"].nil? || n["id"].empty?
75
75
  idx = notes.size == 1 ? "" : " #{i + 1}"
76
- @anchors[n["id"]] = anchor_struct(idx, n, @example_xref_lbl)
76
+ @anchors[n["id"]] = anchor_struct(idx, n, @example_xref_lbl, "example")
77
77
  end
78
78
  example_anchor_names(s.xpath(ns("./clause | ./appendix")))
79
79
  end
@@ -86,7 +86,7 @@ module IsoDoc::Function
86
86
  notes.each_with_index do |n, i|
87
87
  next if n["id"].nil? || n["id"].empty?
88
88
  idx = notes.size == 1 ? "" : " #{i + 1}"
89
- @anchors[n["id"]] = anchor_struct(idx, n, @list_lbl)
89
+ @anchors[n["id"]] = anchor_struct(idx, n, @list_lbl, "list")
90
90
  list_item_anchor_names(n, @anchors[n["id"]], 1, "", notes.size != 1)
91
91
  end
92
92
  list_anchor_names(s.xpath(ns("./clause | ./appendix")))
@@ -108,6 +108,7 @@ module IsoDoc::Function
108
108
  label = "#{prev_label}.#{label}" unless prev_label.empty?
109
109
  label = "#{list_anchor[:xref]} #{label}" if refer_list
110
110
  li["id"] && @anchors[li["id"]] = { xref: "#{label})",
111
+ type: "listitem",
111
112
  container: list_anchor[:container] }
112
113
  li.xpath(ns("./ol")).each do |ol|
113
114
  list_item_anchor_names(ol, list_anchor, depth + 1, label, false)
@@ -137,7 +138,7 @@ module IsoDoc::Function
137
138
  end
138
139
  label = i.to_s + (j.zero? ? "" : "-#{j}")
139
140
  next if t["id"].nil? || t["id"].empty?
140
- @anchors[t["id"]] = anchor_struct(label, nil, @figure_lbl)
141
+ @anchors[t["id"]] = anchor_struct(label, nil, @figure_lbl, "figure")
141
142
  end
142
143
  end
143
144
 
@@ -157,24 +158,25 @@ module IsoDoc::Function
157
158
  end
158
159
  end
159
160
 
160
- def anchor_struct(lbl, container, elem)
161
+ def anchor_struct(lbl, container, elem, type)
161
162
  ret = {}
162
163
  ret[:label] = anchor_struct_label(lbl, elem)
163
164
  ret[:xref] = anchor_struct_xref(lbl, elem)
164
165
  ret[:xref].gsub!(/ $/, "")
165
166
  ret[:container] = get_clause_id(container) unless container.nil?
167
+ ret[:type] = type
166
168
  ret
167
169
  end
168
170
 
169
171
  def sequential_asset_names(clause)
170
172
  clause.xpath(ns(".//table")).each_with_index do |t, i|
171
173
  next if t["id"].nil? || t["id"].empty?
172
- @anchors[t["id"]] = anchor_struct(i + 1, nil, @table_lbl)
174
+ @anchors[t["id"]] = anchor_struct(i + 1, nil, @table_lbl, "table")
173
175
  end
174
176
  sequential_figure_names(clause)
175
177
  clause.xpath(ns(".//formula")).each_with_index do |t, i|
176
178
  next if t["id"].nil? || t["id"].empty?
177
- @anchors[t["id"]] = anchor_struct(i + 1, t, @formula_lbl)
179
+ @anchors[t["id"]] = anchor_struct(i + 1, t, @formula_lbl, "formula")
178
180
  end
179
181
  end
180
182
 
@@ -188,19 +190,19 @@ module IsoDoc::Function
188
190
  end
189
191
  label = "#{num}.#{i}" + (j.zero? ? "" : "-#{j}")
190
192
  next if t["id"].nil? || t["id"].empty?
191
- @anchors[t["id"]] = anchor_struct(label, nil, @figure_lbl)
193
+ @anchors[t["id"]] = anchor_struct(label, nil, @figure_lbl, "figure")
192
194
  end
193
195
  end
194
196
 
195
197
  def hierarchical_asset_names(clause, num)
196
198
  clause.xpath(ns(".//table")).each_with_index do |t, i|
197
199
  next if t["id"].nil? || t["id"].empty?
198
- @anchors[t["id"]] = anchor_struct("#{num}.#{i + 1}", nil, @table_lbl)
200
+ @anchors[t["id"]] = anchor_struct("#{num}.#{i + 1}", nil, @table_lbl, "table")
199
201
  end
200
202
  hierarchical_figure_names(clause, num)
201
203
  clause.xpath(ns(".//formula")).each_with_index do |t, i|
202
204
  next if t["id"].nil? || t["id"].empty?
203
- @anchors[t["id"]] = anchor_struct("#{num}.#{i + 1}", t, @formula_lbl)
205
+ @anchors[t["id"]] = anchor_struct("#{num}.#{i + 1}", t, @formula_lbl, "formula")
204
206
  end
205
207
  end
206
208
  end
@@ -34,7 +34,7 @@ module IsoDoc::Function
34
34
  def preface_names(clause)
35
35
  return if clause.nil?
36
36
  @anchors[clause["id"]] =
37
- { label: nil, level: 1, xref: preface_clause_name(clause) }
37
+ { label: nil, level: 1, xref: preface_clause_name(clause), type: "clause" }
38
38
  clause.xpath(ns("./clause")).each_with_index do |c, i|
39
39
  preface_names1(c, c.at(ns("./title"))&.text, "#{preface_clause_name(clause)}, #{i+1}", 2)
40
40
  end
@@ -43,7 +43,7 @@ module IsoDoc::Function
43
43
  def preface_names1(clause, title, parent_title, level)
44
44
  label = title || parent_title
45
45
  @anchors[clause["id"]] =
46
- { label: nil, level: level, xref: label }
46
+ { label: nil, level: level, xref: label, type: "clause" }
47
47
  clause.xpath(ns("./clause | ./terms | ./term | ./definitions")).
48
48
  each_with_index do |c, i|
49
49
  preface_names1(c, c.at(ns("./title"))&.text, "#{label} #{i+1}", level + 1)
@@ -71,7 +71,7 @@ module IsoDoc::Function
71
71
  return num if clause.nil?
72
72
  num = num + 1
73
73
  @anchors[clause["id"]] =
74
- { label: num.to_s, xref: l10n("#{@clause_lbl} #{num}"), level: lvl }
74
+ { label: num.to_s, xref: l10n("#{@clause_lbl} #{num}"), level: lvl, type: "clause" }
75
75
  clause.xpath(ns("./clause | ./term | ./terms | ./definitions")).
76
76
  each_with_index do |c, i|
77
77
  section_names1(c, "#{num}.#{i + 1}", lvl + 1)
@@ -81,7 +81,7 @@ module IsoDoc::Function
81
81
 
82
82
  def section_names1(clause, num, level)
83
83
  @anchors[clause["id"]] =
84
- { label: num, level: level, xref: l10n("#{@clause_lbl} #{num}") }
84
+ { label: num, level: level, xref: l10n("#{@clause_lbl} #{num}"), type: "clause" }
85
85
  clause.xpath(ns("./clause | ./terms | ./term | ./definitions")).
86
86
  each_with_index do |c, i|
87
87
  section_names1(c, "#{num}.#{i + 1}", level + 1)
@@ -95,7 +95,7 @@ module IsoDoc::Function
95
95
  end
96
96
 
97
97
  def annex_names(clause, num)
98
- @anchors[clause["id"]] = { label: annex_name_lbl(clause, num),
98
+ @anchors[clause["id"]] = { label: annex_name_lbl(clause, num), type: "clause",
99
99
  xref: "#{@annex_lbl} #{num}", level: 1 }
100
100
  clause.xpath(ns("./clause")).each_with_index do |c, i|
101
101
  annex_names1(c, "#{num}.#{i + 1}", 2)
@@ -106,7 +106,7 @@ module IsoDoc::Function
106
106
 
107
107
  def annex_names1(clause, num, level)
108
108
  @anchors[clause["id"]] = { label: num, xref: "#{@annex_lbl} #{num}",
109
- level: level }
109
+ level: level, type: "clause" }
110
110
  clause.xpath(ns("./clause")).each_with_index do |c, i|
111
111
  annex_names1(c, "#{num}.#{i + 1}", level + 1)
112
112
  end
@@ -23,7 +23,7 @@ module IsoDoc
23
23
  postprocess(result, filename + ".tmp", dir)
24
24
  system "rm -fr #{dir}"
25
25
  strip_head(filename + ".tmp.html", outname_html + ".headless.html")
26
- system "rm -r #{filename + '.tmp.html'} #{@tmpimagedir}"
26
+ system "rm -r #{filename + '.tmp.html'} #{tmpimagedir}"
27
27
  end
28
28
 
29
29
  def strip_head(input, output)
@@ -192,12 +192,12 @@ module IsoDoc::HtmlFunction
192
192
 
193
193
  # presupposes that the image source is local
194
194
  def move_images(docxml)
195
- system "rm -r #{@tmpimagedir}; mkdir #{@tmpimagedir}"
195
+ system "rm -r #{tmpimagedir}; mkdir #{tmpimagedir}"
196
196
  docxml.xpath("//*[local-name() = 'img']").each do |i|
197
197
  next if /^data:image/.match i["src"]
198
198
  matched = /\.(?<suffix>\S+)$/.match i["src"]
199
199
  uuid = UUIDTools::UUID.random_create.to_s
200
- new_full_filename = File.join(@tmpimagedir, "#{uuid}.#{matched[:suffix]}")
200
+ new_full_filename = File.join(tmpimagedir, "#{uuid}.#{matched[:suffix]}")
201
201
  move_image1(i, new_full_filename)
202
202
  end
203
203
  docxml
@@ -28,7 +28,7 @@ module IsoDoc
28
28
  postprocess(result, filename, dir)
29
29
  system "rm -fr #{dir}"
30
30
  ::Metanorma::Output::Pdf.new.convert(filename + ".html", outname_html + ".pdf")
31
- system "rm -r #{filename + '.html'} #{@tmpimagedir}"
31
+ system "rm -r #{filename + '.html'} #{tmpimagedir}"
32
32
  end
33
33
  end
34
34
  end
@@ -1,3 +1,3 @@
1
1
  module IsoDoc
2
- VERSION = "0.9.0".freeze
2
+ VERSION = "0.9.1".freeze
3
3
  end
@@ -94,7 +94,7 @@ RSpec.describe IsoDoc do
94
94
  <iso-standard xmlns="http://riboseinc.com/isoxml">
95
95
  <preface><foreword>
96
96
  <p>
97
- <stem type="AsciiMath">A</stem>
97
+ <stem type="AsciiMath">&lt;A&gt;</stem>
98
98
  <stem type="MathML"><m:math><m:row>X</m:row></m:math></stem>
99
99
  <stem type="None">Latex?</stem>
100
100
  </p>
@@ -107,7 +107,7 @@ RSpec.describe IsoDoc do
107
107
  <div>
108
108
  <h1 class="ForewordTitle">Foreword</h1>
109
109
  <p>
110
- <span class="stem">(#(A)#)</span>
110
+ <span class="stem">(#(&lt;A&gt;)#)</span>
111
111
  <span class="stem"><m:math>
112
112
  <m:row>X</m:row>
113
113
  </m:math></span>
@@ -468,7 +468,7 @@ CkZJTEVOQU1FOiB0ZXN0Cgo=
468
468
 
469
469
  it "moves images in HTML" do
470
470
  system "rm -f test.html"
471
- system "rm -rf _images"
471
+ system "rm -rf test_images"
472
472
  IsoDoc::HtmlConvert.new({wordstylesheet: "spec/assets/word.css", htmlstylesheet: "spec/assets/html.css"}).convert("test", <<~"INPUT", false)
473
473
  <iso-standard xmlns="http://riboseinc.com/isoxml">
474
474
  <preface><foreword>
@@ -483,16 +483,16 @@ CkZJTEVOQU1FOiB0ZXN0Cgo=
483
483
  INPUT
484
484
  html = File.read("test.html").sub(/^.*<main class="main-section">/m, '<main class="main-section">').
485
485
  sub(%r{</main>.*$}m, "</main>")
486
- expect(`ls _images`).to match(/\.png$/)
486
+ expect(`ls test_images`).to match(/\.png$/)
487
487
  expect(html.gsub(/\/[0-9a-f-]+\.png/, "/_.png")).to be_equivalent_to <<~"OUTPUT"
488
488
  <main class="main-section"><button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>
489
489
  <br />
490
490
  <div>
491
491
  <h1 class="ForewordTitle">Foreword</h1>
492
492
  <div id="_" class="figure">
493
- <img src="_images/_.png" height="776" width="922" />
494
- <img src="_images/_.png" height="800" width="53" />
495
- <img src="_images/_.png" height="83" width="99" />
493
+ <img src="test_images/_.png" height="776" width="922" />
494
+ <img src="test_images/_.png" height="800" width="53" />
495
+ <img src="test_images/_.png" height="83" width="99" />
496
496
  <p class="FigureTitle" align="center">Figure 1&#xA0;&#x2014; Split-it-right sample divider</p></div>
497
497
  </div>
498
498
  <p class="zzSTDTitle1"></p>
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: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-04 00:00:00.000000000 Z
11
+ date: 2018-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciimath