html2doc 0.8.14 → 0.9.0

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: c9f44fdf3b27550ae4e9216dd7c6a4a0a6a0949b522357c6165fcb31518d15d4
4
- data.tar.gz: b011cfdd0c80b0de7e1154a122c92bada686604fa73a656c3bdcd0e354979e8a
3
+ metadata.gz: 736a1b4a315563665d82191a2a21a63f1db634b9e847a145607cd8f0aa93d794
4
+ data.tar.gz: 317869cf8d2ae0a7c4d7fee710bc29a472f2c09027d4845b3a1f70c2bee42df4
5
5
  SHA512:
6
- metadata.gz: ac386659167fac76db54541b9e32b82bdd210ea60e2ecd3a035becf7b5a8b57d5ef25a4d314071af921ce8d1416e19c549625ff2d33dc7681f6e5806df4c00c3
7
- data.tar.gz: 8d67c6e825681cf249f5b43f7a0641d27b8ec433e3deb058207931568b0aeb565ae446e1fc36523b2c325d80967e7b2dfec5406b18ba2d6f5ceeeab37f9071fa
6
+ metadata.gz: e299333ccf126d00439413fd2e9fc45dc87eeb5756798ace28ec863b3463052dfcade119a3730140067cd48f6e37d468934d80f8432d882a974753e900adec2f
7
+ data.tar.gz: 9a2337da976ae160b46284bc47f6f5131451bafff06cb1cc65d1cc9732d5e9122964b765bfabb25014c3179427f3170ba5f981b93f73d4ca4b50449b0e335383
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.add_dependency "nokogiri", ">= 1.10.4"
32
32
  spec.add_dependency "thread_safe"
33
33
  spec.add_dependency "uuidtools"
34
- spec.add_dependency "asciimath", "~> 1.0.7"
34
+ spec.add_dependency "asciimath", "~> 1.0.9"
35
35
 
36
36
  spec.add_development_dependency "bundler", "~> 2.0.1"
37
37
  spec.add_development_dependency "byebug", "~> 9.1"
@@ -99,6 +99,10 @@ module Html2Doc
99
99
  r.gsub!(%r{></v:imagedata>}, "/>")
100
100
  r.gsub!(%r{></w:wrap>}, "/>")
101
101
  r.gsub!(%r{&tab;|&amp;tab;}, '<span style="mso-tab-count:1">&#xA0; </span>')
102
+ r = r.split(%r{(<m:oMath>|</m:oMath>)}).each_slice(4).map do |a|
103
+ a.size > 2 and a[2] = a[2].gsub(/>\s+</, "><")
104
+ a
105
+ end.join
102
106
  r
103
107
  end
104
108
 
@@ -46,11 +46,20 @@ module Html2Doc
46
46
  gsub(/<\?[^>]+>\s*/, "").
47
47
  gsub(/ xmlns(:[^=]+)?="[^"]+"/, "").
48
48
  gsub(%r{<(/)?([a-z])}, "<\\1m:\\2")
49
- ooxml = uncenter(x, ooxml)
49
+ ooxml = uncenter(esc_space(x), ooxml)
50
50
  x.swap(ooxml)
51
51
  end
52
52
  end
53
53
 
54
+ # escape space as &#x32;; we are removing any spaces generated by XML indentation
55
+ def self.esc_space(xml)
56
+ xml.traverse do |n|
57
+ next unless n.text?
58
+ n = n.text.gsub(/ /, "&#x32;")
59
+ end
60
+ xml
61
+ end
62
+
54
63
  # if oomml has no siblings, by default it is centered; override this with
55
64
  # left/right if parent is so tagged
56
65
  def self.uncenter(m, ooxml)
@@ -1,3 +1,3 @@
1
1
  module Html2Doc
2
- VERSION = "0.8.14".freeze
2
+ VERSION = "0.9.0".freeze
3
3
  end
@@ -248,77 +248,7 @@ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span>
248
248
  </html>
249
249
  FTR
250
250
 
