rspreadsheet 0.4.3 → 0.4.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d3845679733a12aaed33574dc981b22d49d297fe
4
- data.tar.gz: c7f151f9ed92317b006eec3e2fc323514b43a5f4
3
+ metadata.gz: 5e68b11b80d618d17de31bb79ff8723d7367dbbc
4
+ data.tar.gz: 5cf05fdad441db2cea08b21784ce55cac716b149
5
5
  SHA512:
6
- metadata.gz: 0307c5a79b0e9aebc2ce1cfc56b6f8445542e4cc8dab661a92398c8c7e4debeaa55ed0f6dce7a7a9a47cbda6d53bdf24cc19f95a441e94b4a3458e4c16d947eb
7
- data.tar.gz: 25acbd10e229976cd2b2112dbc35dbf2d4e8610302928df753a7a1110c64f23a0f052362684188fb33dba9341ab402075a0ed5e2b7635e90cc574d46c3b13ba2
6
+ metadata.gz: 5c438393ef32daba2c6deb4d4d4b251125adc6322ad39297e1f6a4c9d08a7814ff76e5d8f40679e470ffb76fc295048e9da44b590f0561b93dce984617bbf137
7
+ data.tar.gz: 0a125394984f40ae1aa8fe2db8c142f3a04e921b580714019ee4d29075f549d784c2773cd688b4482600a2eec83ef6ec406b2903d83f83a7c08ec79af470cb8a
data/.gitignore CHANGED
@@ -26,6 +26,7 @@ build/
26
26
  .*kate-swp
27
27
  .*kate-swp.bak
28
28
  .directory
29
+ .rake-tasks~
29
30
 
30
31
  ## Environment normalisation:
31
32
  /.bundle/
@@ -122,33 +122,39 @@ class Cell < XMLTiedItem
122
122
  detach_if_needed
123
123
  if self.mode == :regular
124
124
  gt = guess_cell_type(avalue)
125
+ # raise 'here'+gt.to_s if avalue == 666.66
125
126
  case
126
127
  when gt == nil then raise 'This value type is not storable to cell'
127
128
  when gt == Float then
128
- remove_all_value_attributes_and_content(xmlnode)
129
+ remove_all_value_attributes_and_content
129
130
  set_type_attribute('float')
130
131
  Tools.set_ns_attribute(xmlnode,'office','value', avalue.to_s)
131
132
  xmlnode << Tools.prepare_ns_node('text','p', avalue.to_f.to_s)
132
133
  when gt == String then
133
- remove_all_value_attributes_and_content(xmlnode)
134
+ remove_all_value_attributes_and_content
134
135
  set_type_attribute('string')
135
136
  xmlnode << Tools.prepare_ns_node('text','p', avalue.to_s)
136
137
  when gt == :datetime then
137
- remove_all_value_attributes_and_content(xmlnode)
138
+ remove_all_value_attributes_and_content
138
139
  set_type_attribute('date')
139
140
  avalue = avalue.strftime(InternalDateTimeFormat)
140
141
  Tools.set_ns_attribute(xmlnode,'office','date-value', avalue)
141
142
  xmlnode << Tools.prepare_ns_node('text','p', avalue)
142
143
  when gt == :time then
143
- remove_all_value_attributes_and_content(xmlnode)
144
+ remove_all_value_attributes_and_content
144
145
  set_type_attribute('time')
145
146
  Tools.set_ns_attribute(xmlnode,'office','time-value', avalue.strftime(InternalTimeFormat))
146
147
  xmlnode << Tools.prepare_ns_node('text','p', avalue.strftime('%H:%M'))
147
148
  when gt == :percentage then
148
- remove_all_value_attributes_and_content(xmlnode)
149
+ remove_all_value_attributes_and_content
149
150
  set_type_attribute('percentage')
150
151
  Tools.set_ns_attribute(xmlnode,'office','value', '%0.2d%' % avalue.to_f)
151
152
  xmlnode << Tools.prepare_ns_node('text','p', (avalue.to_f*100).round.to_s+'%')
153
+ when gt == :currency then
154
+ remove_all_value_attributes_and_content
155
+ set_type_attribute('currency')
156
+ Tools.set_ns_attribute(xmlnode,'office','value', '%f' % avalue.to_d)
157
+ xmlnode << Tools.prepare_ns_node('text','p', avalue.to_d.to_s+' '+self.format.currency)
152
158
  end
