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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3eeea77d3b560b2170dbe1b5071e1fe65cd38b0800c1cdb3f93a4bfd1cb4e037
4
- data.tar.gz: c850b02b89a5113a2708dc08239b475baa508dcc930f1594bf3ed77f872f3121
3
+ metadata.gz: b14f6c834be975dcf1bbb0bbbed1fa58cfe69058ed81009d32a15aae2751dcef
4
+ data.tar.gz: 5243f9f5dd7c07546d8ced85203051572fcfc65d7cce955e0aef5f52ccbb12d0
5
5
  SHA512:
6
- metadata.gz: a190c45173df298b8faa64a071b46c4ee950abab1ab9b58a31aa80f65b7ffceb8e3cf82dbd50e3d1545bd80de472babd6e7f11013ca7c08c33727d152693f0a2
7
- data.tar.gz: cd75043e2a4e8f28fe1f96e3e83bf1f4a9c9cb962549d55f56459a55a26dbc99ec6c6253d419d6234605bc4b3488ca5c8177a449ff3db1138164310a6c524d93
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
@@ -2,4 +2,4 @@ require './lib/table_analysis.rb'
2
2
 
3
3
  doc = File.read('file/demo1.html')
4
4
 
5
- p TableAnalysis::Main.generator(doc, 1, 1)
5
+ p TableAnalysis::Main.generator(doc, 2, 1)
@@ -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 == header_start_row.to_i - 1
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
- table = TableAnalysis::Table.config(body_tr_size, header)
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
- content_maps = TableAnalysis::Core.new(header, table, body_tds).entrance
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 = header_maps + content_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
@@ -1,3 +1,3 @@
1
1
  module TableAnalysis
2
- VERSION = '0.2.6'.freeze
2
+ VERSION = '0.2.7'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: table_analysis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - mico_xiaozhen@sina.com