251
- ASCII_MATH=<<~FTR
252
- <m:nary>
253
- <m:naryPr>
254
- <m:chr m:val="&#x2211;"></m:chr>
255
- <m:limLoc m:val="undOvr"></m:limLoc>
256
- <m:grow m:val="on"></m:grow>
257
- <m:subHide m:val="off"></m:subHide>
258
- <m:supHide m:val="off"></m:supHide>
259
- </m:naryPr>
260
- <m:sub>
261
- <m:r>
262
- <m:t>i=1</m:t>
263
- </m:r>
264
- </m:sub>
265
- <m:sup>
266
- <m:r>
267
- <m:t>n</m:t>
268
- </m:r>
269
- </m:sup>
270
- <m:e>
271
- <m:sSup>
272
- <m:e>
273
- <m:r>
274
- <m:t>i</m:t>
275
- </m:r>
276
- </m:e>
277
- <m:sup>
278
- <m:r>
279
- <m:t>3</m:t>
280
- </m:r>
281
- </m:sup>
282
- </m:sSup>
283
- </m:e>
284
- </m:nary>
285
- <m:r>
286
- <m:t>=</m:t>
287
- </m:r>
288
- <m:sSup>
289
- <m:e>
290
- <m:r>
291
- <m:t>(</m:t>
292
- </m:r>
293
- <m:f>
294
- <m:fPr>
295
- <m:type m:val="bar"></m:type>
296
- </m:fPr>
297
- <m:num>
298
- <m:r>
299
- <m:t>n</m:t>
300
- </m:r>
301
- <m:r>
302
- <m:t>(n+1)</m:t>
303
- </m:r>
304
- </m:num>
305
- <m:den>
306
- <m:r>
307
- <m:t>2</m:t>
308
- </m:r>
309
- </m:den>
310
- </m:f>
311
- <m:r>
312
- <m:t>)</m:t>
313
- </m:r>
314
- </m:e>
315
- <m:sup>
316
- <m:r>
317
- <m:t>2</m:t>
318
- </m:r>
319
- </m:sup>
320
- </m:sSup>
321
- FTR
251
+ ASCII_MATH='<m:nary><m:naryPr><m:chr m:val="&#x2211;"></m:chr><m:limLoc m:val="undOvr"></m:limLoc><m:grow m:val="on"></m:grow><m:subHide m:val="off"></m:subHide><m:supHide m:val="off"></m:supHide></m:naryPr><m:sub><m:r><m:t>i=1</m:t></m:r></m:sub><m:sup><m:r><m:t>n</m:t></m:r></m:sup><m:e><m:sSup><m:e><m:r><m:t>i</m:t></m:r></m:e><m:sup><m:r><m:t>3</m:t></m:r></m:sup></m:sSup></m:e></m:nary><m:r><m:t>=</m:t></m:r><m:sSup><m:e><m:d><m:dPr><m:sepChr m:val=","></m:sepChr></m:dPr><m:e><m:f><m:fPr><m:type m:val="bar"></m:type></m:fPr><m:num><m:r><m:t>n</m:t></m:r><m:d><m:dPr><m:sepChr m:val=","></m:sepChr></m:dPr><m:e><m:r><m:t>n+1</m:t></m:r></m:e></m:d></m:num><m:den><m:r><m:t>2</m:t></m:r></m:den></m:f></m:e></m:d></m:e><m:sup><m:r><m:t>2</m:t></m:r></m:sup></m:sSup>'
322
252
 
323
253
  DEFAULT_STYLESHEET = File.read("lib/html2doc/wordstyle.css", encoding: "utf-8").freeze
324
254
 
@@ -431,13 +361,21 @@ RSpec.describe Html2Doc do
431
361
  #{WORD_HDR} #{DEFAULT_STYLESHEET} #{WORD_HDR_END}
432
362
  #{word_body("
433
363
  <div><m:oMath>
434
- #{ASCII_MATH}
435
- <m:r>
436
- <m:rPr>
437
- <m:nor></m:nor>
438
- </m:rPr>
439
- <m:t>\"integer\"</m:t>
440
- </m:r>
364
+ #{ASCII_MATH}<m:r><m:rPr><m:nor></m:nor></m:rPr><m:t>\"integer\"</m:t></m:r>
365
+ </m:oMath>
366
+ </div>", '<div style="mso-element:footnote-list"/>')}
367
+ #{WORD_FTR1}
368
+ OUTPUT
369
+ end
370
+
371
+ it "processes spaces in AsciiMath" do
372
+ Html2Doc.process(html_input(%[<div>{{text " integer ")}}</div>]), filename: "test", asciimathdelims: ["{{", "}}"])
373
+ expect(guid_clean(File.read("test.doc", encoding: "utf-8"))).
374
+ to match_fuzzy(<<~OUTPUT)
375
+ #{WORD_HDR} #{DEFAULT_STYLESHEET} #{WORD_HDR_END}
376
+ #{word_body("
377
+ <div><m:oMath>
378
+ <m:r><m:rPr><m:nor></m:nor></m:rPr><m:t>integer</m:t></m:r>
441
379
  </m:oMath>
442
380
  </div>", '<div style="mso-element:footnote-list"/>')}
443
381
  #{WORD_FTR1}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html2doc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.14
4
+ version: 0.9.0
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-10-20 00:00:00.000000000 Z
11
+ date: 2019-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: htmlentities
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 1.0.7
103
+ version: 1.0.9
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 1.0.7
110
+ version: 1.0.9
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: bundler
113
113
  requirement: !ruby/object:Gem::Requirement