spreadsheet 1.3.3 → 1.3.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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/lib/parseexcel/parseexcel.rb +66 -58
  3. data/lib/parseexcel/parser.rb +1 -1
  4. data/lib/parseexcel.rb +1 -1
  5. data/lib/spreadsheet/column.rb +11 -9
  6. data/lib/spreadsheet/compatibility.rb +3 -1
  7. data/lib/spreadsheet/datatypes.rb +149 -147
  8. data/lib/spreadsheet/encodings.rb +20 -16
  9. data/lib/spreadsheet/errors.rb +2 -2
  10. data/lib/spreadsheet/excel/error.rb +23 -22
  11. data/lib/spreadsheet/excel/internals/biff5.rb +11 -11
  12. data/lib/spreadsheet/excel/internals/biff8.rb +13 -13
  13. data/lib/spreadsheet/excel/internals.rb +451 -451
  14. data/lib/spreadsheet/excel/offset.rb +32 -31
  15. data/lib/spreadsheet/excel/password_hash.rb +18 -18
  16. data/lib/spreadsheet/excel/reader/biff5.rb +34 -35
  17. data/lib/spreadsheet/excel/reader/biff8.rb +234 -222
  18. data/lib/spreadsheet/excel/reader.rb +1320 -1274
  19. data/lib/spreadsheet/excel/rgb.rb +91 -91
  20. data/lib/spreadsheet/excel/row.rb +99 -91
  21. data/lib/spreadsheet/excel/sst_entry.rb +40 -38
  22. data/lib/spreadsheet/excel/workbook.rb +86 -76
  23. data/lib/spreadsheet/excel/worksheet.rb +125 -107
  24. data/lib/spreadsheet/excel/writer/biff8.rb +56 -55
  25. data/lib/spreadsheet/excel/writer/format.rb +273 -256
  26. data/lib/spreadsheet/excel/writer/n_worksheet.rb +837 -798
  27. data/lib/spreadsheet/excel/writer/workbook.rb +671 -635
  28. data/lib/spreadsheet/excel/writer/worksheet.rb +898 -861
  29. data/lib/spreadsheet/excel/writer.rb +1 -1
  30. data/lib/spreadsheet/excel.rb +18 -11
  31. data/lib/spreadsheet/font.rb +30 -26
  32. data/lib/spreadsheet/format.rb +74 -59
  33. data/lib/spreadsheet/link.rb +7 -5
  34. data/lib/spreadsheet/note.rb +6 -6
  35. data/lib/spreadsheet/noteObject.rb +5 -5
  36. data/lib/spreadsheet/row.rb +33 -23
  37. data/lib/spreadsheet/version.rb +1 -1
  38. data/lib/spreadsheet/workbook.rb +27 -13
  39. data/lib/spreadsheet/worksheet.rb +102 -68
  40. data/lib/spreadsheet/writer.rb +3 -0
  41. data/lib/spreadsheet.rb +12 -15
  42. data/test/excel/reader.rb +8 -8
  43. data/test/excel/row.rb +35 -31
  44. data/test/excel/writer/workbook.rb +18 -16
  45. data/test/excel/writer/worksheet.rb +10 -8
  46. data/test/font.rb +44 -32
  47. data/test/format.rb +38 -33
  48. data/test/integration.rb +627 -598
  49. data/test/row.rb +5 -3
  50. data/test/suite.rb +7 -7
  51. data/test/workbook.rb +15 -14
  52. data/test/workbook_protection.rb +5 -5
  53. data/test/worksheet.rb +36 -34
  54. metadata +48 -6
@@ -1,8 +1,8 @@
1
- require 'date'
2
- require 'spreadsheet/column'
3
- require 'spreadsheet/encodings'
4
- require 'spreadsheet/row'
5
- require 'spreadsheet/excel/password_hash'
1
+ require "date"
2
+ require "spreadsheet/column"
3
+ require "spreadsheet/encodings"
4
+ require "spreadsheet/row"
5
+ require "spreadsheet/excel/password_hash"
6
6
 
7
7
  module Spreadsheet
8
8
  ##
@@ -32,24 +32,24 @@ module Spreadsheet
32
32
  attr_reader :rows, :columns, :merged_cells, :margins, :pagesetup
33
33
  attr_reader :froze_top, :froze_left
