qnd_html2page 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/qnd_html2page.rb +29 -9
- metadata +1 -1
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51029b1be2ac9cb9e95d6567f99dc1c6fdda70c3a8d5904372f0ee07dcd2d78f
|
4
|
+
data.tar.gz: d9ff95df9754003699ce0a0bea93ebf308c7ff808bd5a8a6e450f016aba45c70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5496cc9c5f98b5d4dd0a68686983a42cac7f97c451b56acca42520dfc77aa0a5e5721851a9d4d0c970ad6c078f7e714ab14fa91f7e414e74dfb518bac8e6b559
|
7
|
+
data.tar.gz: 8330416d589c832e06df5147eb648617c92cd75809905803a10fffa5da1b4aca5ae81372c7c1cd7dae21d5b3d0bbd0a02f35312dbf1d6e614f2cf0051d09fec9
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/qnd_html2page.rb
CHANGED
@@ -39,9 +39,16 @@ class QndHtml2Page
|
|
39
39
|
|
40
40
|
private
|
41
41
|
|
42
|
-
def scan(
|
43
|
-
|
44
|
-
|
42
|
+
def scan(obj)
|
43
|
+
|
44
|
+
raw_html = obj.is_a?(Rexle) ? obj.xml : obj
|
45
|
+
|
46
|
+
# <br/> acts as a hard page break
|
47
|
+
html = raw_html.gsub(/<br\s*\/>/) do |x|
|
48
|
+
'<span class="qndhtml2pg">pagebreak' + x.object_id.to_s + '</span>'
|
49
|
+
end
|
50
|
+
|
51
|
+
# add the span tag after almost every element in the body
|
45
52
|
|
46
53
|
doc = Rexle.new(html)
|
47
54
|
body = doc.root.element('body')
|
@@ -68,11 +75,16 @@ class QndHtml2Page
|
|
68
75
|
|
69
76
|
browser = Ferrum::Browser.new
|
70
77
|
browser.goto('file://' + tmpfile.path + '.html')
|
71
|
-
span_list = browser.xpath('//span')
|
72
|
-
|
78
|
+
span_list = browser.xpath('//span[@class="qndhtml2pg"]')
|
79
|
+
|
80
|
+
maxheight = span_list.last.find_position.last
|
73
81
|
|
82
|
+
a = span_list.map do |x|
|
83
|
+
ypos = x.text[/^pagebreak/] ? maxheight : x.find_position.last
|
84
|
+
[x.text, ypos]
|
85
|
+
end
|
74
86
|
|
75
|
-
heights = ((
|
87
|
+
heights = ((maxheight) / @height).round.to_i.times\
|
76
88
|
.inject([@height]) {|r, x| r << (r.last + @height) }
|
77
89
|
|
78
90
|
puts ('heights: ' + heights.inspect).debug if @debug
|
@@ -84,7 +96,12 @@ class QndHtml2Page
|
|
84
96
|
puts ('x: ' + x.inspect).debug if @debug
|
85
97
|
puts ('height: ' + height.inspect).debug if @debug
|
86
98
|
|
87
|
-
|
99
|
+
if x.first[/^pagebreak/] then
|
100
|
+
r << [x]
|
101
|
+
else
|
102
|
+
x.last < height ? (r.last << x) : (height = heights.shift; r << [x])
|
103
|
+
end
|
104
|
+
|
88
105
|
r
|
89
106
|
|
90
107
|
end
|
@@ -106,9 +123,12 @@ class QndHtml2Page
|
|
106
123
|
pages = elements.slice_at(*stops).map do |e_list|
|
107
124
|
|
108
125
|
div = Rexle::Element.new 'div'
|
109
|
-
e_list.reject!
|
110
|
-
|
126
|
+
e_list.reject! do |e|
|
127
|
+
r = e.name == 'span' and e.attributes[:class] == 'qndhtml2pg'
|
128
|
+
r
|
129
|
+
end
|
111
130
|
next if e_list.empty?
|
131
|
+
|
112
132
|
e_list.each {|e| div.add e}
|
113
133
|
|
114
134
|
div
|
metadata
CHANGED
metadata.gz.sig
CHANGED
Binary file
|