153
159
  else
154
160
  raise "Unknown cell mode #{self.mode}"
@@ -158,6 +164,7 @@ class Cell < XMLTiedItem
158
164
  Tools.set_ns_attribute(xmlnode,'office','value-type',typestring)
159
165
  Tools.set_ns_attribute(xmlnode,'calcext','value-type',typestring)
160
166
  end
167
+ ## TODO: using this is NOT in line with the general intent of forward compatibility
161
168
  def remove_all_value_attributes_and_content(node=xmlnode)
162
169
  if att = Tools.get_ns_attribute(node, 'office','value') then att.remove! end
163
170
  if att = Tools.get_ns_attribute(node, 'office','date-value') then att.remove! end
@@ -197,7 +204,7 @@ class Cell < XMLTiedItem
197
204
  end
198
205
  result = valueguess
199
206
 
200
- if valueguess.nil? # valueguess is most important if not succesfull then try guessing by type from node xml
207
+ if valueguess.nil? # valueguess is most important if not succesfull then try guessing by type from node xml
201
208
  typ = xmlnode.nil? ? 'N/A' : xmlnode.attributes['value-type']
202
209
  typeguess = case typ
203
210
  when nil then nil
@@ -229,7 +236,7 @@ class Cell < XMLTiedItem
229
236
  else # without value we just beleive typeguess
230
237
  typeguess
231
238
  end
232
- else # it not have a typeguess
239
+ else # it not have a typeguess
233
240
  if (avalue.nil?) # if nil then nil
234
241
  NilClass
235
242
  elsif (String(avalue) rescue false) # convertible to String
@@ -238,8 +245,11 @@ class Cell < XMLTiedItem
238
245
  nil
239
246
  end
240
247
  end
241
- elsif valueguess == Float and xmlnode.andand.attributes['value-type'] == 'percentage'
242
- result = :percentage
248
+ elsif valueguess == Float
249
+ case xmlnode.andand.attributes['value-type']
250
+ when 'percentage' then result = :percentage
251
+ when 'currency' then result = :currency
252
+ end
243
253
  end
244
254
  result
245
255
  end
@@ -96,6 +96,13 @@ class Row < XMLTiedItem
96
96
  parent.add_row_above(rowi)
97
97
  end
98
98
 
99
+ def next_row; relative(+1) end
100
+ alias :next :next_row
101
+
102
+ def relative(rowi_offset)
103
+ worksheet.row(self.rowi+rowi_offset)
104
+ end
105
+
99
106
  # @!group Private methods, which should not be called directly
100
107
  # @private
101
108
  # shifts internal represetation of row by diff. This should not be called directly
@@ -114,4 +121,4 @@ class Row < XMLTiedItem
114
121
 
115
122
  end
116
123
 
117
- end
124
+ end
@@ -1,3 +1,3 @@
1
1
  module Rspreadsheet
2
- VERSION = "0.4.3"
2
+ VERSION = "0.4.4"
3
3
  end
@@ -371,6 +371,20 @@ describe Rspreadsheet::Cell do
371
371
  @czkcell = @sheet2.cell('B23')
372
372
  @czkcell.value.should == 344.to_d
373
373
  @czkcell.format.currency.should == 'CZK'
374
+
375
+ @czkcell.value = 200.to_d
376
+ @czkcell.value.should == 200.to_d
377
+ @czkcell.format.currency.should == 'CZK'
378
+ end
379
+ it 'preserves currency format when float is assingned to it' do
380
+ @cell = @sheet2.cell('B23')
381
+ @cell.type.should eq :currency
382
+ @cell.format.currency.should == 'CZK'
383
+
384
+ @cell.value = 666.66.to_d
385
+ @cell.value.should == 666.66.to_d
386
+ @cell.type.should eq :currency
387
+ @cell.format.currency.should == 'CZK'
374
388
  end
375
389
  it 'is possible to manipulate borders of cells' do
376
390
  @cell = @sheet1.cell(1,1)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspreadsheet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jakub A.Těšínský
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-30 00:00:00.000000000 Z
11
+ date: 2017-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: libxml-ruby