34
34
  enum :visibility, :visible, :hidden, :strong_hidden
35
- def initialize opts={}
35
+ def initialize opts = {}
36
36
  @froze_top = 0
37
37
  @froze_left = 0
38
38
  @default_format = nil
39
39
  @selected = opts[:selected]
40
- @dimensions = [0,0,0,0]
40
+ @dimensions = [0, 0, 0, 0]
41
41
  @pagesetup = {
42
- :orig_data => [9, 100, 1, 1, 1, 0, 300, 300, 0.5, 0.5, 1],
43
- :orientation => :portrait,
44
- :adjust_to => 100
42
+ orig_data: [9, 100, 1, 1, 1, 0, 300, 300, 0.5, 0.5, 1],
43
+ orientation: :portrait,
44
+ adjust_to: 100
45
45
  }
46
46
  @margins = {
47
- :top => 1,
48
- :left => 0.75,
49
- :right => 0.75,
50
- :bottom => 1
47
+ top: 1,
48
+ left: 0.75,
49
+ right: 0.75,
50
+ bottom: 1
51
51
  }
52
- @name = sanitize_invalid_characters(opts[:name] || 'Worksheet')
52
+ @name = sanitize_invalid_characters(opts[:name] || "Worksheet")
53
53
  @workbook = opts[:workbook]
54
54
  @rows = []
55
55
  @columns = []
@@ -59,6 +59,7 @@ module Spreadsheet
59
59
  @password_hash = 0
60
60
  @visibility = opts[:visibility]
61
61
  end
62
+
62
63
  def has_frozen_panel?
63
64
  @froze_top > 0 or @froze_left > 0
64
65
  end
@@ -67,39 +68,47 @@ module Spreadsheet
67
68
  @froze_top = top.to_i
68
69
  @froze_left = left.to_i
69
70
  end
71
+
70
72
  def active # :nodoc:
71
73
  warn "Worksheet#active is deprecated. Please use Worksheet#selected instead."
72
74
  selected
73
75
  end
76
+
74
77
  def active= selected # :nodoc:
75
78
  warn "Worksheet#active= is deprecated. Please use Worksheet#selected= instead."
76
79
  self.selected = selected
77
80
  end
81
+
78
82
  ##
79
83
  # Add a Format to the Workbook. If you use Row#set_format, you should not
80
84
  # need to use this Method.
81
85
  def add_format fmt
82
86
  @workbook.add_format fmt if fmt
83
87
  end
88
+
84
89
  ##
85
90
  # Get the enriched value of the Cell at _row_, _column_.
86
91
  # See also Worksheet#[], Row#[].
87
92
  def cell row, column
88
93
  row(row)[column]
89
94
  end
95
+
90
96
  ##
91
97
  # Returns the Column at _idx_.
92
98
  def column idx
93
- @columns[idx] || Column.new(idx, default_format, :worksheet => self)
99
+ @columns[idx] || Column.new(idx, default_format, worksheet: self)
94
100
  end
101
+
95
102
  ##
96
103
  # The number of columns in this Worksheet which contain data.
97
104
  def column_count
98
105
  dimensions[3] - dimensions[2]
99
106
  end
107
+
100
108
  def column_updated idx, column
101
109
  @columns[idx] = column
102
110
  end
111
+
103
112
  ##
104
113
  # Delete the Row at _idx_ (0-based) from this Worksheet.
105
114
  def delete_row idx
@@ -107,33 +116,36 @@ module Spreadsheet
107
116
  updated_from idx
108
117
  res
109
118
  end
119
+
110
120
  ##
111
121
  # The default Format of this Worksheet, if you have set one.
112
122
  # Returns the Workbook's default Format otherwise.
113
123
  def default_format
114
124
  @default_format || @workbook.default_format
115
125
  end
126
+
116
127
  ##
117
128
  # Set the default Format of this Worksheet.
118
129
  def default_format= format
119
130
  @default_format = format
120
131
  add_format format
121
- format
122
132
  end
133
+
123
134
  ##
124
135
  # Is the worksheet protected?
125
136
  def protected?
126
137
  @protected
127
138
  end
139
+
128
140
  ##
129
141
  # Set worklist protection
130
- def protect! password = ''
142
+ def protect! password = ""
131
143
  @protected = true
