batch_factory 0.0.6 → 0.1.0
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/batch_factory.rb +2 -2
- data/lib/batch_factory/hashed_worksheet.rb +8 -1
- data/lib/batch_factory/parser.rb +5 -4
- data/lib/batch_factory/version.rb +9 -1
- data/lib/spreadsheet_document.rb +16 -3
- data/spec/{unit/batch_factory.rb → batch_factory/batch_factory_spec.rb} +1 -2
- data/spec/{unit/batch_factory/hashed_worksheet.rb → batch_factory/hashed_worksheet_spec.rb} +1 -1
- data/spec/{unit/batch_factory/parser.rb → batch_factory/parser_spec.rb} +2 -2
- data/spec/batch_factory/spreadsheet_document_spec.rb +16 -0
- data/spec/spec_helper.rb +12 -1
- metadata +24 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 426ee0a9312cf54ccc7c7c8dba99955b2f3f7bb4
|
4
|
+
data.tar.gz: 866ca63ab2d7fb83584b4a244898a9f5c0af964e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf14a17f8bea356ce0ed6e7976213b6edffe92c45a84ae2f83728a29094ed20ac754af04faf729c9e1c3f6c5fd796a320fb35425032a9654d25fc89511d2b8fd
|
7
|
+
data.tar.gz: b586db47d5c3064cdc0fd2b1db6fe5b80497836e0de9e24f58ad3b82355d8ab905635b7b6e54c2a2f39c68596108249421cf39466987ea38380fceb09c1f983f
|
data/lib/batch_factory.rb
CHANGED
@@ -9,9 +9,9 @@ require 'batch_factory/hashed_worksheet'
|
|
9
9
|
|
10
10
|
module BatchFactory
|
11
11
|
class << self
|
12
|
-
def from_file
|
12
|
+
def from_file(file_location, options = {})
|
13
13
|
parser = BatchFactory::Parser.new
|
14
|
-
parser.open file_location,
|
14
|
+
parser.open file_location, options
|
15
15
|
parser.parse!
|
16
16
|
|
17
17
|
parser.hashed_worksheet
|
@@ -2,18 +2,25 @@ module BatchFactory
|
|
2
2
|
class HashedWorksheet
|
3
3
|
attr_accessor :keys, :rows
|
4
4
|
|
5
|
+
@@proxy_methods = Enumerable.public_instance_methods + Array.public_instance_methods
|
6
|
+
|
5
7
|
def initialize(keys, rows)
|
6
8
|
@keys = keys
|
7
9
|
@rows = rows
|
8
10
|
end
|
9
11
|
|
10
12
|
def method_missing(method, *args, &block)
|
11
|
-
if (
|
13
|
+
if should_proxy_method?(method.to_sym)
|
12
14
|
@rows.send(method, *args, &block)
|
13
15
|
else
|
14
16
|
super
|
15
17
|
end
|
16
18
|
end
|
17
19
|
|
20
|
+
private
|
21
|
+
|
22
|
+
def should_proxy_method?(method)
|
23
|
+
@@proxy_methods.include? method
|
24
|
+
end
|
18
25
|
end
|
19
26
|
end
|
data/lib/batch_factory/parser.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module BatchFactory
|
2
2
|
class Parser
|
3
|
-
attr_accessor :worksheet, :user_heading_keys,
|
3
|
+
attr_accessor :worksheet, :user_heading_keys,
|
4
|
+
:heading_keys, :column_bounds, :row_hashes
|
4
5
|
|
5
6
|
def initialize
|
6
7
|
@heading_keys = []
|
@@ -8,9 +9,9 @@ module BatchFactory
|
|
8
9
|
@row_hashes = []
|
9
10
|
end
|
10
11
|
|
11
|
-
def open(file_location,
|
12
|
-
@worksheet = SpreadsheetDocument.new(file_location,
|
13
|
-
@user_heading_keys =
|
12
|
+
def open(file_location, options = {})
|
13
|
+
@worksheet = SpreadsheetDocument.new(file_location, options)
|
14
|
+
@user_heading_keys = options[:keys]
|
14
15
|
end
|
15
16
|
|
16
17
|
def parse!
|
data/lib/spreadsheet_document.rb
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
require 'roo'
|
2
|
+
|
2
3
|
class SpreadsheetDocument
|
3
|
-
|
4
|
-
|
4
|
+
attr_reader :filetype, :sheet_number
|
5
|
+
|
6
|
+
def initialize(file_name, options = {})
|
7
|
+
@sheet_number = options[:sheet_number] || 0
|
8
|
+
@filetype = options[:filetype] || detect_filetype(file_name)
|
9
|
+
|
10
|
+
@spreadsheet = case @filetype
|
5
11
|
when 'xls'
|
6
12
|
Roo::Excel.new(file_name)
|
7
13
|
when 'xlsx'
|
@@ -11,7 +17,7 @@ class SpreadsheetDocument
|
|
11
17
|
else
|
12
18
|
Roo::CSV.new(file_name)
|
13
19
|
end
|
14
|
-
@current_sheet = @spreadsheet.sheets[sheet_number]
|
20
|
+
@current_sheet = @spreadsheet.sheets[@sheet_number]
|
15
21
|
end
|
16
22
|
|
17
23
|
def method_missing(method, *args, &block)
|
@@ -22,4 +28,11 @@ class SpreadsheetDocument
|
|
22
28
|
super
|
23
29
|
end
|
24
30
|
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def detect_filetype(file_name)
|
35
|
+
File.extname(file_name)[1..-1]
|
36
|
+
end
|
25
37
|
end
|
38
|
+
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe BatchFactory do
|
4
|
-
|
5
4
|
context 'w/ class methods' do
|
6
5
|
it 'should open a file and return a hashed workbook' do
|
7
6
|
worksheet = BatchFactory.from_file VALID_SPREADSHEET
|
@@ -10,5 +9,5 @@ describe BatchFactory do
|
|
10
9
|
worksheet[0][:age].should == 50
|
11
10
|
end
|
12
11
|
end
|
13
|
-
|
14
12
|
end
|
13
|
+
|
@@ -37,7 +37,7 @@ describe BatchFactory::Parser do
|
|
37
37
|
|
38
38
|
context 'when parsing second worksheet' do
|
39
39
|
before do
|
40
|
-
parser.open VALID_SPREADSHEET, 1
|
40
|
+
parser.open VALID_SPREADSHEET, sheet_number: 1
|
41
41
|
parser.parse!
|
42
42
|
end
|
43
43
|
|
@@ -60,6 +60,6 @@ describe BatchFactory::Parser do
|
|
60
60
|
worksheet.keys.should == parser.heading_keys
|
61
61
|
end
|
62
62
|
end
|
63
|
-
|
64
63
|
end
|
65
64
|
end
|
65
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SpreadsheetDocument do
|
4
|
+
context 'w/ filetype option' do
|
5
|
+
subject { described_class.new(VALID_SPREADSHEET) }
|
6
|
+
|
7
|
+
its(:filetype) { should eq('xls') }
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'with filetype option' do
|
11
|
+
subject { described_class.new(VALID_SPREADSHEET, filetype: 'xls') }
|
12
|
+
|
13
|
+
its(:filetype) { should eq('xls') }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
require 'rspec'
|
2
|
+
require 'rspec/its'
|
3
|
+
|
2
4
|
require 'batch_factory'
|
3
5
|
|
4
|
-
ASSETS_DIR = File.expand_path File.join(File.dirname(__FILE__), 'files')
|
6
|
+
ASSETS_DIR = File.expand_path File.join(File.dirname(__FILE__), 'support', 'files')
|
5
7
|
VALID_SPREADSHEET = File.join(ASSETS_DIR, 'valid-spreadsheet.xls')
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
10
|
+
config.mock_with :rspec
|
11
|
+
config.order = 'random'
|
12
|
+
config.filter_run focus: true
|
13
|
+
config.run_all_when_everything_filtered = true
|
14
|
+
config.fail_fast = false
|
15
|
+
end
|
16
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: batch_factory
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Denis Ivanov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-04-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: roo
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '2.10'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec-its
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
description: Assumes first row to be keys and returns hashes for consecutive rows
|
56
70
|
email:
|
57
71
|
- visible@jumph4x.net
|
@@ -64,10 +78,11 @@ files:
|
|
64
78
|
- lib/batch_factory/parser.rb
|
65
79
|
- lib/batch_factory/version.rb
|
66
80
|
- lib/spreadsheet_document.rb
|
81
|
+
- spec/batch_factory/batch_factory_spec.rb
|
82
|
+
- spec/batch_factory/hashed_worksheet_spec.rb
|
83
|
+
- spec/batch_factory/parser_spec.rb
|
84
|
+
- spec/batch_factory/spreadsheet_document_spec.rb
|
67
85
|
- spec/spec_helper.rb
|
68
|
-
- spec/unit/batch_factory.rb
|
69
|
-
- spec/unit/batch_factory/hashed_worksheet.rb
|
70
|
-
- spec/unit/batch_factory/parser.rb
|
71
86
|
homepage: https://github.com/jumph4x/batch-factory
|
72
87
|
licenses: []
|
73
88
|
metadata: {}
|
@@ -92,7 +107,8 @@ signing_key:
|
|
92
107
|
specification_version: 4
|
93
108
|
summary: Meaningful spreadsheet access
|
94
109
|
test_files:
|
110
|
+
- spec/batch_factory/batch_factory_spec.rb
|
111
|
+
- spec/batch_factory/hashed_worksheet_spec.rb
|
112
|
+
- spec/batch_factory/parser_spec.rb
|
113
|
+
- spec/batch_factory/spreadsheet_document_spec.rb
|
95
114
|
- spec/spec_helper.rb
|
96
|
-
- spec/unit/batch_factory/hashed_worksheet.rb
|
97
|
-
- spec/unit/batch_factory/parser.rb
|
98
|
-
- spec/unit/batch_factory.rb
|