excelxml 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|