132
144
  password = password.to_s
133
- if password.size == 0
134
- @password_hash = 0
145
+ @password_hash = if password.size == 0
146
+ 0
135
147
  else
136
- @password_hash = Excel::Password.password_hash password
148
+ Excel::Password.password_hash password
137
149
  end
138
150
  end
139
151
 
@@ -146,6 +158,7 @@ module Spreadsheet
146
158
  def dimensions
147
159
  @dimensions || recalculate_dimensions
148
160
  end
161
+
149
162
  ##
150
163
  # If no argument is given, #each iterates over all used Rows (from the first
151
164
  # used Row until but omitting the first unused Row, see also #dimensions).
@@ -153,7 +166,7 @@ module Spreadsheet
153
166
  # If the argument skip is given, #each iterates from that row until but
154
167
  # omitting the first unused Row, effectively skipping the first _skip_ Rows
155
168
  # from the top of the Worksheet.
156
- def each(skip=dimensions[0], &block)
169
+ def each(skip = dimensions[0], &block)
157
170
  rows = skip.upto(dimensions[1] - 1).map { |index| row(index) }.to_enum
158
171
 
159
172
  if block_given?
@@ -162,9 +175,11 @@ module Spreadsheet
162
175
  rows
163
176
  end
164
177
  end
178
+
165
179
  def encoding # :nodoc:
166
180
  @workbook.encoding
167
181
  end
182
+
168
183
  ##
169
184
  # Sets the default Format of the column at _idx_.
170
185
  #
@@ -175,39 +190,40 @@ module Spreadsheet
175
190
  #
176
191
  # Returns an instance of Column if _idx_ is an Integer, an Array of Columns
177
192
  # otherwise.
178
- def format_column idx, format=nil, opts={}
193
+ def format_column idx, format = nil, opts = {}
179
194
  opts[:worksheet] = self
180
195
  res = case idx
181
- when Integer
182
- column = nil
183
- if format
184
- column = Column.new(idx, format, opts)
185
- end
186
- @columns[idx] = column
187
- else
188
- idx.collect do |col| format_column col, format, opts end
189
- end
196
+ when Integer
197
+ column = nil
198
+ if format
199
+ column = Column.new(idx, format, opts)
200
+ end
201
+ @columns[idx] = column
202
+ else
203
+ idx.collect { |col| format_column col, format, opts }
204
+ end
190
205
  shorten @columns
191
206
  res
192
207
  end
208
+
193
209
  ##
194
210
  # Formats all Date, DateTime and Time cells with _format_ or the default
195
211
  # formats:
196
212
  # - 'DD.MM.YYYY' for Date
197
213
  # - 'DD.MM.YYYY hh:mm:ss' for DateTime and Time
198
- def format_dates! format=nil
214
+ def format_dates! format = nil
199
215
  new_formats = {}
200
- fmt_str_time = client('DD.MM.YYYY hh:mm:ss', 'UTF-8')
201
- fmt_str_date = client('DD.MM.YYYY', 'UTF-8')
216
+ fmt_str_time = client("DD.MM.YYYY hh:mm:ss", "UTF-8")
217
+ fmt_str_date = client("DD.MM.YYYY", "UTF-8")
202
218
  each do |row|
203
219
  row.each_with_index do |value, idx|
204
220
  unless row.formats[idx] || row.format(idx).date_or_time?
205
221
  numfmt = case value
206
- when DateTime, Time
207
- format || fmt_str_time
208
- when Date
209
- format || fmt_str_date
210
- end
222
+ when DateTime, Time
223
+ format || fmt_str_time
224
+ when Date
225
+ format || fmt_str_date
226
+ end
211
227
  case numfmt
212
228
  when Format
213
229
  row.set_format idx, numfmt
@@ -225,52 +241,61 @@ module Spreadsheet
225
241
  end
226
242
  end
227
243
  end
244
+
228
245
  ##
229
246
  # Insert a Row at _idx_ (0-based) containing _cells_
230
- def insert_row idx, cells=[]
247
+ def insert_row idx, cells = []
231
248
  res = @rows.insert idx, Row.new(self, idx, cells)
232
249
  updated_from idx
233
250
  res
234
251
  end
235
- def << cells=[]
252
+
253
+ def << cells = []
236
254
  insert_row @rows.size, cells
237
255
  end
256
+
238
257
  def inspect
239
258
  names = instance_variables
240
- names.delete '@rows'
259
+ names.delete "@rows"
241
260
  variables = names.collect do |name|
242
261
  "%s=%s" % [name, instance_variable_get(name)]
243
- end.join(' ')
262
+ end.join(" ")
244
263
  sprintf "#<%s:0x%014x %s @rows[%i]>", self.class, object_id,
245
- variables, row_count
264
+ variables, row_count
246
265
  end
266
+
247
267
  ## The last Row containing any data
248
268
  def last_row
249
269
  row(last_row_index)
250
270
  end
271
+
251
272
  ## The index of the last Row containing any data
252
273
  def last_row_index
253
274
  [dimensions[1] - 1, 0].max
254
275
  end
276
+
255
277
  ##
256
278
  # Replace the Row at _idx_ with the following arguments. Like #update_row,
257
279
  # but truncates the Row if there are fewer arguments than Cells in the Row.
258
280
  def replace_row idx, *cells
259
- if(row = @rows[idx]) && cells.size < row.size
281
+ if (row = @rows[idx]) && cells.size < row.size
260
282
  cells.concat Array.new(row.size - cells.size)
261
283
  end
262
284
  update_row idx, *cells
263
285
  end
286
+
264
287
  ##
265
288
  # The Row at _idx_ or a new Row.
266
289
  def row idx
267
290
  @rows[idx] || Row.new(self, idx)
268
291
  end
292
+
269
293
  ##
270
294
  # The number of Rows in this Worksheet which contain data.
271
295
  def row_count
272
296
  dimensions[1] - dimensions[0]
273
297
  end
298
+
274
299
  ##
275
300
  # Tell Worksheet that the Row at _idx_ has been updated and the #dimensions
276
301
  # need to be recalculated. You should not need to call this directly.
@@ -278,18 +303,20 @@ module Spreadsheet
278
303
  @dimensions = nil
279
304
  @rows[idx] = row
280
305
  end
306
+
281
307
  ##
282
308
  # Updates the Row at _idx_ with the following arguments.
283
309
  def update_row idx, *cells
284
- res = if row = @rows[idx]
285
- row[0, cells.size] = cells
286
- row
287
- else
288
- Row.new self, idx, cells
289
- end
310
+ res = if (row = @rows[idx])
311
+ row[0, cells.size] = cells
312
+ row
313
+ else
314
+ Row.new self, idx, cells
315
+ end
290
316
  row_updated idx, res
291
317
  res
292
318
  end
319
+
293
320
  ##
294
321
  # Renumbers all Rows starting at _idx_ and calls #row_updated for each of
295
322
  # them.
@@ -300,18 +327,21 @@ module Spreadsheet
300
327
  row_updated idx, row
301
328
  end
302
329
  end
330
+
303
331
  ##
304
332
  # Get the enriched value of the Cell at _row_, _column_.
305
333
  # See also Worksheet#cell, Row#[].
306
334
  def [] row, column
307
335
  row(row)[column]
308
336
  end
337
+
309
338
  ##
310
339
  # Set the value of the Cell at _row_, _column_ to _value_.
311
340
  # See also Row#[]=.
312
341
  def []= row, column, value
313
342
  row(row)[column] = value
314
343
  end
344
+
315
345
  ##
316
346
  # Merges multiple cells into one.
317
347
  def merge_cells start_row, start_col, end_row, end_col
@@ -323,66 +353,70 @@ module Spreadsheet
323
353
  recalculate_dimensions
324
354
 
325
355
  # detect first non-nil non-empty row if given first row is empty or nil
326
- if row(@dimensions[0]).empty? || row(@dimensions[0]).compact.join('').empty?
356
+ if row(@dimensions[0]).empty? || row(@dimensions[0]).compact.join("").empty?
327
357
  (@dimensions[0]...@dimensions[1]).each do |i|
328
- break unless row(i).empty? || row(i).compact.join('').empty?
358
+ break unless row(i).empty? || row(i).compact.join("").empty?
329
359
  @dimensions[0] = i
330
360
  end
331
361
  end
332
362
 
333
363
  # detect last non-nil non-empty row if given last row is empty or nil
