rubyXL 1.0.9 → 1.0.10

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.9
1
+ 1.0.10
@@ -304,7 +304,10 @@ module RubyXL
304
304
  end
305
305
 
306
306
  def inspect
307
- "#{@row},#{@column}: #{@value} = #{@formula}, datatype = #{@datatype}, style_index = #{@style_index}"
307
+ str = "(#{@row},#{@column}): #{@value}"
308
+ str += " =#{@formula}" if @formula
309
+ str += ", datatype = #{@datatype}, style_index = #{@style_index}"
310
+ return str
308
311
  end
309
312
 
310
313
  private
@@ -184,6 +184,7 @@ module RubyXL
184
184
  if File.exist?(filepath)
185
185
  FileUtils.rm_rf(dirpath)
186
186
  end
187
+ return filepath
187
188
  end
188
189
 
189
190
  #gets style object from style array given index
@@ -393,9 +393,36 @@ class Worksheet < PrivateClass
393
393
  return @sheet_data[row][column]
394
394
  end
395
395
 
396
+ def delete_row(row_index=0)
397
+ validate_workbook
398
+ validate_nonnegative(row_index)
399
+
400
+ if row_index >= @sheet_data.size
401
+ return nil
402
+ end
403
+
404
+ deleted = @sheet_data.delete_at(row_index)
405
+ row_num = row_index+1
406
+
407
+ row_num.upto(@sheet_data.size) do |index|
408
+ @row_styles[(index-1).to_s] = deep_copy(@row_styles[index.to_s])
409
+ end
410
+ @row_styles.delete(@sheet_data.size.to_s)
411
+
412
+ #change row styles
413
+ # raise row_styles.inspect
414
+
415
+ #change cell row numbers
416
+ (row_index...(@sheet_data.size-1)).each do |index|
417
+ @sheet_data[index].map {|c| c.row -= 1 if c}
418
+ end
419
+
420
+ return deleted
421
+ end
422
+
396
423
  #inserts row at row_index, pushes down, copies style from below (row previously at that index)
397
424
  #USE OF THIS METHOD will break formulas which reference cells which are being "pushed down"
398
- def insert_row(row_index)
425
+ def insert_row(row_index=0)
399
426
  validate_workbook
400
427
  validate_nonnegative(row_index)
401
428
 
@@ -450,9 +477,41 @@ class Worksheet < PrivateClass
450
477
  return @sheet_data[row_index]
451
478
  end
452
479
 
480
+ def delete_column(col_index=0)
481
+ validate_workbook
482
+ validate_nonnegative(col_index)
483
+
484
+ if col_index >= @sheet_data[0].size
485
+ return nil
486
+ end
487
+
488
+ #delete column
489
+ @sheet_data.map {|r| r.delete_at(col_index)}
490
+
491
+ #change column numbers for cells to right of deleted column
492
+ @sheet_data.each_with_index do |row,row_index|
493
+ (col_index...(row.size)).each do |index|
494
+ if @sheet_data[row_index][index].is_a?(Cell)
495
+ @sheet_data[row_index][index].column -= 1
496
+ end
497
+ end
498
+ end
499
+
500
+ #shift column styles
501
+ #shift col styles 'left'
502
+ @cols.each do |col|
503
+ if Integer(col[:attributes][:min]) >= col_index
504
+ col[:attributes][:min] = (Integer(col[:attributes][:min]) - 1).to_s
505
+ end
506
+ if Integer(col[:attributes][:max]) >= col_index
507
+ col[:attributes][:max] = (Integer(col[:attributes][:max]) - 1).to_s
508
+ end
509
+ end
510
+ end
511
+
453
512
  # inserts column at col_index, pushes everything right, takes styles from column to left
454
513
  # USE OF THIS METHOD will break formulas which reference cells which are being "pushed down"
455
- def insert_column(col_index)
514
+ def insert_column(col_index=0)
456
515
  validate_workbook
457
516
  validate_nonnegative(col_index)
458
517
  increase_columns(col_index)
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rubyXL}
8
- s.version = "1.0.9"
8
+ s.version = "1.0.10"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Vivek Bhagwat"]
12
- s.date = %q{2011-08-08}
12
+ s.date = %q{2011-08-10}
13
13
  s.description = %q{rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx/.xlsm) Documents}
