table_analysis 0.2.6 → 0.2.7

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: 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