rspreadsheet 0.4.3 → 0.4.4

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