rusk 0.0.1

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