334
- if row(@dimensions[1] - 1).empty? || row(@dimensions[1] - 1).compact.join('').empty?
364
+ if row(@dimensions[1] - 1).empty? || row(@dimensions[1] - 1).compact.join("").empty?
335
365
  row_size = @dimensions[1] - 1
336
366
  @dimensions[1] = @dimensions[0]
337
367
  # divide and conquer
338
- while(row_size - @dimensions[1] > 1) do
339
- if row(row_size).empty? || row(row_size).compact.join('').empty?
368
+ while row_size - @dimensions[1] > 1
369
+ if row(row_size).empty? || row(row_size).compact.join("").empty?
340
370
  row_size = @dimensions[1] + (((row_size - @dimensions[1]) + 1) / 2).to_i
341
371
  else
342
- _i = ((row_size - @dimensions[1]) / 2).to_i + 1
372
+ idx = ((row_size - @dimensions[1]) / 2).to_i + 1
343
373
  @dimensions[1] = row_size
344
- row_size = row_size + _i
374
+ row_size += idx
345
375
  end
346
376
  end
347
377
  @dimensions[1] = row_size + 1
348
378
  end
349
379
 
350
380
  # detect first non-empty non-nil column if first column is empty or nil
351
- if (@dimensions[0]..@dimensions[1]).inject(true){|t, j| t && row(j)[@dimensions[2]].nil?}
381
+ if (@dimensions[0]..@dimensions[1]).inject(true) { |t, j| t && row(j)[@dimensions[2]].nil? }
352
382
  (@dimensions[2]..@dimensions[3]).each do |i|
353
- break unless (@dimensions[0]..@dimensions[1]).inject(true){|t, j| t && row(j)[i].to_s.empty?}
383
+ break unless (@dimensions[0]..@dimensions[1]).inject(true) { |t, j| t && row(j)[i].to_s.empty? }
354
384
  @dimensions[2] = i
355
385
  end
356
386
  end
357
387
 
358
388
  # detect last non-empty non-nil column if last column is empty or nil
359
- if (@dimensions[0]..@dimensions[1]).inject(true){|t, j| t && row(j)[@dimensions[3]].nil?}
389
+ if (@dimensions[0]..@dimensions[1]).inject(true) { |t, j| t && row(j)[@dimensions[3]].nil? }
360
390
  (@dimensions[2]..@dimensions[3]).reverse_each do |i|
361
- break unless (@dimensions[0]..@dimensions[1]).inject(true){|t, j| t && row(j)[i].to_s.empty?}
391
+ break unless (@dimensions[0]..@dimensions[1]).inject(true) { |t, j| t && row(j)[i].to_s.empty? }
362
392
  @dimensions[3] = i
363
393
  end
364
- @dimensions[3] = @dimensions[3]
394
+ @dimensions[3]
365
395
  end
366
396
  end
367
397
 
368
398
  private
399
+
369
400
  def sanitize_invalid_characters(name) # :nodoc:
370
- name.gsub(Regexp.new('[\\\/\*\?\:\[\]]'.encode(Spreadsheet.client_encoding)), '_')
401
+ name.gsub(Regexp.new('[\\\/\*\?\:\[\]]'.encode(Spreadsheet.client_encoding)), "_")
371
402
  end
403
+
372
404
  def index_of_first ary # :nodoc:
373
405
  return unless ary
374
- ary.index(ary.find do |elm| elm end)
406
+ ary.index(ary.find { |elm| elm })
375
407
  end
408
+
376
409
  def recalculate_dimensions # :nodoc:
377
410
  shorten @rows
378
411
  @dimensions = []
379
412
  @dimensions[0] = index_of_first(@rows) || 0
380
413
  @dimensions[1] = @rows.size
381
414
  compact = @rows.compact
382
- @dimensions[2] = compact.collect do |row| row.first_used end.compact.min || 0
383
- @dimensions[3] = compact.collect do |row| row.first_unused end.max || 0
415
+ @dimensions[2] = compact.collect { |row| row.first_used }.compact.min || 0
416
+ @dimensions[3] = compact.collect { |row| row.first_unused }.max || 0
384
417
  @dimensions
385
418
  end
419
+
386
420
  def shorten ary # :nodoc:
387
421
  return unless ary
388
422
  while !ary.empty? && !ary.last
