write_xlsx 0.97.0 → 1.04.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Changes +78 -0
- data/LICENSE.txt +1 -1
- data/README.md +2 -2
- data/examples/a_simple.rb +1 -1
- data/examples/add_vba_project.rb +1 -1
- data/examples/array_formula.rb +1 -1
- data/examples/chart_area.rb +5 -2
- data/examples/chart_bar.rb +5 -2
- data/examples/chart_clustered.rb +1 -1
- data/examples/chart_column.rb +5 -2
- data/examples/chart_combined.rb +1 -1
- data/examples/chart_data_table.rb +9 -3
- data/examples/chart_data_tools.rb +25 -7
- data/examples/chart_doughnut.rb +17 -5
- data/examples/chart_gauge.rb +73 -0
- data/examples/chart_line.rb +90 -12
- data/examples/chart_pareto.rb +1 -1
- data/examples/chart_pie.rb +9 -3
- data/examples/chart_radar.rb +13 -4
- data/examples/chart_scatter.rb +5 -2
- data/examples/chart_secondary_axis.rb +5 -2
- data/examples/chart_stock.rb +1 -1
- data/examples/chart_styles.rb +1 -1
- data/examples/colors.rb +1 -1
- data/examples/data_validate.rb +1 -1
- data/examples/date_time.rb +1 -1
- data/examples/demo.rb +4 -1
- data/examples/formats.rb +1 -1
- data/examples/headers.rb +1 -1
- data/examples/hide_row_col.rb +1 -1
- data/examples/hide_sheet.rb +1 -1
- data/examples/hyperlink1.rb +1 -1
- data/examples/indent.rb +1 -1
- data/examples/macros.rb +1 -1
- data/examples/merge1.rb +1 -1
- data/examples/merge2.rb +1 -1
- data/examples/merge3.rb +1 -1
- data/examples/merge4.rb +1 -1
- data/examples/merge5.rb +1 -1
- data/examples/merge6.rb +1 -1
- data/examples/outline.rb +1 -1
- data/examples/outline_collapsed.rb +1 -1
- data/examples/panes.rb +1 -1
- data/examples/properties.rb +1 -1
- data/examples/regions.rb +1 -1
- data/examples/rich_strings.rb +1 -1
- data/examples/right_to_left.rb +1 -1
- data/examples/shape1.rb +1 -1
- data/examples/shape2.rb +1 -1
- data/examples/shape3.rb +1 -1
- data/examples/shape4.rb +1 -1
- data/examples/shape5.rb +1 -1
- data/examples/shape6.rb +1 -1
- data/examples/shape7.rb +1 -1
- data/examples/shape8.rb +1 -1
- data/examples/shape_all.rb +1 -1
- data/examples/sparklines1.rb +1 -1
- data/examples/sparklines2.rb +1 -1
- data/examples/stats.rb +1 -1
- data/examples/stats_ext.rb +1 -1
- data/examples/stocks.rb +1 -1
- data/examples/tab_colors.rb +1 -1
- data/examples/tables.rb +78 -43
- data/lib/write_xlsx/chart.rb +43 -35
- data/lib/write_xlsx/chart/area.rb +1 -1
- data/lib/write_xlsx/chart/axis.rb +2 -2
- data/lib/write_xlsx/chart/bar.rb +1 -1
- data/lib/write_xlsx/chart/column.rb +1 -1
- data/lib/write_xlsx/chart/doughnut.rb +1 -1
- data/lib/write_xlsx/chart/legend.rb +14 -0
- data/lib/write_xlsx/chart/line.rb +16 -2
- data/lib/write_xlsx/chart/pie.rb +30 -15
- data/lib/write_xlsx/chart/radar.rb +1 -1
- data/lib/write_xlsx/chart/scatter.rb +1 -1
- data/lib/write_xlsx/chart/stock.rb +1 -1
- data/lib/write_xlsx/chartsheet.rb +35 -7
- data/lib/write_xlsx/drawing.rb +86 -30
- data/lib/write_xlsx/format.rb +9 -9
- data/lib/write_xlsx/package/comments.rb +61 -58
- data/lib/write_xlsx/package/conditional_format.rb +9 -1
- data/lib/write_xlsx/package/relationships.rb +4 -4
- data/lib/write_xlsx/package/styles.rb +26 -8
- data/lib/write_xlsx/package/table.rb +13 -7
- data/lib/write_xlsx/package/vml.rb +20 -19
- data/lib/write_xlsx/shape.rb +4 -3
- data/lib/write_xlsx/sheets.rb +18 -16
- data/lib/write_xlsx/sparkline.rb +1 -1
- data/lib/write_xlsx/utility.rb +96 -7
- data/lib/write_xlsx/version.rb +1 -1
- data/lib/write_xlsx/workbook.rb +99 -49
- data/lib/write_xlsx/worksheet.rb +225 -145
- data/lib/write_xlsx/worksheet/data_validation.rb +10 -14
- data/lib/write_xlsx/worksheet/hyperlink.rb +16 -37
- data/test/chart/test_write_legend_pos.rb +9 -1
- data/test/chartsheet/test_write_sheet_protection.rb +91 -0
- data/test/drawing/test_drawing_chart_01.rb +6 -2
- data/test/drawing/test_drawing_image_01.rb +12 -3
- data/test/drawing/test_drawing_shape_01.rb +8 -5
- data/test/drawing/test_drawing_shape_02.rb +12 -5
- data/test/drawing/test_drawing_shape_03.rb +8 -5
- data/test/drawing/test_drawing_shape_04.rb +8 -24
- data/test/drawing/test_drawing_shape_05.rb +8 -5
- data/test/drawing/test_drawing_shape_06.rb +11 -6
- data/test/drawing/test_drawing_shape_07.rb +11 -6
- data/test/drawing/test_write_a_graphic_frame_locks.rb +1 -1
- data/test/drawing/test_write_c_chart.rb +1 -1
- data/test/drawing/test_write_c_nv_graphic_frame_pr.rb +1 -1
- data/test/drawing/test_write_c_nv_pr.rb +1 -1
- data/test/drawing/test_write_col.rb +1 -1
- data/test/drawing/test_write_col_off.rb +1 -1
- data/test/drawing/test_write_ext.rb +1 -1
- data/test/drawing/test_write_pos.rb +1 -1
- data/test/drawing/test_write_row.rb +1 -1
- data/test/drawing/test_write_row_off.rb +1 -1
- data/test/drawing/test_write_xfrm_extension.rb +1 -1
- data/test/drawing/test_write_xfrm_offset.rb +1 -1
- data/test/package/comments/test_comments_01.rb +54 -0
- data/test/package/comments/test_comments_02.rb +54 -0
- data/test/perl_output/chart_gauge.xlsx +0 -0
- data/test/perl_output/chart_line.xlsx +0 -0
- data/test/perl_output/comments2.xlsx +0 -0
- data/test/perl_output/formats.xlsx +0 -0
- data/test/perl_output/tables.xlsx +0 -0
- data/test/regression/images/happy.jpg +0 -0
- data/test/regression/images/red2.png +0 -0
- data/test/regression/test_array_formula03.rb +36 -0
- data/test/regression/test_autofilter08.rb +110 -0
- data/test/regression/test_autofilter09.rb +110 -0
- data/test/regression/test_autofilter10.rb +110 -0
- data/test/regression/test_chart_axis26.rb +10 -8
- data/test/regression/test_chart_axis27.rb +1 -1
- data/test/regression/test_chart_axis28.rb +1 -1
- data/test/regression/test_chart_axis29.rb +1 -1
- data/test/regression/test_chart_axis33.rb +1 -1
- data/test/regression/test_chart_axis42.rb +44 -0
- data/test/regression/test_chart_axis43.rb +44 -0
- data/test/regression/test_chart_axis44.rb +54 -0
- data/test/regression/test_chart_axis45.rb +54 -0
- data/test/regression/test_chart_axis46.rb +54 -0
- data/test/regression/test_chart_combined10.rb +43 -0
- data/test/regression/test_chart_combined11.rb +63 -0
- data/test/regression/test_chart_data_labels25.rb +1 -1
- data/test/regression/test_chart_doughnut07.rb +37 -0
- data/test/regression/test_chart_font09.rb +1 -1
- data/test/regression/test_chart_legend03.rb +41 -0
- data/test/regression/test_chart_legend04.rb +41 -0
- data/test/regression/test_chart_legend05.rb +41 -0
- data/test/regression/test_chart_legend06.rb +41 -0
- data/test/regression/test_chart_legend07.rb +38 -0
- data/test/regression/test_chart_line05.rb +43 -0
- data/test/regression/test_chart_line06.rb +43 -0
- data/test/regression/test_chart_size03.rb +4 -1
- data/test/regression/test_comment13.rb +36 -0
- data/test/regression/test_comment14.rb +29 -0
- data/test/regression/test_comment15.rb +28 -0
- data/test/regression/test_comment16.rb +34 -0
- data/test/regression/test_cond_format19.rb +64 -0
- data/test/regression/test_cond_format20.rb +43 -0
- data/test/regression/test_format15.rb +26 -0
- data/test/regression/test_header_image15.rb +36 -0
- data/test/regression/test_header_image16.rb +42 -0
- data/test/regression/test_header_image17.rb +46 -0
- data/test/regression/test_header_image18.rb +48 -0
- data/test/regression/test_header_image19.rb +36 -0
- data/test/regression/test_hyperlink32.rb +27 -0
- data/test/regression/test_hyperlink33.rb +28 -0
- data/test/regression/test_hyperlink34.rb +33 -0
- data/test/regression/test_hyperlink35.rb +39 -0
- data/test/regression/test_hyperlink36.rb +34 -0
- data/test/regression/test_hyperlink37.rb +33 -0
- data/test/regression/test_hyperlink38.rb +27 -0
- data/test/regression/test_hyperlink39.rb +27 -0
- data/test/regression/test_hyperlink40.rb +27 -0
- data/test/regression/test_hyperlink41.rb +27 -0
- data/test/regression/test_hyperlink42.rb +27 -0
- data/test/regression/test_hyperlink43.rb +27 -0
- data/test/regression/test_hyperlink44.rb +27 -0
- data/test/regression/test_hyperlink45.rb +27 -0
- data/test/regression/test_hyperlink47.rb +27 -0
- data/test/regression/test_hyperlink48.rb +31 -0
- data/test/regression/test_hyperlink49.rb +29 -0
- data/test/regression/test_image06.rb +5 -5
- data/test/regression/test_image08.rb +5 -4
- data/test/regression/test_image15.rb +4 -2
- data/test/regression/test_image28.rb +1 -1
- data/test/regression/test_image36.rb +26 -0
- data/test/regression/test_image44.rb +28 -0
- data/test/regression/test_image45.rb +29 -0
- data/test/regression/test_image46.rb +29 -0
- data/test/regression/test_image47.rb +28 -0
- data/test/regression/test_image48.rb +32 -0
- data/test/regression/test_image49.rb +38 -0
- data/test/regression/test_image50.rb +24 -0
- data/test/regression/test_image51.rb +30 -0
- data/test/regression/test_object_position01.rb +26 -0
- data/test/regression/test_object_position02.rb +26 -0
- data/test/regression/test_object_position03.rb +26 -0
- data/test/regression/test_object_position04.rb +44 -0
- data/test/regression/test_object_position06.rb +28 -0
- data/test/regression/test_object_position07.rb +28 -0
- data/test/regression/test_object_position08.rb +47 -0
- data/test/regression/test_object_position09.rb +50 -0
- data/test/regression/test_object_position10.rb +28 -0
- data/test/regression/test_object_position12.rb +25 -0
- data/test/regression/test_object_position13.rb +25 -0
- data/test/regression/test_object_position14.rb +25 -0
- data/test/regression/test_object_position15.rb +29 -0
- data/test/regression/test_object_position16.rb +29 -0
- data/test/regression/test_object_position17.rb +29 -0
- data/test/regression/test_object_position18.rb +29 -0
- data/test/regression/test_object_position19.rb +29 -0
- data/test/regression/test_object_position20.rb +29 -0
- data/test/regression/test_shape_connect01.rb +4 -2
- data/test/regression/test_table23.rb +56 -0
- data/test/regression/test_table24.rb +27 -0
- data/test/regression/test_table25.rb +27 -0
- data/test/regression/xlsx_files/array_formula03.xlsx +0 -0
- data/test/regression/xlsx_files/autofilter08.xlsx +0 -0
- data/test/regression/xlsx_files/autofilter09.xlsx +0 -0
- data/test/regression/xlsx_files/autofilter10.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis26.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis27.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis28.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis29.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis33.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis42.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis43.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis44.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis45.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis46.xlsx +0 -0
- data/test/regression/xlsx_files/chart_combined10.xlsx +0 -0
- data/test/regression/xlsx_files/chart_combined11.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels25.xlsx +0 -0
- data/test/regression/xlsx_files/chart_doughnut07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font09.xlsx +0 -0
- data/test/regression/xlsx_files/chart_legend03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_legend04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_legend05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_legend06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_legend07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_line05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_line06.xlsx +0 -0
- data/test/regression/xlsx_files/comment13.xlsx +0 -0
- data/test/regression/xlsx_files/comment14.xlsx +0 -0
- data/test/regression/xlsx_files/comment15.xlsx +0 -0
- data/test/regression/xlsx_files/comment16.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format19.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format20.xlsx +0 -0
- data/test/regression/xlsx_files/format15.xlsx +0 -0
- data/test/regression/xlsx_files/header_image15.xlsx +0 -0
- data/test/regression/xlsx_files/header_image16.xlsx +0 -0
- data/test/regression/xlsx_files/header_image17.xlsx +0 -0
- data/test/regression/xlsx_files/header_image18.xlsx +0 -0
- data/test/regression/xlsx_files/header_image19.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink32.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink33.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink34.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink35.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink36.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink37.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink38.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink39.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink40.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink41.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink42.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink43.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink44.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink45.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink46.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink47.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink48.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink49.xlsx +0 -0
- data/test/regression/xlsx_files/image06.xlsx +0 -0
- data/test/regression/xlsx_files/image36.xlsx +0 -0
- data/test/regression/xlsx_files/image44.xlsx +0 -0
- data/test/regression/xlsx_files/image45.xlsx +0 -0
- data/test/regression/xlsx_files/image46.xlsx +0 -0
- data/test/regression/xlsx_files/image47.xlsx +0 -0
- data/test/regression/xlsx_files/image48.xlsx +0 -0
- data/test/regression/xlsx_files/image49.xlsx +0 -0
- data/test/regression/xlsx_files/image50.xlsx +0 -0
- data/test/regression/xlsx_files/image51.xlsx +0 -0
- data/test/regression/xlsx_files/object_position01.xlsx +0 -0
- data/test/regression/xlsx_files/object_position02.xlsx +0 -0
- data/test/regression/xlsx_files/object_position03.xlsx +0 -0
- data/test/regression/xlsx_files/object_position04.xlsx +0 -0
- data/test/regression/xlsx_files/object_position06.xlsx +0 -0
- data/test/regression/xlsx_files/object_position07.xlsx +0 -0
- data/test/regression/xlsx_files/object_position08.xlsx +0 -0
- data/test/regression/xlsx_files/object_position09.xlsx +0 -0
- data/test/regression/xlsx_files/object_position10.xlsx +0 -0
- data/test/regression/xlsx_files/object_position12.xlsx +0 -0
- data/test/regression/xlsx_files/object_position13.xlsx +0 -0
- data/test/regression/xlsx_files/object_position14.xlsx +0 -0
- data/test/regression/xlsx_files/object_position15.xlsx +0 -0
- data/test/regression/xlsx_files/object_position16.xlsx +0 -0
- data/test/regression/xlsx_files/object_position17.xlsx +0 -0
- data/test/regression/xlsx_files/object_position18.xlsx +0 -0
- data/test/regression/xlsx_files/object_position19.xlsx +0 -0
- data/test/regression/xlsx_files/object_position20.xlsx +0 -0
- data/test/regression/xlsx_files/table23.xlsx +0 -0
- data/test/regression/xlsx_files/table24.xlsx +0 -0
- data/test/regression/xlsx_files/table25.xlsx +0 -0
- data/test/test_example_match.rb +955 -780
- data/test/workbook/test_check_sheetname.rb +51 -0
- data/test/workbook/test_write_workbook_view.rb +36 -0
- data/test/worksheet/test_write_data_validation_02.rb +17 -0
- data/test/worksheet/test_write_sheet_view.rb +19 -1
- data/write_xlsx.gemspec +1 -0
- metadata +349 -7
- data/test/package/comments/test_write_text_t.rb +0 -44
data/examples/merge6.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# method with Unicode strings.
|
8
8
|
#
|
9
9
|
# reverse(c), December 2005, John McNamara, jmcnamara@cpan.org
|
10
|
-
# convert to ruby by Hideo NAKAMURA,
|
10
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/outline.rb
CHANGED
@@ -61,7 +61,7 @@
|
|
61
61
|
# See the main Excel::Writer::XLSX documentation for more information.
|
62
62
|
#
|
63
63
|
# reverse(c), April 2003, John McNamara, jmcnamara@cpan.org
|
64
|
-
# convert to ruby by Hideo NAKAMURA,
|
64
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
65
65
|
#
|
66
66
|
|
67
67
|
require 'write_xlsx'
|
@@ -9,7 +9,7 @@
|
|
9
9
|
# outlines.pl example program for more general examples.
|
10
10
|
#
|
11
11
|
# reverse ('(c)'), March 2008, John McNamara, jmcnamara@cpan.org
|
12
|
-
# convert to ruby by Hideo NAKAMURA,
|
12
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
13
13
|
#
|
14
14
|
|
15
15
|
require 'write_xlsx'
|
data/examples/panes.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# Example of using the Excel::Writer::XLSX module to create worksheet panes.
|
7
7
|
#
|
8
8
|
# reverse(c), May 2001, John McNamara, jmcnamara@cpan.org
|
9
|
-
# convert to ruby by Hideo NAKAMURA,
|
9
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
10
10
|
#
|
11
11
|
|
12
12
|
require 'write_xlsx'
|
data/examples/properties.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# An example of adding document properties to a Excel::Writer::XLSX file.
|
7
7
|
#
|
8
8
|
# reverse('©'), August 2008, John McNamara, jmcnamara@cpan.org
|
9
|
-
# convert to ruby by Hideo NAKAMURA,
|
9
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
10
10
|
#
|
11
11
|
|
12
12
|
require 'write_xlsx'
|
data/examples/regions.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# Excel workbook with multiple worksheets.
|
8
8
|
#
|
9
9
|
# reverse(c), March 2001, John McNamara, jmcnamara@cpan.org
|
10
|
-
# convert to ruby by Hideo NAKAMURA,
|
10
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/rich_strings.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# strings with multiple formatting.
|
8
8
|
#
|
9
9
|
# reverse(c), February 2011, John McNamara, jmcnamara@cpan.org
|
10
|
-
# convert to ruby by Hideo NAKAMURA,
|
10
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/right_to_left.rb
CHANGED
data/examples/shape1.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# add shapes to an Excel xlsx file.
|
8
8
|
#
|
9
9
|
# reverse('c'), May 2012, John McNamara, jmcnamara@cpan.org
|
10
|
-
# converted to Ruby by Hideo NAKAMURA,
|
10
|
+
# converted to Ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/shape2.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# modify shapes properties in an Excel xlsx file.
|
8
8
|
#
|
9
9
|
# reverse('c'), May 2012, John McNamara, jmcnamara@cpan.org
|
10
|
-
# converted to Ruby by Hideo NAKAMURA,
|
10
|
+
# converted to Ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/shape3.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# scale shapes in an Excel xlsx file.
|
8
8
|
#
|
9
9
|
# reverse('c'), May 2012, John McNamara, jmcnamara@cpan.org
|
10
|
-
# converted to Ruby by Hideo NAKAMURA,
|
10
|
+
# converted to Ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/shape4.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# demonstrate stenciling in an Excel xlsx file.
|
8
8
|
#
|
9
9
|
# reverse('c'), May 2012, John McNamara, jmcnamara@cpan.org
|
10
|
-
# converted to Ruby by Hideo NAKAMURA,
|
10
|
+
# converted to Ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/shape5.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# add shapes (objects and top/bottom connectors) to an Excel xlsx file.
|
8
8
|
#
|
9
9
|
# reverse('c'), May 2012, John McNamara, jmcnamara@cpan.org
|
10
|
-
# converted to Ruby by Hideo NAKAMURA,
|
10
|
+
# converted to Ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/shape6.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# add shapes (objects and right/left connectors) to an Excel xlsx file.
|
8
8
|
#
|
9
9
|
# reverse('c'), May 2012, John McNamara, jmcnamara@cpan.org
|
10
|
-
# converted to Ruby by Hideo NAKAMURA,
|
10
|
+
# converted to Ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/shape7.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# add shapes and one-to-many connectors to an Excel xlsx file.
|
8
8
|
#
|
9
9
|
# reverse('c'), May 2012, John McNamara, jmcnamara@cpan.org
|
10
|
-
# converted to Ruby by Hideo NAKAMURA,
|
10
|
+
# converted to Ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/shape8.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# add shapes and one-to-many connectors to an Excel xlsx file.
|
8
8
|
#
|
9
9
|
# reverse('c'), May 2012, John McNamara, jmcnamara@cpan.org
|
10
|
-
# converted to Ruby by Hideo NAKAMURA,
|
10
|
+
# converted to Ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'write_xlsx'
|
data/examples/shape_all.rb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
# part of the ECMA-376 standard.
|
11
11
|
#
|
12
12
|
# reverse(c), May 2012, John McNamara, jmcnamara@cpan.org
|
13
|
-
# converted to ruby by Hideo NAKAMURA,
|
13
|
+
# converted to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
14
14
|
#
|
15
15
|
require 'write_xlsx'
|
16
16
|
|
data/examples/sparklines1.rb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
# of more complex sparkline formatting.
|
11
11
|
#
|
12
12
|
# reverse ('(c)'), November 2011, John McNamara, jmcnamara@cpan.org
|
13
|
-
# convert to ruby by Hideo NAKAMURA,
|
13
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
14
14
|
#
|
15
15
|
|
16
16
|
require 'write_xlsx'
|
data/examples/sparklines2.rb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
# options that can be applied to sparklines.
|
11
11
|
#
|
12
12
|
# reverse ('(c)'), November 2011, John McNamara, jmcnamara@cpan.org
|
13
|
-
# convert to ruby by Hideo NAKAMURA,
|
13
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
14
14
|
#
|
15
15
|
|
16
16
|
require 'write_xlsx'
|
data/examples/stats.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# A Simple example of how to use functions with the WriteXLSX gem.
|
7
7
|
#
|
8
8
|
# reverse(c), March 2001, John McNamara, jmcnamara@cpan.org
|
9
|
-
# convert to ruby by Hideo NAKAMURA,
|
9
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
10
10
|
#
|
11
11
|
|
12
12
|
require 'write_xlsx'
|
data/examples/stats_ext.rb
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
# other worksheets within the same workbook.
|
10
10
|
#
|
11
11
|
# reverse(c), March 2001, John McNamara, jmcnamara@cpan.org
|
12
|
-
# convert to ruby by Hideo NAKAMURA,
|
12
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
13
13
|
#
|
14
14
|
|
15
15
|
require 'write_xlsx'
|
data/examples/stocks.rb
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
# with colours to indicate if a share price has gone up or down.
|
10
10
|
#
|
11
11
|
# reverse(c), March 2001, John McNamara, jmcnamara@cpan.org
|
12
|
-
# convert to ruby by Hideo NAKAMURA,
|
12
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
13
13
|
#
|
14
14
|
|
15
15
|
require 'write_xlsx'
|
data/examples/tab_colors.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
# Example of how to set Excel worksheet tab colours.
|
6
6
|
#
|
7
7
|
# reverse(c), May 2006, John McNamara, jmcnamara@cpan.org
|
8
|
-
# convert to ruby by Hideo NAKAMURA,
|
8
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
9
9
|
#
|
10
10
|
|
11
11
|
require 'write_xlsx'
|
data/examples/tables.rb
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
# structure that can be references in a formula or formatted collectively.
|
10
10
|
#
|
11
11
|
# reverse(c), March 2001, John McNamara, jmcnamara@cpan.org
|
12
|
-
# convert to ruby by Hideo NAKAMURA,
|
12
|
+
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
|
13
13
|
#
|
14
14
|
|
15
15
|
require 'write_xlsx'
|
@@ -28,6 +28,7 @@
|
|
28
28
|
worksheet10 = workbook.add_worksheet
|
29
29
|
worksheet11 = workbook.add_worksheet
|
30
30
|
worksheet12 = workbook.add_worksheet
|
31
|
+
worksheet13 = workbook.add_worksheet
|
31
32
|
|
32
33
|
currency_format = workbook.add_format(:num_format => '$#,##0')
|
33
34
|
|
@@ -60,7 +61,7 @@
|
|
60
61
|
#
|
61
62
|
# Example 2.
|
62
63
|
#
|
63
|
-
caption = 'Default table with data.'
|
64
|
+
caption = 'Default table with data.'
|
64
65
|
|
65
66
|
# Set the columns widths.
|
66
67
|
worksheet2.set_column('B:G', 12)
|
@@ -130,7 +131,7 @@
|
|
130
131
|
#
|
131
132
|
# Example 6.
|
132
133
|
#
|
133
|
-
caption = 'Table with banded columns but without default banded rows.'
|
134
|
+
caption = 'Table with banded columns but without default banded rows.'
|
134
135
|
|
135
136
|
# Set the columns widths.
|
136
137
|
worksheet6.set_column('B:G', 12)
|
@@ -149,7 +150,7 @@
|
|
149
150
|
#
|
150
151
|
# Example 7.
|
151
152
|
#
|
152
|
-
caption = 'Table with user defined column headers'
|
153
|
+
caption = 'Table with user defined column headers'
|
153
154
|
|
154
155
|
# Set the columns widths.
|
155
156
|
worksheet7.set_column('B:G', 12)
|
@@ -176,7 +177,7 @@
|
|
176
177
|
#
|
177
178
|
# Example 8.
|
178
179
|
#
|
179
|
-
caption = 'Table with user defined column headers'
|
180
|
+
caption = 'Table with user defined column headers'
|
180
181
|
|
181
182
|
# Set the columns widths.
|
182
183
|
worksheet8.set_column('B:G', 12)
|
@@ -208,7 +209,7 @@
|
|
208
209
|
#
|
209
210
|
# Example 9.
|
210
211
|
#
|
211
|
-
caption = 'Table with totals row (but no caption or totals).'
|
212
|
+
caption = 'Table with totals row (but no caption or totals).'
|
212
213
|
|
213
214
|
# Set the columns widths.
|
214
215
|
worksheet9.set_column('B:G', 12)
|
@@ -241,7 +242,7 @@
|
|
241
242
|
#
|
242
243
|
# Example 10.
|
243
244
|
#
|
244
|
-
caption = 'Table with totals row with user captions and functions.'
|
245
|
+
caption = 'Table with totals row with user captions and functions.'
|
245
246
|
|
246
247
|
# Set the columns widths.
|
247
248
|
worksheet10.set_column('B:G', 12)
|
@@ -275,7 +276,7 @@
|
|
275
276
|
#
|
276
277
|
# Example 11.
|
277
278
|
#
|
278
|
-
caption = 'Table with alternative Excel style.'
|
279
|
+
caption = 'Table with alternative Excel style.'
|
279
280
|
|
280
281
|
# Set the columns widths.
|
281
282
|
worksheet11.set_column('B:G', 12)
|
@@ -310,7 +311,7 @@
|
|
310
311
|
#
|
311
312
|
# Example 12.
|
312
313
|
#
|
313
|
-
caption = 'Table with
|
314
|
+
caption = 'Table with no Excel style.'
|
314
315
|
|
315
316
|
# Set the columns widths.
|
316
317
|
worksheet12.set_column('B:G', 12)
|
@@ -320,40 +321,74 @@
|
|
320
321
|
|
321
322
|
# Add a table to the worksheet.
|
322
323
|
worksheet12.add_table(
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
324
|
+
'B3:G8',
|
325
|
+
{
|
326
|
+
:data => data,
|
327
|
+
:style => 'None',
|
328
|
+
:total_row => 1,
|
329
|
+
:columns => [
|
330
|
+
{ :header => 'Product', :total_string => 'Totals' },
|
331
|
+
{ :header => 'Quarter 1', :total_function => 'sum' },
|
332
|
+
{ :header => 'Quarter 2', :total_function => 'sum' },
|
333
|
+
{ :header => 'Quarter 3', :total_function => 'sum' },
|
334
|
+
{ :header => 'Quarter 4', :total_function => 'sum' },
|
335
|
+
{
|
336
|
+
:header => 'Year',
|
337
|
+
:formula => '=SUM(Table12[@[Quarter 1]:[Quarter 4]])',
|
338
|
+
:total_function => 'sum'
|
339
|
+
}
|
340
|
+
]
|
341
|
+
}
|
342
|
+
)
|
343
|
+
|
344
|
+
###############################################################################
|
345
|
+
#
|
346
|
+
# Example 13.
|
347
|
+
#
|
348
|
+
caption = 'Table with column formats.'
|
349
|
+
|
350
|
+
# Set the columns widths.
|
351
|
+
worksheet13.set_column('B:G', 12)
|
352
|
+
|
353
|
+
# Write the caption.
|
354
|
+
worksheet13.write('B1', caption)
|
355
|
+
|
356
|
+
# Add a table to the worksheet.
|
357
|
+
worksheet13.add_table(
|
358
|
+
'B3:G8',
|
359
|
+
{
|
360
|
+
:data => data,
|
361
|
+
:total_row => 1,
|
362
|
+
:columns => [
|
363
|
+
{ :header => 'Product', :total_string => 'Totals' },
|
364
|
+
{
|
365
|
+
:header => 'Quarter 1',
|
366
|
+
:total_function => 'sum',
|
367
|
+
:format => currency_format,
|
368
|
+
},
|
369
|
+
{
|
370
|
+
:header => 'Quarter 2',
|
371
|
+
:total_function => 'sum',
|
372
|
+
:format => currency_format,
|
373
|
+
},
|
374
|
+
{
|
375
|
+
:header => 'Quarter 3',
|
376
|
+
:total_function => 'sum',
|
377
|
+
:format => currency_format,
|
378
|
+
},
|
379
|
+
{
|
380
|
+
:header => 'Quarter 4',
|
381
|
+
:total_function => 'sum',
|
382
|
+
:format => currency_format,
|
383
|
+
},
|
384
|
+
{
|
385
|
+
:header => 'Year',
|
386
|
+
:formula => '=SUM(Table8[@[Quarter 1]:[Quarter 4]])',
|
387
|
+
:total_function => 'sum',
|
388
|
+
:format => currency_format,
|
389
|
+
}
|
390
|
+
]
|
391
|
+
}
|
357
392
|
)
|
358
393
|
|
359
394
|
workbook.close
|
data/lib/write_xlsx/chart.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
require 'write_xlsx/package/xml_writer_simple'
|
3
3
|
require 'write_xlsx/gradient'
|
4
|
+
require 'write_xlsx/chart/legend'
|
4
5
|
require 'write_xlsx/utility'
|
5
6
|
require 'write_xlsx/chart/axis'
|
6
7
|
require 'write_xlsx/chart/caption'
|
@@ -162,6 +163,7 @@ def numeric_or_downcase(val)
|
|
162
163
|
|
163
164
|
class Chart
|
164
165
|
include Writexlsx::Utility
|
166
|
+
include Writexlsx::Gradient
|
165
167
|
|
166
168
|
attr_accessor :id, :name # :nodoc:
|
167
169
|
attr_writer :index, :palette, :protection # :nodoc:
|
@@ -352,16 +354,8 @@ def set_title(params)
|
|
352
354
|
# Set the properties of the chart legend.
|
353
355
|
#
|
354
356
|
def set_legend(params)
|
355
|
-
|
356
|
-
|
357
|
-
else
|
358
|
-
@legend_position = params[:position] || 'right'
|
359
|
-
end
|
360
|
-
@legend_delete_series = params[:delete_series]
|
361
|
-
@legend_font = convert_font_args(params[:font])
|
362
|
-
|
363
|
-
# Set the legend layout.
|
364
|
-
@legend_layout = layout_properties(params[:layout])
|
357
|
+
# Convert the user default properties to internal properties.
|
358
|
+
legend_properties(params)
|
365
359
|
end
|
366
360
|
|
367
361
|
#
|
@@ -611,7 +605,7 @@ def display_setup
|
|
611
605
|
@y_scale = 1
|
612
606
|
@x_offset = 0
|
613
607
|
@y_offset = 0
|
614
|
-
@
|
608
|
+
@legend = Legend.new
|
615
609
|
@smooth_allowed = 0
|
616
610
|
@cross_between = 'between'
|
617
611
|
@date_category = false
|
@@ -1184,8 +1178,8 @@ def write_cat_axis(params) # :nodoc:
|
|
1184
1178
|
return unless axis_ids
|
1185
1179
|
return if axis_ids.empty?
|
1186
1180
|
|
1187
|
-
position
|
1188
|
-
|
1181
|
+
position = @cat_axis_position
|
1182
|
+
is_y_axis = @horiz_cat_axis
|
1189
1183
|
|
1190
1184
|
# Overwrite the default axis position with a user supplied value.
|
1191
1185
|
position = x_axis.position || position
|
@@ -1208,9 +1202,9 @@ def write_cat_axis(params) # :nodoc:
|
|
1208
1202
|
|
1209
1203
|
# Write the axis title elements.
|
1210
1204
|
if x_axis.formula
|
1211
|
-
write_title_formula(x_axis,
|
1205
|
+
write_title_formula(x_axis, is_y_axis, @x_axis, x_axis.layout)
|
1212
1206
|
elsif x_axis.name
|
1213
|
-
write_title_rich(x_axis,
|
1207
|
+
write_title_rich(x_axis, is_y_axis, x_axis.layout)
|
1214
1208
|
end
|
1215
1209
|
|
1216
1210
|
# Write the c:numFmt element.
|
@@ -1240,7 +1234,7 @@ def write_cat_axis(params) # :nodoc:
|
|
1240
1234
|
# Write the c:auto element.
|
1241
1235
|
write_auto(1) unless x_axis.text_axis
|
1242
1236
|
# Write the c:labelAlign element.
|
1243
|
-
write_label_align(
|
1237
|
+
write_label_align(x_axis.label_align)
|
1244
1238
|
# Write the c:labelOffset element.
|
1245
1239
|
write_label_offset(100)
|
1246
1240
|
# Write the c:tickLblSkip element.
|
@@ -1574,6 +1568,12 @@ def write_auto(val) # :nodoc:
|
|
1574
1568
|
# Write the <c:labelAlign> element.
|
1575
1569
|
#
|
1576
1570
|
def write_label_align(val) # :nodoc:
|
1571
|
+
val ||= 'ctr'
|
1572
|
+
if val == 'right'
|
1573
|
+
val = 'r'
|
1574
|
+
elsif val == 'left'
|
1575
|
+
val = 'l'
|
1576
|
+
end
|
1577
1577
|
@writer.empty_tag('c:lblAlgn', [ ['val', val] ])
|
1578
1578
|
end
|
1579
1579
|
|
@@ -1676,10 +1676,10 @@ def write_c_minor_time_unit(val) # :nodoc:
|
|
1676
1676
|
# Write the <c:legend> element.
|
1677
1677
|
#
|
1678
1678
|
def write_legend # :nodoc:
|
1679
|
-
position = @
|
1679
|
+
position = @legend.position.sub(/^overlay_/, '')
|
1680
1680
|
return if position == 'none' || (not position_allowed.has_key?(position))
|
1681
1681
|
|
1682
|
-
@delete_series = @
|
1682
|
+
@delete_series = @legend.delete_series if @legend.delete_series.kind_of?(Array)
|
1683
1683
|
@writer.tag_elements('c:legend') do
|
1684
1684
|
# Write the c:legendPos element.
|
1685
1685
|
write_legend_pos(position_allowed[position])
|
@@ -1687,20 +1687,23 @@ def write_legend # :nodoc:
|
|
1687
1687
|
# Write the c:legendEntry element.
|
1688
1688
|
@delete_series.each { |i| write_legend_entry(i) } if @delete_series
|
1689
1689
|
# Write the c:layout element.
|
1690
|
-
write_layout(@
|
1691
|
-
# Write the c:txPr element.
|
1692
|
-
write_tx_pr(nil, @legend_font) if ptrue?(@legend_font)
|
1690
|
+
write_layout(@legend.layout, 'legend')
|
1693
1691
|
# Write the c:overlay element.
|
1694
|
-
write_overlay if @
|
1692
|
+
write_overlay if @legend.position =~ /^overlay_/
|
1693
|
+
# Write the c:spPr element.
|
1694
|
+
write_sp_pr(@legend)
|
1695
|
+
# Write the c:txPr element.
|
1696
|
+
write_tx_pr(nil, @legend.font) if ptrue?(@legend.font)
|
1695
1697
|
end
|
1696
1698
|
end
|
1697
1699
|
|
1698
1700
|
def position_allowed
|
1699
1701
|
{
|
1700
|
-
'right'
|
1701
|
-
'left'
|
1702
|
-
'top'
|
1703
|
-
'bottom'
|
1702
|
+
'right' => 'r',
|
1703
|
+
'left' => 'l',
|
1704
|
+
'top' => 't',
|
1705
|
+
'bottom' => 'b',
|
1706
|
+
'top_right' => 'tr'
|
1704
1707
|
}
|
1705
1708
|
end
|
1706
1709
|
|
@@ -1805,10 +1808,10 @@ def write_auto_title_deleted
|
|
1805
1808
|
#
|
1806
1809
|
# Write the <c:title> element for a rich string.
|
1807
1810
|
#
|
1808
|
-
def write_title_rich(title,
|
1811
|
+
def write_title_rich(title, is_y_axis = nil, layout = nil, overlay = nil) # :nodoc:
|
1809
1812
|
@writer.tag_elements('c:title') do
|
1810
1813
|
# Write the c:tx element.
|
1811
|
-
write_tx_rich(title,
|
1814
|
+
write_tx_rich(title, is_y_axis)
|
1812
1815
|
# Write the c:layout element.
|
1813
1816
|
write_layout(layout, 'text')
|
1814
1817
|
# Write the c:overlay element.
|
@@ -1819,7 +1822,7 @@ def write_title_rich(title, horiz = nil, layout = nil, overlay = nil) # :nodoc:
|
|
1819
1822
|
#
|
1820
1823
|
# Write the <c:title> element for a rich string.
|
1821
1824
|
#
|
1822
|
-
def write_title_formula(title,
|
1825
|
+
def write_title_formula(title, is_y_axis = nil, axis = nil, layout = nil, overlay = nil) # :nodoc:
|
1823
1826
|
@writer.tag_elements('c:title') do
|
1824
1827
|
# Write the c:tx element.
|
1825
1828
|
write_tx_formula(title.formula, axis ? axis.data_id : title.data_id)
|
@@ -1828,15 +1831,15 @@ def write_title_formula(title, horiz = nil, axis = nil, layout = nil, overlay =
|
|
1828
1831
|
# Write the c:overlay element.
|
1829
1832
|
write_overlay if overlay
|
1830
1833
|
# Write the c:txPr element.
|
1831
|
-
write_tx_pr(
|
1834
|
+
write_tx_pr(is_y_axis, axis ? axis.name_font : title.name_font)
|
1832
1835
|
end
|
1833
1836
|
end
|
1834
1837
|
|
1835
1838
|
#
|
1836
1839
|
# Write the <c:tx> element.
|
1837
1840
|
#
|
1838
|
-
def write_tx_rich(title,
|
1839
|
-
@writer.tag_elements('c:tx') { write_rich(title,
|
1841
|
+
def write_tx_rich(title, is_y_axis) # :nodoc:
|
1842
|
+
@writer.tag_elements('c:tx') { write_rich(title, is_y_axis) }
|
1840
1843
|
end
|
1841
1844
|
|
1842
1845
|
#
|
@@ -1858,14 +1861,14 @@ def write_tx_formula(title, data_id) # :nodoc:
|
|
1858
1861
|
#
|
1859
1862
|
# Write the <c:rich> element.
|
1860
1863
|
#
|
1861
|
-
def write_rich(title,
|
1864
|
+
def write_rich(title, is_y_axis) # :nodoc:
|
1862
1865
|
rotation = nil
|
1863
1866
|
if title.name_font && title.name_font[:_rotation]
|
1864
1867
|
rotation = title.name_font[:_rotation]
|
1865
1868
|
end
|
1866
1869
|
@writer.tag_elements('c:rich') do
|
1867
1870
|
# Write the a:bodyPr element.
|
1868
|
-
write_a_body_pr(rotation,
|
1871
|
+
write_a_body_pr(rotation, is_y_axis)
|
1869
1872
|
# Write the a:lstStyle element.
|
1870
1873
|
write_a_lst_style
|
1871
1874
|
# Write the a:p element.
|
@@ -2238,7 +2241,12 @@ def write_num_base(tag, data)
|
|
2238
2241
|
write_format_code('General')
|
2239
2242
|
|
2240
2243
|
# Write the c:ptCount element.
|
2241
|
-
|
2244
|
+
if data
|
2245
|
+
count = data.size
|
2246
|
+
else
|
2247
|
+
count = 0
|
2248
|
+
end
|
2249
|
+
write_pt_count(count)
|
2242
2250
|
|
2243
2251
|
data.each_with_index do |token, i|
|
2244
2252
|
# Write non-numeric data as 0.
|