writeexcel 0.5.0 → 0.6.0

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 (130) hide show
  1. data/.gitattributes +1 -1
  2. data/.gitignore +24 -24
  3. data/README.rdoc +34 -55
  4. data/VERSION +1 -1
  5. data/charts/chartex.rb +316 -316
  6. data/charts/demo1.rb +46 -46
  7. data/charts/demo2.rb +65 -65
  8. data/charts/demo3.rb +117 -117
  9. data/charts/demo4.rb +119 -119
  10. data/charts/demo5.rb +48 -48
  11. data/examples/a_simple.rb +43 -43
  12. data/examples/autofilter.rb +265 -265
  13. data/examples/bigfile.rb +30 -30
  14. data/examples/chart_area.rb +121 -121
  15. data/examples/chart_bar.rb +120 -120
  16. data/examples/chart_column.rb +120 -120
  17. data/examples/chart_line.rb +120 -120
  18. data/examples/chart_pie.rb +108 -108
  19. data/examples/chart_scatter.rb +121 -121
  20. data/examples/chart_stock.rb +148 -148
  21. data/examples/chess.rb +142 -142
  22. data/examples/colors.rb +129 -129
  23. data/examples/comments1.rb +27 -27
  24. data/examples/comments2.rb +352 -352
  25. data/examples/copyformat.rb +52 -52
  26. data/examples/data_validate.rb +279 -279
  27. data/examples/date_time.rb +87 -87
  28. data/examples/defined_name.rb +32 -32
  29. data/examples/demo.rb +124 -124
  30. data/examples/diag_border.rb +36 -36
  31. data/examples/formats.rb +490 -490
  32. data/examples/formula_result.rb +30 -30
  33. data/examples/header.rb +137 -137
  34. data/examples/hide_sheet.rb +29 -29
  35. data/examples/hyperlink.rb +43 -43
  36. data/examples/images.rb +63 -63
  37. data/examples/indent.rb +31 -31
  38. data/examples/merge1.rb +40 -40
  39. data/examples/merge2.rb +45 -45
  40. data/examples/merge3.rb +66 -66
  41. data/examples/merge4.rb +83 -83
  42. data/examples/merge5.rb +80 -80
  43. data/examples/merge6.rb +67 -67
  44. data/examples/outline.rb +255 -255
  45. data/examples/outline_collapsed.rb +209 -209
  46. data/examples/panes.rb +113 -113
  47. data/examples/properties.rb +34 -34
  48. data/examples/properties_jp.rb +33 -33
  49. data/examples/protection.rb +47 -47
  50. data/examples/regions.rb +53 -53
  51. data/examples/repeat.rb +43 -43
  52. data/examples/right_to_left.rb +27 -27
  53. data/examples/row_wrap.rb +53 -53
  54. data/examples/stats.rb +74 -74
  55. data/examples/stocks.rb +81 -81
  56. data/examples/tab_colors.rb +31 -31
  57. data/examples/utf8.rb +15 -15
  58. data/examples/write_arrays.rb +83 -83
  59. data/lib/writeexcel/biffwriter.rb +232 -232
  60. data/lib/writeexcel/caller_info.rb +12 -12
  61. data/lib/writeexcel/chart.rb +2190 -2177
  62. data/lib/writeexcel/charts/area.rb +154 -154
  63. data/lib/writeexcel/charts/bar.rb +177 -177
  64. data/lib/writeexcel/charts/column.rb +156 -156
  65. data/lib/writeexcel/charts/external.rb +66 -66
  66. data/lib/writeexcel/charts/line.rb +154 -154
  67. data/lib/writeexcel/charts/pie.rb +169 -169
  68. data/lib/writeexcel/charts/scatter.rb +192 -192
  69. data/lib/writeexcel/charts/stock.rb +213 -213
  70. data/lib/writeexcel/colors.rb +64 -64
  71. data/lib/writeexcel/compatibility.rb +0 -255
  72. data/lib/writeexcel/debug_info.rb +37 -33
  73. data/lib/writeexcel/excelformulaparser.rb +587 -587
  74. data/lib/writeexcel/format.rb +13 -4
  75. data/lib/writeexcel/formula.rb +26 -9
  76. data/lib/writeexcel/helper.rb +68 -64
  77. data/lib/writeexcel/olewriter.rb +311 -311
  78. data/lib/writeexcel/properties.rb +242 -240
  79. data/lib/writeexcel/storage_lite.rb +984 -978
  80. data/lib/writeexcel/workbook.rb +3210 -3192
  81. data/lib/writeexcel/worksheet.rb +143 -51
  82. data/lib/writeexcel/write_file.rb +44 -40
  83. data/lib/writeexcel.rb +1159 -1159
  84. data/test/helper.rb +31 -28
  85. data/test/perl_output/README +31 -31
  86. data/test/test_00_IEEE_double.rb +13 -13
  87. data/test/test_01_add_worksheet.rb +10 -10
  88. data/test/test_02_merge_formats.rb +53 -53
  89. data/test/test_04_dimensions.rb +392 -392
  90. data/test/test_05_rows.rb +179 -179
  91. data/test/test_06_extsst.rb +77 -77
  92. data/test/test_11_date_time.rb +479 -479
  93. data/test/test_12_date_only.rb +501 -501
  94. data/test/test_13_date_seconds.rb +481 -481
  95. data/test/test_21_escher.rb +637 -637
  96. data/test/test_22_mso_drawing_group.rb +745 -745
  97. data/test/test_23_note.rb +73 -73
  98. data/test/test_24_txo.rb +75 -75
  99. data/test/test_25_position_object.rb +84 -84
  100. data/test/test_26_autofilter.rb +314 -314
  101. data/test/test_27_autofilter.rb +131 -131
  102. data/test/test_28_autofilter.rb +161 -161
  103. data/test/test_29_process_jpg.rb +683 -683
  104. data/test/test_30_validation_dval.rb +77 -77
  105. data/test/test_31_validation_dv_strings.rb +126 -126
  106. data/test/test_32_validation_dv_formula.rb +206 -206
  107. data/test/test_40_property_types.rb +188 -188
  108. data/test/test_41_properties.rb +235 -235
  109. data/test/test_42_set_properties.rb +437 -437
  110. data/test/test_50_name_stored.rb +299 -299
  111. data/test/test_51_name_print_area.rb +357 -357
  112. data/test/test_52_name_print_titles.rb +454 -454
  113. data/test/test_53_autofilter.rb +203 -203
  114. data/test/test_60_chart_generic.rb +578 -578
  115. data/test/test_61_chart_subclasses.rb +95 -95
  116. data/test/test_62_chart_formats.rb +272 -272
  117. data/test/test_63_chart_area_formats.rb +649 -649
  118. data/test/test_biff.rb +75 -75
  119. data/test/test_compatibility.rb +12 -627
  120. data/test/test_example_match.rb +3144 -3144
  121. data/test/test_formula.rb +61 -61
  122. data/test/test_ole.rb +106 -106
  123. data/test/test_storage_lite.rb +125 -125
  124. data/test/test_workbook.rb +139 -139
  125. data/test/test_worksheet.rb +110 -110
  126. data/utils/add_magic_comment.rb +80 -80
  127. data/writeexcel.gemspec +4 -6
  128. data/writeexcel.rdoc +58 -15
  129. metadata +9 -6
  130. data/test/test_new_encoding.rb +0 -205