@@ -6,6 +6,7 @@ module Spreadsheet
6
6
  def initialize io_or_path
7
7
  @io_or_path = io_or_path
8
8
  end
9
+
9
10
  def write workbook
10
11
  if @io_or_path.respond_to? :seek
11
12
  @io_or_path.binmode
@@ -16,7 +17,9 @@ module Spreadsheet
16
17
  end
17
18
  end
18
19
  end
20
+
19
21
  private
22
+
20
23
  def write_workbook workbook, io
21
24
  reader = workbook.io
22
25
  unless io == reader
data/lib/spreadsheet.rb CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  ### Spreadsheet - A Library for reading and writing Spreadsheet Documents.
3
2
  #
4
3
  # Copyright (C) 2008-2010 ywesee GmbH
@@ -25,12 +24,12 @@
25
24
  # 8006 Zürich
26
25
  ### Switzerland
27
26
 
28
- require 'spreadsheet/version'
29
- require 'spreadsheet/errors'
27
+ require "spreadsheet/version"
28
+ require "spreadsheet/errors"
30
29
 
31
- require 'spreadsheet/excel/workbook'
32
- require 'spreadsheet/excel/reader'
33
- require 'spreadsheet/excel/rgb'
30
+ require "spreadsheet/excel/workbook"
31
+ require "spreadsheet/excel/reader"
32
+ require "spreadsheet/excel/rgb"
34
33
 
35
34
  # = Synopsis
36
35
  # The Spreadsheet Library is designed to read and write Spreadsheet Documents.
@@ -44,38 +43,36 @@ require 'spreadsheet/excel/rgb'
44
43
  # sheet = book.worksheet 0
45
44
  # sheet.each do |row| puts row[0] end
46
45
  module Spreadsheet
47
-
48
46
  ##
49
47
  # Default client Encoding. Change this value if your application uses a
50
48
  # different Encoding:
51
49
  # Spreadsheet.client_encoding = 'ISO-LATIN-1//TRANSLIT//IGNORE'
52
- @client_encoding = 'UTF-8'
53
- @enc_translit = 'TRANSLIT'
54
- @enc_ignore = 'IGNORE'
50
+ @client_encoding = "UTF-8"
51
+ @enc_translit = "TRANSLIT"
52
+ @enc_ignore = "IGNORE"
55
53
 
56
54
  class << self
57
-
58
55
  attr_accessor :client_encoding, :enc_translit, :enc_ignore
59
56
 
60
57
  ##
61
58
  # Parses a Spreadsheet Document and returns a Workbook object. At present,
62
59
  # only Excel-Documents can be read.
63
- def open io_or_path, mode="rb+"
60
+ def open io_or_path, mode = "rb+"
64
61
  if io_or_path.respond_to? :seek
65
62
  Excel::Workbook.open(io_or_path)
66
63
  elsif block_given?
67
64
  File.open(io_or_path, mode) do |fh|
68
- yield open(fh)
65
+ yield open(fh) # standard:disable Security/Open
69
66
  end
70
67
  else
71
- open File.open(io_or_path, mode)
68
+ open File.open(io_or_path, mode) # standard:disable Security/Open
72
69
  end
73
70
  end
74
71
 
75
72
  ##
76
73
  # Returns a Writer object for the specified path. At present, only the
77
74
  # Excel-Writer is available.
78
- def writer io_or_path, type=Excel
75
+ def writer io_or_path, type = Excel
79
76
  Excel::Writer::Workbook.new io_or_path
80
77
  end
81
78
  end
data/test/excel/reader.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
  # Excel::TestReader -- Spreadsheet -- 22.01.2013
3
3
 
4
- $: << File.expand_path('../../../lib', File.dirname(__FILE__))
4
+ $: << File.expand_path("../../../lib", File.dirname(__FILE__))
5
5
 
6
- require 'test/unit'
6
+ require "test/unit"
7
7
 
8
8
  module Spreadsheet
9
9
  module Excel
@@ -18,8 +18,8 @@ module Spreadsheet
18
18
 
19
19
  def test_not_empty_file_error_on_setup
20
20
  reader = Spreadsheet::Excel::Reader.new
21
- data = File.expand_path File.join('test', 'data')
22
- path = File.join data, 'test_empty.xls'
21
+ data = File.expand_path File.join("test", "data")
22
+ path = File.join data, "test_empty.xls"
23
23
  not_empty_io = File.open(path, "rb")
