excelxml 0.1.1 → 0.1.2
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 +4 -4
- data/lib/excelxml/version.rb +1 -1
- data/lib/excelxml/workbook.rb +2 -2
- data/lib/excelxml/worksheet.rb +22 -13
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c4eb7cecd2cb4b642faebecc545b14760e9c274
|
4
|
+
data.tar.gz: fc9215986ce901f91f3ea256f6d837fd694773f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8db3fd70f0be9fdf230f8d4b5b46c687d73d28a98dca2add94aba0fedb138c6cabc81092ae8c1127693838db5e4c55f49ecc975b9d490de6a95de8238fd8981b
|
7
|
+
data.tar.gz: ba7a943235fba4b9c526983c083515fc61350d358ae403f3b2383e1ba5f4cacc02fa0b0b5947fd6eb76e1c62e15ebc27a506431dd87b56fc1fcd7916f58691f0
|
data/lib/excelxml/version.rb
CHANGED
data/lib/excelxml/workbook.rb
CHANGED
@@ -12,13 +12,13 @@ module ExcelXml
|
|
12
12
|
class Parser
|
13
13
|
attr_reader :unidentified_worksheets
|
14
14
|
def initialize workbook_xml, opts={}
|
15
|
-
only_these_worksheets = [opts.delete(:only_these_worksheets)].flatten.compact
|
15
|
+
only_these_worksheets = [opts.delete(:only_these_worksheets)].flatten.compact
|
16
16
|
@worksheet_parser_classes = [opts.delete(:worksheet_parsers)].flatten.compact
|
17
17
|
@worksheet_parser_hash = @worksheet_parser_classes.each_with_object({}) {|wspc, hsh| hsh[wspc] = [] }
|
18
18
|
raise ArgumentError, "unknown options #{opts.keys.inspect}" unless opts.empty?
|
19
19
|
@unidentified_worksheets = []
|
20
20
|
ExcelXml::Workbook.parse(workbook_xml, single: true).worksheets.each do |worksheet|
|
21
|
-
next if only_these_worksheets and !only_these_worksheets.include?(worksheet.name)
|
21
|
+
next if !only_these_worksheets.empty? and !only_these_worksheets.include?(worksheet.name)
|
22
22
|
worksheet_identified = false
|
23
23
|
worksheet.rows.each_with_index do |row, row_idx|
|
24
24
|
worksheet_identifiers.each do |wsp|
|
data/lib/excelxml/worksheet.rb
CHANGED
@@ -21,7 +21,7 @@ module ExcelXml
|
|
21
21
|
grid_col_idx = cell.index ? cell.index - 1 : grid_col_idx + 1
|
22
22
|
(0..cell.merge_down).each do |down|
|
23
23
|
(0..cell.merge_across).each do |across|
|
24
|
-
grid[grid_row_idx+down][grid_col_idx+across] = cell.data
|
24
|
+
grid[grid_row_idx+down][grid_col_idx+across] = Field.new(cell.data || "")
|
25
25
|
end
|
26
26
|
end
|
27
27
|
grid_col_idx += cell.merge_across
|
@@ -43,11 +43,15 @@ module ExcelXml
|
|
43
43
|
def rows
|
44
44
|
@rows ||= begin
|
45
45
|
@worksheet.rows[(header_row_index+1)..-1].collect do |fields|
|
46
|
-
Fields.new(
|
46
|
+
Fields.new(self, fields)
|
47
47
|
end
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
+
def has_header? header
|
52
|
+
index_to_header_map.find {|e| e.match header }
|
53
|
+
end
|
54
|
+
|
51
55
|
def index_to_header_map
|
52
56
|
@index_to_header_map ||= @worksheet.rows[header_row_index].collect {|h| h ? h.strip : nil }
|
53
57
|
end
|
@@ -61,7 +65,7 @@ module ExcelXml
|
|
61
65
|
end
|
62
66
|
|
63
67
|
def is_header? row_number, fields
|
64
|
-
return true if mandatory_columns.all? {|mc| fields.any? {|f|
|
68
|
+
return true if mandatory_columns.all? {|mc| fields.compact.any? {|f| f.match mc } }
|
65
69
|
return false
|
66
70
|
end
|
67
71
|
|
@@ -69,30 +73,35 @@ module ExcelXml
|
|
69
73
|
end
|
70
74
|
|
71
75
|
class Fields < Array
|
72
|
-
def initialize
|
73
|
-
super(
|
74
|
-
@
|
76
|
+
def initialize parser, raw_fields
|
77
|
+
super(raw_fields)
|
78
|
+
@parser = parser
|
75
79
|
end
|
76
|
-
def
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
80
|
+
def has_header? header
|
81
|
+
@parser.has_header? header
|
82
|
+
end
|
83
|
+
def [] key
|
84
|
+
if idx = @parser.instance_eval { index_to_header_map.find_index {|e| e.match key } }
|
85
|
+
self[idx] = super(idx) || Field.new
|
86
|
+
end
|
81
87
|
end
|
82
88
|
end
|
83
89
|
|
84
|
-
|
90
|
+
class Field < String
|
85
91
|
def fixnum?
|
86
92
|
return Integer(self)
|
87
93
|
rescue
|
88
94
|
return false
|
89
95
|
end
|
90
96
|
def content?
|
91
|
-
return
|
97
|
+
return !self.empty?
|
92
98
|
end
|
93
99
|
def string?
|
94
100
|
return (self.content? and !self.fixnum?)
|
95
101
|
end
|
102
|
+
def to_nil
|
103
|
+
self.empty? ? nil : self
|
104
|
+
end
|
96
105
|
end
|
97
106
|
|
98
107
|
end
|
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: excelxml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Delsol
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: happymapper
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.5'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.5'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
description: ''
|
@@ -58,7 +58,7 @@ executables: []
|
|
58
58
|
extensions: []
|
59
59
|
extra_rdoc_files: []
|
60
60
|
files:
|
61
|
-
-
|
61
|
+
- .gitignore
|
62
62
|
- Gemfile
|
63
63
|
- LICENSE.txt
|
64
64
|
- README.md
|
@@ -84,17 +84,17 @@ require_paths:
|
|
84
84
|
- lib
|
85
85
|
required_ruby_version: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - '>='
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
91
|
requirements:
|
92
|
-
- -
|
92
|
+
- - '>='
|
93
93
|
- !ruby/object:Gem::Version
|
94
94
|
version: '0'
|
95
95
|
requirements: []
|
96
96
|
rubyforge_project:
|
97
|
-
rubygems_version: 2.
|
97
|
+
rubygems_version: 2.0.3
|
98
98
|
signing_key:
|
99
99
|
specification_version: 4
|
100
100
|
summary: Parses the data out of Excel XML 2003 workbooks/sheets.
|