rxls 0.0.2 → 0.0.3
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.
- data/.gitignore +2 -0
- data/Gemfile.lock +16 -0
- data/lib/rxls.rb +2 -0
- data/lib/rxls/base.rb +2 -53
- data/lib/rxls/version.rb +1 -1
- data/lib/rxls/worksheet.rb +54 -0
- data/rxls.gemspec +1 -0
- data/{spec → test}/fixtures/x.xls +0 -0
- data/test/helper.rb +4 -0
- data/test/test_worksheet.rb +24 -0
- metadata +38 -44
- data/spec/rxls_spec.rb +0 -26
- data/spec/spec_helper.rb +0 -1
data/Gemfile.lock
ADDED
data/lib/rxls.rb
CHANGED
data/lib/rxls/base.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require 'win32ole'
|
2
1
|
module Rxls
|
2
|
+
|
3
3
|
class Base
|
4
4
|
|
5
5
|
def initialize file
|
@@ -8,7 +8,7 @@ module Rxls
|
|
8
8
|
rescue
|
9
9
|
WIN32OLE.new('excel.application')
|
10
10
|
end
|
11
|
-
file = File.expand_path "../../../
|
11
|
+
file = File.expand_path "../../../test/fixtures/#{file}.xls", __FILE__ if file.kind_of? Symbol
|
12
12
|
@obj.workbooks.open file
|
13
13
|
end
|
14
14
|
|
@@ -21,56 +21,5 @@ module Rxls
|
|
21
21
|
end
|
22
22
|
|
23
23
|
end
|
24
|
-
|
25
|
-
class Worksheet
|
26
|
-
include Enumerable
|
27
|
-
|
28
|
-
# 'a' => [0]
|
29
|
-
# 'a b' => [0,1]
|
30
|
-
def to_row_numbers(s)
|
31
|
-
s.split(' ').map do |r|
|
32
|
-
r = 96.chr + r if r.length == 1
|
33
|
-
s = nil
|
34
|
-
r.each_byte do |b|
|
35
|
-
s = s ? s + (b-97) : (b-96) * 26
|
36
|
-
end
|
37
|
-
s
|
38
|
-
end
|
39
|
-
end
|
40
24
|
|
41
|
-
def initialize(o,n,mapping)
|
42
|
-
@columns = to_row_numbers mapping
|
43
|
-
@values = o.Worksheets(n).UsedRange.Value
|
44
|
-
headers = @values.shift # skip 1st row
|
45
|
-
@headers = @columns.map{|c| headers[c]}
|
46
|
-
end
|
47
|
-
|
48
|
-
def each
|
49
|
-
@values.each_with_index do |row,column|
|
50
|
-
values = @columns ? @columns.map{|r| row[r]} : row
|
51
|
-
yield values.unshift(column)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def dump
|
56
|
-
vcs = @columns.map{|column| ValueCounter.new}
|
57
|
-
each do |row_with_number|
|
58
|
-
row_with_number[1..-1].each_with_index do |value,index|
|
59
|
-
vcs[index] << dump_value(value)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
vcs.each_with_index{|vc,index| puts "#{@headers[index]}:#{vc}"}
|
63
|
-
end
|
64
|
-
|
65
|
-
def dump_value(v)
|
66
|
-
case v
|
67
|
-
when String
|
68
|
-
v == '' ? "String(empty)" : "String"
|
69
|
-
else
|
70
|
-
v.class
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
end
|
75
|
-
|
76
25
|
end
|
data/lib/rxls/version.rb
CHANGED
@@ -0,0 +1,54 @@
|
|
1
|
+
module Rxls
|
2
|
+
|
3
|
+
class Worksheet
|
4
|
+
include Enumerable
|
5
|
+
|
6
|
+
# 'a' => [0]
|
7
|
+
# 'a b' => [0,1]
|
8
|
+
def to_row_numbers(s)
|
9
|
+
s.split(' ').map do |r|
|
10
|
+
r = 96.chr + r if r.length == 1
|
11
|
+
s = nil
|
12
|
+
r.each_byte do |b|
|
13
|
+
s = s ? s + (b-97) : (b-96) * 26
|
14
|
+
end
|
15
|
+
s
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize(o,n,mapping)
|
20
|
+
@columns = to_row_numbers mapping
|
21
|
+
@values = o.Worksheets(n).UsedRange.Value
|
22
|
+
headers = @values.shift # skip 1st row
|
23
|
+
@headers = @columns.map{|c| headers[c]}
|
24
|
+
end
|
25
|
+
|
26
|
+
def each
|
27
|
+
@values.each_with_index do |row,column|
|
28
|
+
values = @columns ? @columns.map{|r| row[r]} : row
|
29
|
+
yield values.unshift(column)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def dump
|
34
|
+
vcs = @columns.map{|column| ValueCounter.new}
|
35
|
+
each do |row_with_number|
|
36
|
+
row_with_number[1..-1].each_with_index do |value,index|
|
37
|
+
vcs[index] << dump_value(value)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
vcs.each_with_index{|vc,index| puts "#{@headers[index]}:#{vc}"}
|
41
|
+
end
|
42
|
+
|
43
|
+
def dump_value(v)
|
44
|
+
case v
|
45
|
+
when String
|
46
|
+
v == '' ? "String(empty)" : "String"
|
47
|
+
else
|
48
|
+
v.class
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
data/rxls.gemspec
CHANGED
@@ -13,6 +13,7 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.description = %q{like csv}
|
14
14
|
|
15
15
|
s.rubyforge_project = "rxls"
|
16
|
+
s.add_development_dependency 'minitest' ,'~> 2.3.0'
|
16
17
|
|
17
18
|
s.files = `git ls-files`.split("\n")
|
18
19
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
Binary file
|
data/test/helper.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'helper'
|
2
|
+
module Rxls
|
3
|
+
describe Worksheet do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@b = Base.new(:x)
|
7
|
+
@w = @b.worksheet 1,'a c'
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'converts exel colum names to array indexes' do
|
11
|
+
assert_equal [0] , @w.to_row_numbers('a')
|
12
|
+
assert_equal [0,1], @w.to_row_numbers('a b')
|
13
|
+
assert_equal [26] , @w.to_row_numbers('aa')
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'iterates over worksheet' do
|
17
|
+
assert_equal %w(Behresn Schnell), @w.map{ |row,number,nachname| nachname}
|
18
|
+
end
|
19
|
+
|
20
|
+
# after(:all) { @b.quit }
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
metadata
CHANGED
@@ -1,74 +1,68 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rxls
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
version: 0.0.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Frank Behrens
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
12
|
+
date: 2011-07-29 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: minitest
|
16
|
+
requirement: &23152800 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 2.3.0
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *23152800
|
21
25
|
description: like csv
|
22
|
-
email:
|
26
|
+
email:
|
23
27
|
- fbehrens@gmail.com
|
24
28
|
executables: []
|
25
|
-
|
26
29
|
extensions: []
|
27
|
-
|
28
30
|
extra_rdoc_files: []
|
29
|
-
|
30
|
-
files:
|
31
|
+
files:
|
31
32
|
- .gitignore
|
32
33
|
- Gemfile
|
34
|
+
- Gemfile.lock
|
33
35
|
- Rakefile
|
34
36
|
- lib/rxls.rb
|
35
37
|
- lib/rxls/base.rb
|
36
38
|
- lib/rxls/version.rb
|
39
|
+
- lib/rxls/worksheet.rb
|
37
40
|
- rxls.gemspec
|
38
|
-
-
|
39
|
-
-
|
40
|
-
-
|
41
|
-
|
42
|
-
homepage: ""
|
41
|
+
- test/fixtures/x.xls
|
42
|
+
- test/helper.rb
|
43
|
+
- test/test_worksheet.rb
|
44
|
+
homepage: ''
|
43
45
|
licenses: []
|
44
|
-
|
45
46
|
post_install_message:
|
46
47
|
rdoc_options: []
|
47
|
-
|
48
|
-
require_paths:
|
48
|
+
require_paths:
|
49
49
|
- lib
|
50
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
|
-
requirements:
|
53
|
-
- -
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
|
56
|
-
|
57
|
-
version: "0"
|
58
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
57
|
none: false
|
60
|
-
requirements:
|
61
|
-
- -
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
|
64
|
-
- 0
|
65
|
-
version: "0"
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
66
62
|
requirements: []
|
67
|
-
|
68
63
|
rubyforge_project: rxls
|
69
|
-
rubygems_version: 1.
|
64
|
+
rubygems_version: 1.8.6
|
70
65
|
signing_key:
|
71
66
|
specification_version: 3
|
72
67
|
summary: access to excel spreadsheeds
|
73
68
|
test_files: []
|
74
|
-
|
data/spec/rxls_spec.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
module Rxls
|
3
|
-
describe Base do
|
4
|
-
|
5
|
-
before(:all) do
|
6
|
-
@b = Base.new(:x)
|
7
|
-
@w = @b.worksheet 1,'a c'
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'converts exel colum names to array indexes' do
|
11
|
-
@w.to_row_numbers('a').should == [0]
|
12
|
-
@w.to_row_numbers('a b').should == [0,1]
|
13
|
-
@w.to_row_numbers('aa').should == [26]
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'iterates over worksheet' do
|
17
|
-
@w.map{ |row,number,nachname| nachname}.should == ["Behresn", "Schnell"]
|
18
|
-
end
|
19
|
-
|
20
|
-
after(:all) do
|
21
|
-
@b.quit
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require 'rxls'
|