rspreadsheet 0.2.5 → 0.2.7
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/.gitignore +1 -0
- data/DEVEL_BLOG.md +1 -1
- data/GUIDE.md +3 -45
- data/README.md +11 -8
- data/lib/class_extensions.rb +1 -1
- data/lib/rspreadsheet/cell.rb +2 -1
- data/lib/rspreadsheet/version.rb +1 -1
- data/lib/rspreadsheet/workbook.rb +2 -2
- data/spec/cell_spec.rb +3 -2
- data/spec/rspreadsheet_spec.rb +45 -0
- metadata +1 -3
- data/.kateproject.d/notes.txt +0 -0
- data/lib/rspreadsheet/empty_file_template.old.ods +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9603ed2713de6f87efb309a9cd9f36388001731
|
4
|
+
data.tar.gz: baa73509ae8527b93fa5dc19596a244ed21f5171
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 691688a99bd3900f791502e2efd9b74b5fb745f1044ef349885fec3323ff6e95fc074fcd65c5c55a2b972f50a49715d58381e5b7b00f65c662dc4f5293378b90
|
7
|
+
data.tar.gz: 1a57249cbdceb90ff94a8544a7f370c89124008d6c33dc9777a2aeae83e3fb6e6f4b67bb7380df27496726170d0a84be36feb51083d9fffda525ba34c9ea10d5
|
data/.gitignore
CHANGED
data/DEVEL_BLOG.md
CHANGED
@@ -37,7 +37,7 @@ Guiding ideas
|
|
37
37
|
1. make changes
|
38
38
|
2. test if all tests pass (run `bundle exex guard` to test automatically). If not go to 1
|
39
39
|
3. build and install locally
|
40
|
-
* ``rake build`` - builds the gem to pkg directory
|
40
|
+
* ``rake build`` - builds the gem to pkg directory (if something gets wrong, sometimes comit go git gelps)
|
41
41
|
* ``sudo rake install`` - installs gem to local system [^1]
|
42
42
|
4. Now can locally and manually use/test the gem. This should not be replacement for automated testing. If you make some changes, go to 1.
|
43
43
|
5. When happy, increment the version number and `git add .; git commit -am'commit message'; git push`
|
data/GUIDE.md
CHANGED
@@ -1,50 +1,8 @@
|
|
1
|
-
## Examples
|
1
|
+
## Examples
|
2
2
|
|
3
|
-
|
3
|
+
* [basic functionality](https://gist.github.com/gorn/42e33d086d9b4fda10ec)
|
4
|
+
* [extended examples](https://gist.github.com/gorn/b432e6a69e82628349e6) of lots of alternative syntax
|
4
5
|
|
5
|
-
```ruby
|
6
|
-
require 'rspreadsheet'
|
7
|
-
|
8
|
-
book = Rspreadsheet.new
|
9
|
-
sheet = book.create_worksheet 'Top icecreams'
|
10
|
-
|
11
|
-
sheet[1,1] = 'My top 5'
|
12
|
-
p sheet[1,1].class # => String
|
13
|
-
p sheet[1,1] # => "My top 5"
|
14
|
-
|
15
|
-
# These are all the same values - alternative syntax
|
16
|
-
p sheet.rows(1).cells(0).value
|
17
|
-
p sheet.cells(1,1).value
|
18
|
-
p sheet.A1
|
19
|
-
p sheet[1,1]
|
20
|
-
|
21
|
-
# How to inspect/manipulate the Cell object
|
22
|
-
sheet.cells(1,1) # => Rspreadsheet::Cell
|
23
|
-
sheet.cells(1,1).format
|
24
|
-
sheet.cells(1,1).format.size = 15
|
25
|
-
sheet.cells(1,1).format.weight = bold
|
26
|
-
p sheet.cells(1,1).format.bold? # => true
|
27
|
-
|
28
|
-
# There are the same assigmenents
|
29
|
-
sheet.A1 = value
|
30
|
-
sheet[1,1]= value
|
31
|
-
sheet.cells(1,1).value = value
|
32
|
-
|
33
|
-
p sheet.A1.class # => Rspreadsheet::Cell
|
34
|
-
|
35
|
-
# relative cells
|
36
|
-
sheet.cells(4,7).relative(-1,0) # => cell 3,7
|
37
|
-
|
38
|
-
# build the top five list
|
39
|
-
(1..5).each { |i| sheet[i,1] = i }
|
40
|
-
sheet.columns(1).format.bold = true
|
41
|
-
sheet.cells[2,1..5] = ['Vanilla', 'Pistacia', 'Chocolate', 'Annanas', 'Strawbery']
|
42
|
-
|
43
|
-
sheet.columns(1).cells(1).format.color = :red
|
44
|
-
|
45
|
-
book.save
|
46
|
-
|
47
|
-
```
|
48
6
|
## Conventions
|
49
7
|
* **all indexes are 1-based**. This applies to rows, cells cordinates, and all array like structures like list od worksheets etc. Spreadsheet world is 1-based, ruby is 0-based do I had to make a decision. I intend to make an global option for this, but in early stage I need to keep things simple.
|
50
8
|
* with numeric coordinates row always comes before col as in (row,col)
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# rspreadsheet
|
2
2
|
|
3
3
|
[](https://travis-ci.org/gorn/rspreadsheet) [](https://coveralls.io/r/gorn/rspreadsheet)
|
4
|
-
|
4
|
+
|
5
5
|
Manipulating spreadsheets with Ruby. Read, modify, write or create new OpenDocument Spreadsheet files from ruby code.
|
6
6
|
|
7
7
|
## Contibutions, ideas and wishes welcomed
|
@@ -14,8 +14,8 @@ Alhought this gem is still in alpha stage I use in my project it and it works fi
|
|
14
14
|
|
15
15
|
```ruby
|
16
16
|
require 'rspreadsheet'
|
17
|
-
book = Rspreadsheet.open('
|
18
|
-
sheet = book.worksheets
|
17
|
+
book = Rspreadsheet.open('./test.ods')
|
18
|
+
sheet = book.worksheets(1)
|
19
19
|
|
20
20
|
|
21
21
|
# get value of a cell B5 (there are more ways to do this)
|
@@ -30,28 +30,31 @@ sheet.cells(5,2).value = 1.78
|
|
30
30
|
|
31
31
|
# working with cell format
|
32
32
|
sheet.cells(5,2).format.bold = true
|
33
|
-
sheet.cells(5,2).format.
|
33
|
+
sheet.cells(5,2).format.background_color = '#FF0000'
|
34
34
|
|
35
35
|
# calculating sum of cells in row
|
36
36
|
sheet.rows(5).cellvalues.sum
|
37
|
-
sheet.rows(5).cells.sum{ |cell| cell.value }
|
37
|
+
sheet.rows(5).cells.sum{ |cell| cell.value.to_f }
|
38
38
|
|
39
39
|
# iterating over list of people and displaying the data
|
40
40
|
|
41
41
|
total = 0
|
42
42
|
sheet.rows.each do |row|
|
43
43
|
puts "Sponsor #{row[1]} with email #{row[2]} has donated #{row[3]} USD."
|
44
|
-
total += row[3]
|
44
|
+
total += row[3].to_f
|
45
45
|
end
|
46
46
|
puts "Totally fundraised #{total} USD"
|
47
47
|
|
48
48
|
# saving file
|
49
49
|
book.save
|
50
50
|
book.save('different_filename.ods')
|
51
|
-
|
52
51
|
```
|
53
52
|
|
54
|
-
This is
|
53
|
+
This is also pubished as Gist **where you can leave you comments and suggestions**:
|
54
|
+
|
55
|
+
* [basic functionality](https://gist.github.com/gorn/42e33d086d9b4fda10ec)
|
56
|
+
* [extended examples](https://gist.github.com/gorn/b432e6a69e82628349e6) of lots of alternative syntax
|
57
|
+
* [GUIDE.md](GUIDE.md) some other notes
|
55
58
|
|
56
59
|
## Installation
|
57
60
|
|
data/lib/class_extensions.rb
CHANGED
data/lib/rspreadsheet/cell.rb
CHANGED
@@ -191,6 +191,7 @@ class CellFormat
|
|
191
191
|
|
192
192
|
# text style attribute readers
|
193
193
|
def bold; get_text_style_node_attribute('font-weight') == 'bold' end
|
194
|
+
alias :bold? :bold
|
194
195
|
def italic; get_text_style_node_attribute('font-style') == 'italic' end
|
195
196
|
def color; get_text_style_node_attribute('color') end
|
196
197
|
def font_size; get_text_style_node_attribute('font-size') end
|
@@ -252,7 +253,7 @@ class CellFormat
|
|
252
253
|
last = cellnode.doc.root.find('./office:automatic-styles/style:style').
|
253
254
|
collect {|node| node['name']}.
|
254
255
|
collect{ |name| /^ce(\d*)$/.match(name); $1.andand.to_i}.
|
255
|
-
compact.max
|
256
|
+
compact.max || 0
|
256
257
|
"ce#{last+1}"
|
257
258
|
end
|
258
259
|
def automatic_styles_node; cellnode.doc.root.find("./office:automatic-styles").first end
|
data/lib/rspreadsheet/version.rb
CHANGED
@@ -8,7 +8,7 @@ class Workbook
|
|
8
8
|
def initialize(afilename=nil)
|
9
9
|
@worksheets=[]
|
10
10
|
@filename = afilename
|
11
|
-
@content_xml = Zip::File.open(@filename || '
|
11
|
+
@content_xml = Zip::File.open(@filename || File.dirname(__FILE__)+'/empty_file_template.ods') do |zip|
|
12
12
|
LibXML::XML::Document.io zip.get_input_stream('content.xml')
|
13
13
|
end
|
14
14
|
@xmlnode = @content_xml.find_first('//office:spreadsheet')
|
@@ -20,7 +20,7 @@ class Workbook
|
|
20
20
|
if @filename.nil? and new_filename.nil? then raise 'New file should be named on first save.' end
|
21
21
|
# if the filename has changed than first copy the original file to new location (or template if it is a new file)
|
22
22
|
if new_filename
|
23
|
-
FileUtils.cp(@filename || '
|
23
|
+
FileUtils.cp(@filename || File.dirname(__FILE__)+'/empty_file_template.ods', new_filename)
|
24
24
|
@filename = new_filename
|
25
25
|
end
|
26
26
|
Zip::File.open(@filename) do |zip|
|
data/spec/cell_spec.rb
CHANGED
@@ -184,8 +184,9 @@ describe Rspreadsheet::Cell do
|
|
184
184
|
# after fresh create
|
185
185
|
@cell.xmlnode.attributes['style-name'].should_not be_nil
|
186
186
|
end
|
187
|
-
it 'can set formats of the cells' do
|
188
|
-
@cell = @
|
187
|
+
it 'can set formats of the cells in new file' do
|
188
|
+
@cell = @sheet1.cells(1,1)
|
189
|
+
@cell.value = '1'
|
189
190
|
# bold
|
190
191
|
@cell.format.bold.should be_falsey
|
191
192
|
@cell.format.bold = true
|
data/spec/rspreadsheet_spec.rb
CHANGED
@@ -98,6 +98,51 @@ describe Rspreadsheet do
|
|
98
98
|
end
|
99
99
|
total.should eq 55
|
100
100
|
end
|
101
|
+
it 'examples from advanced syntax GUIDE are working' do
|
102
|
+
def p(*par); end # supress p in the example
|
103
|
+
expect do
|
104
|
+
book = Rspreadsheet::Workbook.new
|
105
|
+
sheet = book.create_worksheet 'Top icecreams'
|
106
|
+
|
107
|
+
sheet[1,1] = 'My top 5'
|
108
|
+
p sheet[1,1].class # => String
|
109
|
+
p sheet[1,1] # => "My top 5"
|
110
|
+
|
111
|
+
# These are all the same values - alternative syntax
|
112
|
+
p sheet.rows(1).cells(1).value
|
113
|
+
p sheet.cells(1,1).value
|
114
|
+
p sheet.A1
|
115
|
+
p sheet[1,1]
|
116
|
+
p sheet['A1']
|
117
|
+
p sheet.cells('A1').value
|
118
|
+
|
119
|
+
# How to inspect/manipulate the Cell object
|
120
|
+
sheet.cells(1,1) # => Rspreadsheet::Cell
|
121
|
+
sheet.cells(1,1).format
|
122
|
+
sheet.cells(1,1).format.font_size = '15pt'
|
123
|
+
sheet.cells(1,1).format.bold = true
|
124
|
+
p sheet.cells(1,1).format.bold? # => true
|
125
|
+
|
126
|
+
# There are the same assigmenents
|
127
|
+
value = 1.234
|
128
|
+
sheet.A1 = value
|
129
|
+
sheet[1,1]= value
|
130
|
+
sheet.cells(1,1).value = value
|
131
|
+
|
132
|
+
p sheet.A1.class # => Rspreadsheet::Cell
|
133
|
+
|
134
|
+
# relative cells
|
135
|
+
sheet.cells(4,7).relative(-1,0) # => cell 3,7
|
136
|
+
|
137
|
+
# build the top five list (these features are not implemented yet)
|
138
|
+
# (1..5).each { |i| sheet[i,1] = i }
|
139
|
+
# sheet.columns(1).format.bold = true
|
140
|
+
# sheet.cells[2,1..5] = ['Vanilla', 'Pistacia', 'Chocolate', 'Annanas', 'Strawbery']
|
141
|
+
# sheet.columns(1).cells(1).format.color = :red
|
142
|
+
|
143
|
+
book.save('testfile.ods')
|
144
|
+
end.not_to raise_error
|
145
|
+
end
|
101
146
|
end
|
102
147
|
|
103
148
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspreadsheet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jakub A.Těšínský
|
@@ -163,7 +163,6 @@ files:
|
|
163
163
|
- ".directory"
|
164
164
|
- ".gitignore"
|
165
165
|
- ".kateproject"
|
166
|
-
- ".kateproject.d/notes.txt"
|
167
166
|
- ".travis.yml"
|
168
167
|
- ".yardopts"
|
169
168
|
- CHANGELOG.md
|
@@ -180,7 +179,6 @@ files:
|
|
180
179
|
- lib/rspreadsheet.rb
|
181
180
|
- lib/rspreadsheet/cell.rb
|
182
181
|
- lib/rspreadsheet/empty_file_template.ods
|
183
|
-
- lib/rspreadsheet/empty_file_template.old.ods
|
184
182
|
- lib/rspreadsheet/row.rb
|
185
183
|
- lib/rspreadsheet/tools.rb
|
186
184
|
- lib/rspreadsheet/version.rb
|
data/.kateproject.d/notes.txt
DELETED
File without changes
|
Binary file
|