24
24
  assert_nothing_thrown do
25
25
  reader.setup not_empty_io
@@ -27,11 +27,11 @@ module Spreadsheet
27
27
  end
28
28
 
29
29
  def test_not_frozen_stream_error_on_setup
30
- return if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3.0')
30
+ return if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.3.0")
31
31
 
32
32
  reader = Spreadsheet::Excel::Reader.new
33
- data = File.expand_path File.join('test', 'data')
34
- path = File.join data, 'test_empty.xls'
33
+ data = File.expand_path File.join("test", "data")
34
+ path = File.join data, "test_empty.xls"
35
35
  content_string = File.read path
36
36
  frozen_io = StringIO.new(content_string.freeze)
37
37
  assert_nothing_thrown do
@@ -40,4 +40,4 @@ module Spreadsheet
40
40
  end
41
41
  end
42
42
  end
43
- end
43
+ end
data/test/excel/row.rb CHANGED
@@ -1,40 +1,44 @@
1
1
  #!/usr/bin/env ruby
2
2
  # Excel::TestRow -- Spreadsheet -- 12.10.2008 -- hwyss@ywesee.com
3
3
 
4
- $: << File.expand_path('../../lib', File.dirname(__FILE__))
4
+ $: << File.expand_path("../../lib", File.dirname(__FILE__))
5
5
 
6
- require 'test/unit'
7
- require 'spreadsheet'
6
+ require "test/unit"
7
+ require "spreadsheet"
8
8
 
9
9
  module Spreadsheet
10
10
  module Excel
11
- class TestRow < Test::Unit::TestCase
12
- def setup
13
- @workbook = Excel::Workbook.new
14
- @worksheet = Excel::Worksheet.new
15
- @workbook.add_worksheet @worksheet
16
- end
17
- def test_date
18
- row = Row.new @worksheet, 0, [nil, 27627.6789]
19
- assert_equal Date.new(1975,8,21), row.date(1)
20
- end
21
- def test_to_a
22
- row = Row.new @worksheet, 0, [nil, 1, 27627.6789]
23
- row.set_format(2, Format.new(:number_format => 'DD.MM.YYYY'))
24
- assert_equal [nil, 1, Date.new(1975, 8, 21)], row.to_a
25
- end
26
- def test_datetime
27
- row = Row.new @worksheet, 0, [nil, 27627.765]
28
- d1 = DateTime.new(1975,8,21) + 0.765
29
- d2 = row.datetime 1
30
- assert_equal d1, d2
31
- end
32
- def test_datetime_overflow
33
- row = Row.new @worksheet, 0, [nil, 40010.6666666666]
34
- d1 = DateTime.new(2009,07,16,16)
35
- d2 = row.datetime 1
36
- assert_equal d1, d2
37
- end
38
- end
11
+ class TestRow < Test::Unit::TestCase
12
+ def setup
13
+ @workbook = Excel::Workbook.new
14
+ @worksheet = Excel::Worksheet.new
15
+ @workbook.add_worksheet @worksheet
16
+ end
17
+
18
+ def test_date
19
+ row = Row.new @worksheet, 0, [nil, 27627.6789]
20
+ assert_equal Date.new(1975, 8, 21), row.date(1)
21
+ end
22
+
23
+ def test_to_a
24
+ row = Row.new @worksheet, 0, [nil, 1, 27627.6789]
25
+ row.set_format(2, Format.new(number_format: "DD.MM.YYYY"))
26
+ assert_equal [nil, 1, Date.new(1975, 8, 21)], row.to_a
27
+ end
28
+
29
+ def test_datetime
30
+ row = Row.new @worksheet, 0, [nil, 27627.765]
31
+ d1 = DateTime.new(1975, 8, 21) + 0.765
32
+ d2 = row.datetime 1
33
+ assert_equal d1, d2
34
+ end
35
+
36
+ def test_datetime_overflow
37
+ row = Row.new @worksheet, 0, [nil, 40010.6666666666]
38
+ d1 = DateTime.new(2009, 0o7, 16, 16)
39
+ d2 = row.datetime 1
40
+ assert_equal d1, d2
41
+ end
42
+ end
39
43
  end
40
44
  end