@@ -35,7 +35,8 @@ module Writeexcel
35
35
 
36
36
  class Worksheet < BIFFWriter
37
37
  require 'writeexcel/helper'
38
- private :convert_to_ascii_if_ascii
38
+
39
+ NonAscii = /[^!"#\$%&'\(\)\*\+,\-\.\/\:\;<=>\?@0-9A-Za-z_\[\\\]\{\}^` ~\0\n]/
39
40
 
40
41
  RowMax = 65536 # :nodoc:
41
42
  ColMax = 256 # :nodoc:
@@ -1199,7 +1200,7 @@ class Worksheet < BIFFWriter
1199
1200
  # NOTE:
1200
1201
  # It isn't sufficient to just specify the filter condition. You must also
1201
1202
  # hide any rows that don't match the filter condition. Rows are hidden using
1202
- # the set_row() visible parameter. Spreadsheet::WriteExcel cannot do this
1203
+ # the set_row() visible parameter. WriteExcel cannot do this
1203
1204
  # automatically since it isn't part of the file format. See the autofilter.rb
1204
1205
  # program in the examples directory of the distro for an example.
1205
1206
  #
@@ -1674,14 +1675,22 @@ class Worksheet < BIFFWriter
1674
1675
  end
1675
1676
 
1676
1677
  def set_header_footer_common(type, string, margin, encoding)
1677
- string = convert_to_ascii_if_ascii(string)
1678
+ ruby_19 { string = convert_to_ascii_if_ascii(string) }
1678
1679
 
1679
1680
  limit = encoding != 0 ? 255 *2 : 255
1680
1681
 
1681
1682
  # Handle utf8 strings
1682
- if string.encoding == Encoding::UTF_8
1683
- string = utf8_to_16be(string)
1684
- encoding = 1
1683
+ ruby_18 do
1684
+ if string =~ NonAscii
1685
+ string = utf8_to_16be(string)
1686
+ encoding = 1
1687
+ end
1688
+ end
1689
+ ruby_19 do
1690
+ if string.encoding == Encoding::UTF_8
1691
+ string = utf8_to_16be(string)
1692
+ encoding = 1
1693
+ end
1685
1694
  end
1686
1695
 
1687
1696
  if string.bytesize >= limit
@@ -2695,12 +2704,20 @@ class Worksheet < BIFFWriter
2695
2704
  encoding = 0x0
2696
2705
  str_error = 0
2697
2706
 
2698
- str = convert_to_ascii_if_ascii(str)
2707
+ ruby_19 {str = convert_to_ascii_if_ascii(str) }
2699
2708
 
2700
2709
  # Handle utf8 strings
2701
- if str.encoding == Encoding::UTF_8
2702
- str_utf16le = utf8_to_16le(str)
2703
- return write_utf16le_string(row, col, str_utf16le, args[3])
2710
+ ruby_18 do
2711
+ if str =~ NonAscii
2712
+ str_utf16le = utf8_to_16le(str)
2713
+ return write_utf16le_string(row, col, str_utf16le, args[3])
2714
+ end
2715
+ end
2716
+ ruby_19 do
2717
+ if str.encoding == Encoding::UTF_8
2718
+ str_utf16le = utf8_to_16le(str)
2719
+ return write_utf16le_string(row, col, str_utf16le, args[3])
2720
+ end
2704
2721
  end
2705
2722
 
2706
2723
  # Check that row and col are valid and store max and min values
@@ -3036,7 +3053,7 @@ class Worksheet < BIFFWriter
3036
3053
  # the syntax of the function refer to the Excel help files or the
3037
3054
  # following: http://office.microsoft.com/en-us/assistance/CH062528031033.aspx
3038
3055
  #
3039
- # If your formula doesn't work in Spreadsheet::WriteExcel try the following:
3056
+ # If your formula doesn't work in WriteExcel try the following:
3040
3057
  #
3041
3058
  # 1. Verify that the formula works in Excel (or Gnumeric or OpenOffice.org).
3042
3059
  # 2. Ensure that it isn't on the Caveats list shown above.
@@ -3049,7 +3066,7 @@ class Worksheet < BIFFWriter
3049
3066
  #
3050
3067
  # ==Improving performance when working with formulas
3051
3068
  #
3052
- # Writing a large number of formulas with Spreadsheet::WriteExcel can be
3069
+ # Writing a large number of formulas with WriteExcel can be
3053
3070
  # slow. This is due to the fact that each formula has to be parsed and
3054
3071
  # with the current implementation this is computationally expensive.
3055
3072
  #
@@ -3846,7 +3863,7 @@ class Worksheet < BIFFWriter
3846
3863
  # be calculated by the module and thus must be supplied by the user.
3847
3864
  #
3848
3865
  def get_formula_string(string) #:nodoc:
3849
- string = convert_to_ascii_if_ascii(string)
3866
+ ruby_19 { string = convert_to_ascii_if_ascii(string) }
3850
3867
 
3851
3868
  record = 0x0207 # Record identifier
3852
3869
  length = 0x00 # Bytes to follow
@@ -3855,9 +3872,17 @@ class Worksheet < BIFFWriter
3855
3872
  encoding = 0 # String encoding.
3856
3873
 
3857
3874
  # Handle utf8 strings.
3858
- if string.encoding == Encoding::UTF_8
3859
- string = utf8_to_16be(string)
3860
- encoding = 1
3875
+ ruby_18 do
3876
+ if string =~ NonAscii
3877
+ string = utf8_to_16be(string)
3878
+ encoding = 1
3879
+ end
3880
+ end
3881
+ ruby_19 do
3882
+ if string.encoding == Encoding::UTF_8
3883
+ string = utf8_to_16be(string)
3884
+ encoding = 1
3885
+ end
3861
3886
  end
3862
3887
 
3863
3888
  length = 0x03 + string.bytesize # Length of the record data
@@ -4310,7 +4335,7 @@ class Worksheet < BIFFWriter
4310
4335
  # See also write_url() above for a general description and return values.
4311
4336
  #
4312
4337
  def write_url_web(row1, col1, row2, col2, url, str = nil, format = nil) #:nodoc:
4313
- url = convert_to_ascii_if_ascii(url)
4338
+ ruby_19 { url = convert_to_ascii_if_ascii(url) }
4314
4339
 
4315
4340
  record = 0x01B8 # Record identifier
4316
4341
  length = 0x00000 # Bytes to follow
@@ -4335,15 +4360,26 @@ class Worksheet < BIFFWriter
4335
4360
  encoding = 0
4336
4361
 
4337
4362
  # Convert an Utf8 URL type and to a null terminated wchar string.
4338
- if url.encoding == Encoding::UTF_8
4339
- url = url.encode('UTF-16BE')
4340
- url += "\0\0".force_encoding('UTF-16BE') # URL is null terminated.
4341
- encoding = 1
4363
+ ruby_18 do
4364
+ if url =~ NonAscii
4365
+ url = utf8_to_16be(url)
4366
+ url += "\0\0" # URL is null terminated.
4367
+ encoding = 1
4368
+ end
4369
+ end
4370
+ ruby_19 do
4371
+ if url.encoding == Encoding::UTF_8
4372
+ url = url.encode('UTF-16BE')
4373
+ url += "\0\0".force_encoding('UTF-16BE') # URL is null terminated.
4374
+ encoding = 1
4375
+ end
4342
4376
  end
4343
4377
 
4344
4378
  # Convert an Ascii URL type and to a null terminated wchar string.
4345
4379
  if encoding == 0
4346
- url = url.force_encoding('BINARY') + "\0".force_encoding('BINARY')
4380
+ url =
4381
+ ruby_18 { url + "\0" } ||
4382
+ ruby_19 { url.force_encoding('BINARY') + "\0".force_encoding('BINARY') }
4347
4383
  url = url.unpack('c*').pack('v*')
4348
4384
  end
4349
4385
 
@@ -4404,11 +4440,21 @@ class Worksheet < BIFFWriter
4404
4440
  encoding = 0
4405
4441
 
4406
4442
  # Convert an Utf8 URL type and to a null terminated wchar string.
4407
- if str.encoding == Encoding::UTF_8
4408
- # Quote sheet name if not already, i.e., Sheet!A1 to 'Sheet!A1'.
4409
- url.sub!(/^(.+)!/, "'\1'!") if not url =~ /^'/;
4410
- url = url.encode('UTF-16LE') + "\0\0" # URL is null terminated.
4411
- encoding = 1
4443
+ ruby_18 do
4444
+ if str =~ NonAscii
4445
+ # Quote sheet name if not already, i.e., Sheet!A1 to 'Sheet!A1'.
4446
+ url.sub!(/^(.+)!/, "'\1'!") if not url =~ /^'/;
4447
+ url = utf8_to_16be(url) + "\0\0" # URL is null terminated.
4448
+ encoding = 1
4449
+ end
4450
+ end
4451
+ ruby_19 do
4452
+ if str.encoding == Encoding::UTF_8
4453
+ # Quote sheet name if not already, i.e., Sheet!A1 to 'Sheet!A1'.
4454
+ url.sub!(/^(.+)!/, "'\1'!") if not url =~ /^'/;
4455
+ url = url.encode('UTF-16LE') + "\0\0".encode('UTF-16LE') # URL is null terminated.
4456
+ encoding = 1
4457
+ end
4412
4458
  end
4413
4459
 
4414
4460
  # Convert an Ascii URL type and to a null terminated wchar string.
@@ -6553,18 +6599,28 @@ class Worksheet < BIFFWriter
6553
6599
  !(token.to_s =~ /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/)
6554
6600
  # Excel treats all tokens as strings if the operator is equality, =.
6555
6601
  string = token.to_s
6556
- string = convert_to_ascii_if_ascii(string)
6602
+ ruby_19 { string = convert_to_ascii_if_ascii(string) }
6557
6603
 
6558
6604
  encoding = 0
6559
6605
  length = string.bytesize
6560
6606
 
6561
6607
  # Handle utf8 strings
6562
- if string.encoding == Encoding::UTF_8
6563
- string = utf8_to_16be(string)
6564
- encodign = 1
6608
+ ruby_18 do
6609
+ if string =~ NonAscii
6610
+ string = utf8_to_16be(string)
6611
+ encodign = 1
6612
+ end
6613
+ end
6614
+ ruby_19 do
6615
+ if string.encoding == Encoding::UTF_8
6616
+ string = utf8_to_16be(string)
6617
+ encodign = 1
6618
+ end
6565
6619
  end
6566
6620
 
6567
- string = [encoding].pack('C') + string.force_encoding('BINARY')
6621
+ string =
6622
+ ruby_18 { [encoding].pack('C') + string } ||
6623
+ ruby_19 { [encoding].pack('C') + string.force_encoding('BINARY') }
6568
6624
  doper = pack_string_doper(operator, length)
6569
6625
  else
6570
6626
  string = ''
@@ -7638,7 +7694,9 @@ class Worksheet < BIFFWriter
7638
7694
  while string.bytesize > limit
7639
7695
  string[0 .. limit] = ""
7640
7696
  tmp_str = string
7641
- data = [encoding].pack("C") + tmp_str.force_encoding('ASCII-8BIT')
7697
+ data = [encoding].pack("C") +
7698
+ ruby_18 { tmp_str } ||
7699
+ ruby_19 { tmp_str.force_encoding('ASCII-8BIT') }
7642
7700
  length = data.bytesize
7643
7701
  header = [record, length].pack('vv')
7644
7702
 
@@ -7646,7 +7704,9 @@ class Worksheet < BIFFWriter
7646
7704
  end
7647
7705
 
7648
7706
  # Pack the record.
7649
- data = [encoding].pack("C") + string.force_encoding('ASCII-8BIT')
7707
+ data =
7708
+ ruby_18 { [encoding].pack("C") + string } ||
7709
+ ruby_19 { [encoding].pack("C") + string.force_encoding('ASCII-8BIT') }
7650
7710
  length = data.bytesize
7651
7711
  header = [record, length].pack('vv')
7652
7712
 
@@ -7714,7 +7774,9 @@ class Worksheet < BIFFWriter
7714
7774
  num_chars = num_chars / 2 if author_enc != 0 && !author_enc.nil?
7715
7775
 
7716
7776
  # Null terminate the author string.
7717
- author = author.force_encoding('BINARY') + "\0".force_encoding('BINARY')
7777
+ author =
7778
+ ruby_18 { author + "\0" } ||
7779
+ ruby_19 { author.force_encoding('BINARY') + "\0".force_encoding('BINARY') }
7718
7780
 
7719
7781
  # Pack the record.
7720
7782
  data = [row, col, visible, obj_id, num_chars, author_enc].pack("vvvvvC")
@@ -7765,17 +7827,26 @@ class Worksheet < BIFFWriter
7765
7827
  params[:height] = default_height if params[:height].nil? || params[:height] == 0
7766
7828
 
7767
7829
  # Check that utf16 strings have an even number of bytes.
7768
- convert_to_ascii_if_ascii(string)
7769
7830
  if params[:encoding] != 0
7770
7831
  raise "Uneven number of bytes in comment string" if string.bytesize % 2 != 0
7771
7832
 
7772
7833
  # Change from UTF-16BE to UTF-16LE
7773
7834
  string = string.unpack('n*').pack('v*')
7774
7835
  # Handle utf8 strings
7775
- elsif string.encoding == Encoding::UTF_8
7776
- string = NKF.nkf('-w16L0 -m0 -W', string)
7777
- string.force_encoding('UTF-16LE')
7778
- params[:encoding] = 1
7836
+ else
7837
+ ruby_18 do
7838
+ if string =~ NonAscii
7839
+ string = NKF.nkf('-w16L0 -m0 -W', string)
7840
+ params[:encoding] = 1
7841
+ end
7842
+ end
7843
+ ruby_19 do
7844
+ if string.encoding == Encoding::UTF_8
7845
+ string = NKF.nkf('-w16L0 -m0 -W', string)
7846
+ string.force_encoding('UTF-16LE')
7847
+ params[:encoding] = 1
7848
+ end
7849
+ end
7779
7850
  end
7780
7851
 
7781
7852
  params[:author] = convert_to_ascii_if_ascii(params[:author])
@@ -7785,10 +7856,20 @@ class Worksheet < BIFFWriter
7785
7856
 
7786
7857
  # Change from UTF-16BE to UTF-16LE
7787
7858
  params[:author] = params[:author].unpack('n*').pack('v*')
7788
- elsif params[:author].encoding == Encoding::UTF_8
7789
- params[:author] = NKF.nkf('-w16L0 -m0 -W', params[:author])
7790
- params[:author].force_encoding('UTF-16LE')
7791
- params[:author_encoding] = 1
7859
+ else
7860
+ ruby_18 do
7861
+ if params[:author] =~ NonAscii
7862
+ params[:author] = NKF.nkf('-w16L0 -m0 -W', params[:author])
7863
+ params[:author_encoding] = 1
7864
+ end
7865
+ end
7866
+ ruby_19 do
7867
+ if params[:author].encoding == Encoding::UTF_8
7868
+ params[:author] = NKF.nkf('-w16L0 -m0 -W', params[:author])
7869
+ params[:author].force_encoding('UTF-16LE')
7870
+ params[:author_encoding] = 1
7871
+ end
7872
+ end
7792
7873
  end
7793
7874
 
7794
7875
  # Limit the string to the max number of chars (not bytes).
@@ -8716,7 +8797,8 @@ class Worksheet < BIFFWriter
8716
8797
 
8717
8798
  # The default empty string is "\0".
8718
8799
  if string.nil? || string == ''
8719
- string = "\0".encode('BINARY')
8800
+ string =
8801
+ ruby_18 { "\0" } || ruby_19 { "\0".encode('BINARY') }
8720
8802
  end
8721
8803
 
8722
8804
  # Excel limits DV captions to 32 chars and messages to 255.
@@ -8726,16 +8808,26 @@ class Worksheet < BIFFWriter
8726
8808
 
8727
8809
  str_length = string.bytesize
8728
8810
 
8729
- string = convert_to_ascii_if_ascii(string)
8811
+ ruby_19 { string = convert_to_ascii_if_ascii(string) }
8730
8812
 
8731
8813
  # Handle utf8 strings
8732
- if string.encoding == Encoding::UTF_8
8733
- str_length = string.gsub(/[^\Wa-zA-Z_\d]/, ' ').bytesize # jlength
8734
- string = utf8_to_16le(string)
8735
- encoding = 1
8814
+ ruby_18 do
8815
+ if string =~ NonAscii
8816
+ str_length = string.gsub(/[^\Wa-zA-Z_\d]/, ' ').bytesize # jlength
8817
+ string = utf8_to_16le(string)
8818
+ encoding = 1
8819
+ end
8820
+ end
8821
+ ruby_19 do
8822
+ if string.encoding == Encoding::UTF_8
8823
+ str_length = string.gsub(/[^\Wa-zA-Z_\d]/, ' ').bytesize # jlength
8824
+ string = utf8_to_16le(string)
8825
+ encoding = 1
8826
+ end
8736
8827
  end
8737
8828
 
8738
- [str_length, encoding].pack('vC') + string.force_encoding('BINARY')
8829
+ ruby_18 { [str_length, encoding].pack('vC') + string } ||
8830
+ ruby_19 { [str_length, encoding].pack('vC') + string.force_encoding('BINARY') }
8739
8831
  end
8740
8832
  # private :pack_dv_string
8741
8833
 
@@ -1,40 +1,44 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- class WriteFile
4
- ###############################################################################
5
- #
6
- # _prepend($data)
7
- #
8
- # General storage function
9
- #
10
- def prepend(*args)
11
- data = args.collect{ |arg| arg.dup.force_encoding('ASCII-8BIT') }.join
12
- data = add_continue(data) if data.bytesize > @limit
13
-
14
- @datasize += data.bytesize
15
- @data = data + @data
16
-
17
- data
18
- end
19
-
20
- ###############################################################################
21
- #
22
- # _append($data)
23
- #
24
- # General storage function
25
- #
26
- def append(*args)
27
- data = args.collect{ |arg| arg.dup.force_encoding('ASCII-8BIT') }.join
28
- # Add CONTINUE records if necessary
29
- data = add_continue(data) if data.bytesize > @limit
30
- if @using_tmpfile
31
- @filehandle.write data
32
- @datasize += data.bytesize
33
- else
34
- @datasize += data.bytesize
35
- @data = @data + data
36
- end
37
-
38
- data
39
- end
40
- end
1
+ # -*- coding: utf-8 -*-
2
+
3
+ class WriteFile
4
+ ###############################################################################
5
+ #
6
+ # _prepend($data)
7
+ #
8
+ # General storage function
9
+ #
10
+ def prepend(*args)
11
+ data =
12
+ ruby_18 { args.join } ||
13
+ ruby_19 { args.collect{ |arg| arg.dup.force_encoding('ASCII-8BIT') }.join }
14
+ data = add_continue(data) if data.bytesize > @limit
15
+
16
+ @datasize += data.bytesize
17
+ @data = data + @data
18
+
19
+ data
20
+ end
21
+
22
+ ###############################################################################
23
+ #
24
+ # _append($data)
25
+ #
26
+ # General storage function
27
+ #
28
+ def append(*args)
29
+ data =
30
+ ruby_18 { args.join } ||
31
+ ruby_19 { args.collect{ |arg| arg.dup.force_encoding('ASCII-8BIT') }.join }
32
+ # Add CONTINUE records if necessary
33
+ data = add_continue(data) if data.bytesize > @limit
34
+ if @using_tmpfile
35
+ @filehandle.write data
36
+ @datasize += data.bytesize
37
+ else
38
+ @datasize += data.bytesize
39
+ @data = @data + data
40
+ end
41
+
42
+ data
43
+ end
44
+ end