table_analysis 0.2.6 → 0.2.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/demo.rb +1 -1
- data/lib/table_analysis.rb +28 -7
- data/lib/table_analysis/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b14f6c834be975dcf1bbb0bbbed1fa58cfe69058ed81009d32a15aae2751dcef
|
4
|
+
data.tar.gz: 5243f9f5dd7c07546d8ced85203051572fcfc65d7cce955e0aef5f52ccbb12d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f289c168f8b12005528a97f17daf49034c0b19d8608aa33513302abb0121a48052c50202cbf8441d7905a39ec9ad1dd523fc5f1345d0ebc77c5d42614087367d
|
7
|
+
data.tar.gz: ae6008f2890ff3466f3f97aaecd5891cafa7989361365e8d401cf957253234c115cd6778f96926651c0ff1dbb5f4602aa699768cb51213e7ef85408ac1ba6745
|
data/README.md
CHANGED
@@ -25,7 +25,7 @@ Or install it yourself as:
|
|
25
25
|
doc_table_html = File.read('file/demo1.html')
|
26
26
|
|
27
27
|
TableAnalysis::Main.generator(doc_table_html, header_start_row, selected_rows)
|
28
|
-
|
28
|
+
header_start_row, selected_rows 都是从1开始
|
29
29
|
## Development
|
30
30
|
|
31
31
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/demo.rb
CHANGED
data/lib/table_analysis.rb
CHANGED
@@ -10,18 +10,30 @@ module TableAnalysis
|
|
10
10
|
table = doc.xpath('//table')[0]
|
11
11
|
return false if table.nil?
|
12
12
|
header_content_tds = []
|
13
|
+
|
13
14
|
body_content_tds = []
|
14
|
-
header_body_content_tds = []
|
15
15
|
body_tr_size = 0
|
16
|
+
|
17
|
+
header_body_content_tds = []
|
16
18
|
tr_rows = 1
|
17
19
|
|
20
|
+
upheader_content_tds = []
|
21
|
+
upheader_tr_size = 0
|
22
|
+
|
18
23
|
select_table_tr = table.xpath('./thead/tr|./tbody/tr')
|
19
24
|
if select_table_tr.empty?
|
20
25
|
select_table_tr = table.xpath('./tr')
|
21
26
|
end
|
22
27
|
|
23
28
|
select_table_tr.each_with_index do |tr, tr_index|
|
24
|
-
if tr_index
|
29
|
+
if tr_index < header_start_row.to_i - 1
|
30
|
+
upheader_tr_size += 1
|
31
|
+
tr.xpath('./td').each_with_index do |td, td_index|
|
32
|
+
rowspan = td.attribute('rowspan')&.value
|
33
|
+
colspan = td.attribute('colspan')&.value
|
34
|
+
upheader_content_tds << [rowspan, colspan]
|
35
|
+
end
|
36
|
+
elsif tr_index == header_start_row.to_i - 1
|
25
37
|
tr.xpath('./td').each do |td|
|
26
38
|
colspan = td.attribute('colspan')&.value
|
27
39
|
rowspan = td.attribute('rowspan')&.value
|
@@ -48,24 +60,33 @@ module TableAnalysis
|
|
48
60
|
header_tds = header_content_tds.map do |header_content_td|
|
49
61
|
TableAnalysis::HeaderTd.config(header_content_td[0], header_content_td[1])
|
50
62
|
end
|
51
|
-
|
52
63
|
header = TableAnalysis::Header.config(selected_cols, header_tds)
|
53
64
|
|
54
|
-
|
65
|
+
body_tr_table = TableAnalysis::Table.config(body_tr_size, header)
|
55
66
|
body_tds = body_content_tds.map do |body_td|
|
56
67
|
TableAnalysis::BodyTd.config(body_td[0], body_td[1])
|
57
68
|
end
|
69
|
+
content_maps = TableAnalysis::Core.new(header, body_tr_table, body_tds).entrance
|
58
70
|
|
59
|
-
|
71
|
+
upheader_table = TableAnalysis::Table.config(upheader_tr_size, header)
|
72
|
+
upheader_tds = upheader_content_tds.map do |body_td|
|
73
|
+
TableAnalysis::BodyTd.config(body_td[0], body_td[1])
|
74
|
+
end
|
75
|
+
upheader_maps = nil
|
76
|
+
upheader_maps = TableAnalysis::Core.new(header, upheader_table, upheader_tds).entrance unless upheader_table.empty?
|
60
77
|
|
61
78
|
header_table = TableAnalysis::Table.config(tr_rows, header)
|
62
79
|
header_body_tds = header_body_content_tds.map do |body_td|
|
63
80
|
TableAnalysis::BodyTd.config(body_td[0], body_td[1])
|
64
81
|
end
|
65
|
-
|
66
82
|
header_maps = TableAnalysis::Core.new(header, header_table, header_body_tds).entrance
|
67
83
|
|
68
|
-
table_maps =
|
84
|
+
table_maps =
|
85
|
+
if upheader_maps.nil?
|
86
|
+
header_maps + content_maps
|
87
|
+
else
|
88
|
+
upheader_maps + header_maps + content_maps
|
89
|
+
end
|
69
90
|
|
70
91
|
table_maps
|
71
92
|
end
|