14
14
  s.email = %q{bhagwat.vivek@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -953,6 +953,34 @@ describe RubyXL::Worksheet do
953
953
  end
954
954
  end
955
955
 
956
+ describe '.delete_row' do
957
+ it 'should delete a row at index specified, "pushing" everything else "up"' do
958
+ @worksheet.delete_row(0)
959
+ @worksheet[0][0].value.should == "1:0"
960
+ @worksheet[0][0].formula.should be_nil
961
+ @worksheet[0][0].row.should == 0
962
+ @worksheet[0][0].column.should == 0
963
+ end
964
+
965
+ it 'should delete a row at index specified, adjusting styles for other rows' do
966
+ @worksheet.change_row_font_name(1,"Courier")
967
+ @worksheet.delete_row(0)
968
+ @worksheet.get_row_font_name(0).should == "Courier"
969
+ end
970
+
971
+ it 'should preserve (rather than fix) formulas that reference cells in "pushed up" rows' do
972
+ @worksheet.add_cell(11,0,nil,'SUM(A1:A10)')
973
+ @worksheet.delete_row(0)
974
+ @worksheet[10][0].formula.should == 'SUM(A1:A10)'
975
+ end
976
+
977
+ it 'should cause error if a negative argument is passed in' do
978
+ lambda {
979
+ @worksheet.delete_row(-1)
980
+ }.should raise_error
981
+ end
982
+ end
983
+
956
984
  describe '.insert_row' do
957
985
  it 'should insert a row at index specified, "pushing" everything else "down"' do
958
986
  @worksheet.insert_row(0)
@@ -986,6 +1014,34 @@ describe RubyXL::Worksheet do
986
1014
  end
987
1015
  end
988
1016
 
1017
+ describe '.delete_column' do
1018
+ it 'should delete a column at index specified, "pushing" everything else "left"' do
1019
+ @worksheet.delete_column(0)
1020
+ @worksheet[0][0].value.should == "0:1"
1021
+ @worksheet[0][0].formula.should be_nil
1022
+ @worksheet[0][0].row.should == 0
1023
+ @worksheet[0][0].column.should == 0
1024
+ end
1025
+
1026
+ it 'should delete a column at index specified, "pushing" styles "left"' do
1027
+ @worksheet.change_column_font_name(1,"Courier")
1028
+ @worksheet.delete_column(0)
1029
+ @worksheet.get_column_font_name(0).should == "Courier"
1030
+ end
1031
+
1032
+ it 'should preserve (rather than fix) formulas that reference cells in "pushed left" columns' do
1033
+ @worksheet.add_cell(0,4,nil,'SUM(A1:D1)')
1034
+ @worksheet.delete_column(0)
1035
+ @worksheet[0][3].formula.should == 'SUM(A1:D1)'
1036
+ end
1037
+
1038
+ it 'should cause error if negative argument is passed in' do
1039
+ lambda {
1040
+ @worksheet.delete_column(-1)
1041
+ }.should raise_error
1042
+ end
1043
+ end
1044
+
989
1045
  describe '.insert_column' do
990
1046
  it 'should insert a column at index specified, "pushing" everything else "right"' do
991
1047
  @worksheet.insert_column(0)
@@ -1006,7 +1062,7 @@ describe RubyXL::Worksheet do
1006
1062
  @worksheet.get_column_font_name(0).should == 'Verdana' #not courier
1007
1063
  end
1008
1064
 
1009
- it 'should preserve (rather than fix) formulas that reference cells in "pushed right" rows' do
1065
+ it 'should preserve (rather than fix) formulas that reference cells in "pushed right" column' do
1010
1066
  @worksheet.add_cell(0,5,nil,'SUM(A1:D1)')
1011
1067
  @worksheet.insert_column(0)
1012
1068
  @worksheet[0][6].formula.should == 'SUM(A1:D1)'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyXL
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
4
+ hash: 3
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 9
10
- version: 1.0.9
9
+ - 10
10
+ version: 1.0.10
11
11
  platform: ruby
12
12
  authors:
13
13
  - Vivek Bhagwat
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-08 00:00:00 -04:00
18
+ date: 2011-08-10 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency