rusk 0.0.1
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/.document +4 -0
- data/.gitignore +19 -0
- data/.yardopts +3 -0
- data/Gemfile +4 -0
- data/Guardfile +11 -0
- data/LICENSE +22 -0
- data/README.md +150 -0
- data/Rakefile +17 -0
- data/lib/rusk.rb +10 -0
- data/lib/rusk/book.rb +40 -0
- data/lib/rusk/cell.rb +49 -0
- data/lib/rusk/sheet.rb +56 -0
- data/lib/rusk/version.rb +3 -0
- data/rusk.gemspec +27 -0
- data/spec/book_spec.rb +67 -0
- data/spec/cell_spec.rb +272 -0
- data/spec/data/general_datas.ods +0 -0
- data/spec/data/general_datas_content.xml +217 -0
- data/spec/sheet_spec.rb +115 -0
- data/spec/spec_helper.rb +26 -0
- metadata +221 -0
data/spec/sheet_spec.rb
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
3
|
+
|
4
|
+
describe Rusk::Sheet do
|
5
|
+
before do
|
6
|
+
content = Nokogiri::XML(File.read("#{dir}/general_datas_content.xml"))
|
7
|
+
@sheet = Rusk::Sheet.new(content.xpath("//table:table")[0])
|
8
|
+
@cells = [
|
9
|
+
["string", "mruby", ""],
|
10
|
+
["date", Date.new(2012,04,29), ""],
|
11
|
+
["time", "16:50", ""],
|
12
|
+
["float", 7000.0, ""],
|
13
|
+
["merged_cell", "", "after merged column"],
|
14
|
+
["merged_row cell", "merged first row cell", ""],
|
15
|
+
["", "merged second row cell", ""],
|
16
|
+
["after merged row cell", "", ""],
|
17
|
+
["", "", ""],
|
18
|
+
["after blank row", "", ""],
|
19
|
+
["", "after blank column", ""],
|
20
|
+
["hide the cell next to", "hidden cell", ""],
|
21
|
+
["percentage", 0.1, ""],
|
22
|
+
["enter date of time", DateTime.new(2012,5,26,18,17), ""],
|
23
|
+
["boolean", true, false],
|
24
|
+
["currency", 10.0, ""]
|
25
|
+
]
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "#name" do
|
29
|
+
it { @sheet.name.should eq "Sheet1" }
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "#[]" do
|
33
|
+
context "with exist cell index" do
|
34
|
+
it { @sheet[2, 1].should be_kind_of Rusk::Cell }
|
35
|
+
it { @sheet[0, 0].value.should eq "string" }
|
36
|
+
it { @sheet[0, 1].value.should eq "mruby" }
|
37
|
+
it { @sheet[1, 1].value.should eq Date.new(2012,4,29) }
|
38
|
+
it { @sheet[4, 2].value.should eq 'after merged column' }
|
39
|
+
it { @sheet[5, 1].value.should eq 'merged first row cell' }
|
40
|
+
it { @sheet[6, 1].value.should eq 'merged second row cell' }
|
41
|
+
it { @sheet[8, 0].value.should eq "" }
|
42
|
+
it { @sheet[8, 1].value.should eq "" }
|
43
|
+
it { @sheet[11, 0].value.should eq 'hide the cell next to' }
|
44
|
+
it { @sheet[11, 1].value.should eq 'hidden cell' }
|
45
|
+
end
|
46
|
+
|
47
|
+
context "with not exist cell index" do
|
48
|
+
context "when row is existing, column is not existing" do
|
49
|
+
it { @sheet[0, 1000].should be_nil }
|
50
|
+
end
|
51
|
+
|
52
|
+
context "when row and column is not existing" do
|
53
|
+
it { @sheet[1000, 10000].should be_nil }
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "#each" do
|
60
|
+
it "access order by row and column" do
|
61
|
+
cells = @cells.flatten
|
62
|
+
index = 0
|
63
|
+
@sheet.each do |cell|
|
64
|
+
cell.value.should eq cells[index]
|
65
|
+
index += 1
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "#each_row" do
|
71
|
+
it "access order by first row" do
|
72
|
+
index = 0
|
73
|
+
@sheet.each_row do |rows|
|
74
|
+
rows.map(&:value).should eq @cells[index]
|
75
|
+
index += 1
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe "#each_column" do
|
81
|
+
it "access order by first column" do
|
82
|
+
index = 0
|
83
|
+
cells = @cells.transpose
|
84
|
+
@sheet.each_column do |columns|
|
85
|
+
columns.map(&:value).should eq cells[index]
|
86
|
+
index += 1
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe "modify ods file" do
|
92
|
+
before do
|
93
|
+
@tmp_file = create_tmp
|
94
|
+
end
|
95
|
+
|
96
|
+
after do
|
97
|
+
remove_tmp
|
98
|
+
end
|
99
|
+
|
100
|
+
describe "#name=" do
|
101
|
+
context "change sheet name of sheet2 to 'changed'" do
|
102
|
+
before do
|
103
|
+
Rusk::Book.open(@tmp_file) do |book|
|
104
|
+
book[1].name = "changed"
|
105
|
+
book.save
|
106
|
+
end
|
107
|
+
@book = Rusk::Book.open(@tmp_file)
|
108
|
+
end
|
109
|
+
|
110
|
+
it { @book[1].name.should eq "changed" }
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'rspec'
|
3
|
+
require File.expand_path('../lib/rusk', File.dirname(__FILE__))
|
4
|
+
require 'pry'
|
5
|
+
require 'fileutils'
|
6
|
+
|
7
|
+
module Rusk::SpecHelpers
|
8
|
+
def dir
|
9
|
+
File.expand_path("data", File.dirname(__FILE__))
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_tmp(file = "general_datas.ods")
|
13
|
+
tmp_book = "#{dir}/tmp_#{file}"
|
14
|
+
FileUtils.cp "#{dir}/#{file}", tmp_book
|
15
|
+
tmp_book
|
16
|
+
end
|
17
|
+
|
18
|
+
def remove_tmp(file = "general_datas.ods")
|
19
|
+
FileUtils.rm "#{dir}/tmp_#{file}"
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
RSpec.configure do |config|
|
25
|
+
config.include Rusk::SpecHelpers
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,221 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rusk
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- tomi
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-03-07 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rubyzip
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.9.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.9.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: nokogiri
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 1.5.6
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.5.6
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rake
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0.9'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.9'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rspec
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.11.0
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 2.11.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rb-fsevent
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 0.9.0
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.9.0
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: listen
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 0.5.0
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 0.5.0
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: growl
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 1.0.0
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 1.0.0
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: guard-rspec
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ~>
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 2.1.0
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ~>
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 2.1.0
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: pry
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ~>
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0.9'
|
150
|
+
type: :development
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ~>
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0.9'
|
158
|
+
description: Rusk is library that read and write Open Document Spreadsheet Format(ods).
|
159
|
+
email:
|
160
|
+
- tomiacannondale@gmail.com
|
161
|
+
executables: []
|
162
|
+
extensions: []
|
163
|
+
extra_rdoc_files: []
|
164
|
+
files:
|
165
|
+
- .document
|
166
|
+
- .gitignore
|
167
|
+
- .yardopts
|
168
|
+
- Gemfile
|
169
|
+
- Guardfile
|
170
|
+
- LICENSE
|
171
|
+
- README.md
|
172
|
+
- Rakefile
|
173
|
+
- lib/rusk.rb
|
174
|
+
- lib/rusk/book.rb
|
175
|
+
- lib/rusk/cell.rb
|
176
|
+
- lib/rusk/sheet.rb
|
177
|
+
- lib/rusk/version.rb
|
178
|
+
- rusk.gemspec
|
179
|
+
- spec/book_spec.rb
|
180
|
+
- spec/cell_spec.rb
|
181
|
+
- spec/data/general_datas.ods
|
182
|
+
- spec/data/general_datas_content.xml
|
183
|
+
- spec/sheet_spec.rb
|
184
|
+
- spec/spec_helper.rb
|
185
|
+
homepage: https://github.com/tomiacannondale/rusk
|
186
|
+
licenses: []
|
187
|
+
post_install_message:
|
188
|
+
rdoc_options: []
|
189
|
+
require_paths:
|
190
|
+
- lib
|
191
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
192
|
+
none: false
|
193
|
+
requirements:
|
194
|
+
- - ! '>='
|
195
|
+
- !ruby/object:Gem::Version
|
196
|
+
version: '0'
|
197
|
+
segments:
|
198
|
+
- 0
|
199
|
+
hash: 3352198063863070839
|
200
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
202
|
+
requirements:
|
203
|
+
- - ! '>='
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: '0'
|
206
|
+
segments:
|
207
|
+
- 0
|
208
|
+
hash: 3352198063863070839
|
209
|
+
requirements: []
|
210
|
+
rubyforge_project:
|
211
|
+
rubygems_version: 1.8.24
|
212
|
+
signing_key:
|
213
|
+
specification_version: 3
|
214
|
+
summary: Read and write Open Document Spreadsheet Format(ods).
|
215
|
+
test_files:
|
216
|
+
- spec/book_spec.rb
|
217
|
+
- spec/cell_spec.rb
|
218
|
+
- spec/data/general_datas.ods
|
219
|
+
- spec/data/general_datas_content.xml
|
220
|
+
- spec/sheet_spec.rb
|
221
|
+
- spec/spec_helper.rb
|