axlsx 2.1.0.pre → 3.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/README.md +17 -20
  4. data/Rakefile +0 -1
  5. data/examples/conditional_formatting/example_conditional_formatting.rb +15 -0
  6. data/examples/example.rb +31 -1
  7. data/lib/axlsx.rb +9 -4
  8. data/lib/axlsx/drawing/area_chart.rb +99 -0
  9. data/lib/axlsx/drawing/area_series.rb +110 -0
  10. data/lib/axlsx/drawing/bar_chart.rb +143 -0
  11. data/lib/axlsx/drawing/chart.rb +8 -1
  12. data/lib/axlsx/drawing/d_lbls.rb +3 -3
  13. data/lib/axlsx/drawing/drawing.rb +3 -0
  14. data/lib/axlsx/drawing/line_series.rb +18 -1
  15. data/lib/axlsx/drawing/num_val.rb +3 -1
  16. data/lib/axlsx/drawing/one_cell_anchor.rb +2 -1
  17. data/lib/axlsx/drawing/pic.rb +24 -17
  18. data/lib/axlsx/drawing/scaling.rb +2 -2
  19. data/lib/axlsx/drawing/scatter_series.rb +16 -2
  20. data/lib/axlsx/drawing/str_val.rb +3 -1
  21. data/lib/axlsx/drawing/title.rb +19 -1
  22. data/lib/axlsx/drawing/two_cell_anchor.rb +6 -1
  23. data/lib/axlsx/drawing/view_3D.rb +2 -2
  24. data/lib/axlsx/package.rb +7 -16
  25. data/lib/axlsx/rels/relationships.rb +5 -2
  26. data/lib/axlsx/stylesheet/num_fmt.rb +9 -0
  27. data/lib/axlsx/stylesheet/styles.rb +1 -1
  28. data/lib/axlsx/util/constants.rb +8 -5
  29. data/lib/axlsx/util/mime_type_utils.rb +11 -0
  30. data/lib/axlsx/util/simple_typed_list.rb +1 -1
  31. data/lib/axlsx/util/validators.rb +14 -9
  32. data/lib/axlsx/version.rb +1 -1
  33. data/lib/axlsx/workbook/workbook.rb +19 -1
  34. data/lib/axlsx/workbook/workbook_view.rb +5 -3
  35. data/lib/axlsx/workbook/worksheet/cell.rb +26 -19
  36. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +15 -5
  37. data/lib/axlsx/workbook/worksheet/cfvos.rb +3 -0
  38. data/lib/axlsx/workbook/worksheet/cols.rb +5 -2
  39. data/lib/axlsx/workbook/worksheet/merged_cells.rb +2 -0
  40. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -0
  41. data/lib/axlsx/workbook/worksheet/pivot_table.rb +36 -13
  42. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +4 -1
  43. data/lib/axlsx/workbook/worksheet/rich_text.rb +23 -3
  44. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +28 -32
  45. data/lib/axlsx/workbook/worksheet/row.rb +7 -0
  46. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +21 -3
  47. data/lib/axlsx/workbook/worksheet/tables.rb +3 -0
  48. data/lib/axlsx/workbook/worksheet/worksheet.rb +8 -51
  49. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +10 -10
  50. data/test/axlsx.qcachegrind +2226 -0
  51. data/test/drawing/tc_area_chart.rb +39 -0
  52. data/test/drawing/tc_area_series.rb +71 -0
  53. data/test/drawing/tc_bar_chart.rb +71 -0
  54. data/test/drawing/tc_chart.rb +23 -10
  55. data/test/drawing/tc_drawing.rb +2 -2
  56. data/test/drawing/tc_line_series.rb +38 -5
  57. data/test/drawing/tc_pic.rb +11 -19
  58. data/test/drawing/tc_scatter_series.rb +16 -5
  59. data/test/drawing/tc_str_val.rb +9 -0
  60. data/test/drawing/tc_title.rb +5 -0
  61. data/test/stylesheet/tc_styles.rb +2 -2
  62. data/test/tc_axlsx.rb +31 -0
  63. data/test/tc_helper.rb +3 -1
  64. data/test/tc_package.rb +12 -0
  65. data/test/util/tc_mime_type_utils.rb +13 -0
  66. data/test/util/tc_simple_typed_list.rb +1 -1
  67. data/test/util/tc_validators.rb +34 -10
  68. data/test/workbook/tc_shared_strings_table.rb +16 -1
  69. data/test/workbook/tc_workbook.rb +22 -1
  70. data/test/workbook/worksheet/tc_cell.rb +53 -11
  71. data/test/workbook/worksheet/tc_outline_pr.rb +19 -0
  72. data/test/workbook/worksheet/tc_pivot_table.rb +21 -6
  73. data/test/workbook/worksheet/tc_rich_text_run.rb +11 -11
  74. data/test/workbook/worksheet/tc_row.rb +5 -0
  75. data/test/workbook/worksheet/tc_sheet_pr.rb +26 -4
  76. data/test/workbook/worksheet/tc_table.rb +2 -3
  77. data/test/workbook/worksheet/tc_worksheet.rb +53 -38
  78. metadata +72 -20
  79. data/examples/IMAGE1UP.JPEG +0 -0
  80. data/lib/axlsx/util/string.rb +0 -7
@@ -0,0 +1,19 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestOutlinePr < Test::Unit::TestCase
4
+ def setup
5
+ @outline_pr = Axlsx::OutlinePr.new(:summary_below => false, :summary_right => true, :apply_styles => false)
6
+ end
7
+
8
+ def test_summary_below
9
+ assert_equal false, @outline_pr.summary_below
10
+ end
11
+
12
+ def test_summary_right
13
+ assert_equal true, @outline_pr.summary_right
14
+ end
15
+
16
+ def test_apply_styles
17
+ assert_equal false, @outline_pr.apply_styles
18
+ end
19
+ end
@@ -67,6 +67,26 @@ class TestPivotTable < Test::Unit::TestCase
67
67
  assert_equal([{:ref=>"Sales", :subtotal => 'average'}], pivot_table.data)
68
68
  end
69
69
 
70
+ def test_add_pivot_table_with_style_info
71
+ style_info_data = { :name=>"PivotStyleMedium9", :showRowHeaders=>"1", :showLastColumn=>"0"}
72
+ pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5', {:style_info=>style_info_data}) do |pt|
73
+ pt.rows = ['Year', 'Month']
74
+ pt.columns = ['Type']
75
+ pt.data = ['Sales']
76
+ pt.pages = ['Region']
77
+ end
78
+ assert_equal(style_info_data, pivot_table.style_info)
79
+ shared_test_pivot_table_xml_validity(pivot_table)
80
+ end
81
+
82
+ def test_add_pivot_table_with_row_without_subtotals
83
+ pivot_table = @ws.add_pivot_table('G5:G6', 'A1:D5', {:no_subtotals_on_headers=>['Year']}) do |pt|
84
+ pt.data = ['Sales']
85
+ pt.rows = ['Year','Month']
86
+ end
87
+ assert_equal(['Year'], pivot_table.no_subtotals_on_headers)
88
+ end
89
+
70
90
  def test_header_indices
71
91
  pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5')
72
92
  assert_equal(0, pivot_table.header_index_of('Year' ))
@@ -97,12 +117,7 @@ class TestPivotTable < Test::Unit::TestCase
97
117
  end
98
118
 
99
119
  def test_to_xml_string
100
- pivot_table = @ws.add_pivot_table('G5:G6', 'A1:D5')
101
- shared_test_pivot_table_xml_validity(pivot_table)
102
- end
103
-
104
- def test_to_xml_string_with_configuration
105
- pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5') do |pt|
120
+ pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5', {:no_subtotals_on_headers=>['Year']}) do |pt|
106
121
  pt.rows = ['Year', 'Month']
107
122
  pt.columns = ['Type']
108
123
  pt.data = ['Sales']
@@ -7,7 +7,7 @@ class RichTextRun < Test::Unit::TestCase
7
7
  @p.workbook.styles.add_style :sz => 20
8
8
  @rtr = Axlsx::RichTextRun.new('hihihi', b: true, i: false)
9
9
  @rtr2 = Axlsx::RichTextRun.new('hihi2hi2', b: false, i: true)
10
- @rt = Axlsx::RichText.new
10
+ @rt = Axlsx::RichText.new
11
11
  @rt.runs << @rtr
12
12
  @rt.runs << @rtr2
13
13
  @row = @ws.add_row [@rt]
@@ -19,7 +19,7 @@ class RichTextRun < Test::Unit::TestCase
19
19
  assert_equal(@rtr.b, true)
20
20
  assert_equal(@rtr.i, false)
21
21
  end
22
-
22
+
23
23
  def test_font_size_with_custom_style_and_no_sz
24
24
  @c.style = @c.row.worksheet.workbook.styles.add_style :bg_color => 'FF00FF'
25
25
  sz = @rtr.send(:font_size)
@@ -41,12 +41,12 @@ class RichTextRun < Test::Unit::TestCase
41
41
  sz2 = @rtr2.send(:font_size)
42
42
  assert_equal(sz2, 52)
43
43
  end
44
-
44
+
45
45
  def test_rtr_with_sz
46
46
  @rtr.sz = 25
47
47
  assert_equal(25, @rtr.send(:font_size))
48
48
  end
49
-
49
+
50
50
  def test_color
51
51
  assert_raise(ArgumentError) { @rtr.color = -1.1 }
52
52
  assert_nothing_raised { @rtr.color = "FF00FF00" }
@@ -129,9 +129,9 @@ class RichTextRun < Test::Unit::TestCase
129
129
  end
130
130
 
131
131
  def test_family
132
- assert_raise(ArgumentError) { @c.family = -1.1 }
133
- assert_nothing_raised { @c.family = 5 }
134
- assert_equal(@c.family, 5)
132
+ assert_raise(ArgumentError) { @rtr.family = 0 }
133
+ assert_nothing_raised { @rtr.family = 1 }
134
+ assert_equal(@rtr.family, 1)
135
135
  end
136
136
 
137
137
  def test_b
@@ -139,11 +139,11 @@ class RichTextRun < Test::Unit::TestCase
139
139
  assert_nothing_raised { @c.b = false }
140
140
  assert_equal(@c.b, false)
141
141
  end
142
-
142
+
143
143
  def test_multiline_autowidth
144
144
  wrap = @p.workbook.styles.add_style({:alignment => {:wrap_text => true}})
145
145
  awtr = Axlsx::RichTextRun.new('I\'m bold' + "\n", :b => true)
146
- rt = Axlsx::RichText.new
146
+ rt = Axlsx::RichText.new
147
147
  rt.runs << awtr
148
148
  @ws.add_row [rt], :style => wrap
149
149
  ar = [0]
@@ -151,7 +151,7 @@ class RichTextRun < Test::Unit::TestCase
151
151
  assert_equal(ar.length, 2)
152
152
  assert_equal(ar.last, 0)
153
153
  end
154
-
154
+
155
155
  def test_to_xml
156
156
  schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
157
157
  doc = Nokogiri::XML(@ws.to_xml_string)
@@ -161,7 +161,7 @@ class RichTextRun < Test::Unit::TestCase
161
161
  errors.push error
162
162
  end
163
163
  assert(errors.empty?, "error free validation")
164
-
164
+
165
165
  assert(doc.xpath('//rPr/b[@val=1]'))
166
166
  assert(doc.xpath('//rPr/i[@val=0]'))
167
167
  assert(doc.xpath('//rPr/b[@val=0]'))
@@ -27,6 +27,11 @@ class TestRow < Test::Unit::TestCase
27
27
  r.cells.each { |c| assert_equal(c.style,1) }
28
28
  end
29
29
 
30
+ def test_color
31
+ r = @ws.add_row([1,2,3,4,5])
32
+ r.color = "FF00FF00"
33
+ r.cells.each { |c| assert_equal(c.color.rgb, "FF00FF00") }
34
+ end
30
35
 
31
36
  def test_index
32
37
  assert_equal(@row.row_index, @row.worksheet.rows.index(@row))
@@ -5,23 +5,45 @@ class TestSheetPr < Test::Unit::TestCase
5
5
 
6
6
  def setup
7
7
  worksheet = Axlsx::Package.new.workbook.add_worksheet
8
- @options = {
8
+ @options = {
9
9
  :sync_horizontal => false,
10
10
  :sync_vertical => false,
11
- :transtion_evaluation => true,
11
+ :transition_evaluation => true,
12
12
  :transition_entry => true,
13
13
  :published => false,
14
14
  :filter_mode => true,
15
15
  :enable_format_conditions_calculation => false,
16
16
  :code_name => '007',
17
- :sync_ref => 'foo'
17
+ :sync_ref => 'foo',
18
+ :tab_color => 'FFFF6666'
18
19
  }
19
20
  @sheet_pr = Axlsx::SheetPr.new(worksheet, @options)
20
21
  end
21
22
 
22
23
  def test_initialization
23
24
  @options.each do |key, value|
24
- assert_equal value, @sheet_pr.send(key)
25
+ if key==:tab_color
26
+ stored_value = @sheet_pr.send(key)
27
+ assert_equal Axlsx::Color, stored_value.class
28
+ assert_equal value, stored_value.rgb
29
+ else
30
+ assert_equal value, @sheet_pr.send(key)
31
+ end
25
32
  end
26
33
  end
34
+
35
+ def test_to_xml_string
36
+ doc = Nokogiri::XML(@sheet_pr.to_xml_string)
37
+ assert_equal(doc.xpath("//sheetPr[@syncHorizontal='0']").size, 1)
38
+ assert_equal(doc.xpath("//sheetPr[@syncVertical='0']").size, 1)
39
+ assert_equal(doc.xpath("//sheetPr[@transitionEvaluation='1']").size, 1)
40
+ assert_equal(doc.xpath("//sheetPr[@transitionEntry='1']").size, 1)
41
+ assert_equal(doc.xpath("//sheetPr[@published='0']").size, 1)
42
+ assert_equal(doc.xpath("//sheetPr[@filterMode='1']").size, 1)
43
+ assert_equal(doc.xpath("//sheetPr[@enableFormatConditionsCalculation='0']").size, 1)
44
+ assert_equal(doc.xpath("//sheetPr[@codeName='007']").size, 1)
45
+ assert_equal(doc.xpath("//sheetPr[@syncRef='foo']").size, 1)
46
+ assert_equal(doc.xpath("//sheetPr/tabColor[@rgb='FFFF6666']").size, 1)
47
+ assert_equal(doc.xpath("//sheetPr/pageSetUpPr[@fitToPage='0']").size, 1)
48
+ end
27
49
  end
@@ -47,9 +47,9 @@ class TestTable < Test::Unit::TestCase
47
47
 
48
48
  def test_relationships
49
49
  assert(@ws.relationships.empty?)
50
- table = @ws.add_table("A1:D5")
50
+ @ws.add_table("A1:D5")
51
51
  assert_equal(@ws.relationships.size, 1, "adding a table adds a relationship")
52
- table = @ws.add_table("F1:J5")
52
+ @ws.add_table("F1:J5")
53
53
  assert_equal(@ws.relationships.size, 2, "adding a table adds a relationship")
54
54
  end
55
55
 
@@ -64,5 +64,4 @@ class TestTable < Test::Unit::TestCase
64
64
  end
65
65
  assert(errors.empty?, "error free validation")
66
66
  end
67
-
68
67
  end
@@ -93,7 +93,7 @@ class TestWorksheet < Test::Unit::TestCase
93
93
  page_setup = {:fit_to_height => 1, :fit_to_width => 1, :orientation => :landscape, :paper_width => "210mm", :paper_height => "297mm", :scale => 80}
94
94
  print_options = {:grid_lines => true, :headings => true, :horizontal_centered => true, :vertical_centered => true}
95
95
  header_footer = {:different_first => false, :different_odd_even => false, :odd_header => 'Header'}
96
- optioned = @ws.workbook.add_worksheet(:name => 'bob', :page_margins => page_margins, :page_setup => page_setup, :print_options => print_options, :header_footer => header_footer, :selected => true, :show_gridlines => false)
96
+ optioned = @ws.workbook.add_worksheet(:name => 'bob', :page_margins => page_margins, :page_setup => page_setup, :print_options => print_options, :header_footer => header_footer)
97
97
  page_margins.keys.each do |key|
98
98
  assert_equal(page_margins[key], optioned.page_margins.send(key))
99
99
  end
@@ -107,23 +107,21 @@ class TestWorksheet < Test::Unit::TestCase
107
107
  assert_equal(header_footer[key], optioned.header_footer.send(key))
108
108
  end
109
109
  assert_equal(optioned.name, 'bob')
110
- assert_equal(optioned.selected, true)
111
- assert_equal(optioned.show_gridlines, false)
112
110
 
113
111
  end
114
112
 
115
113
 
116
- def test_use_gridlines
117
- assert_raise(ArgumentError) { @ws.show_gridlines = -1.1 }
118
- assert_nothing_raised { @ws.show_gridlines = false }
119
- assert_equal(@ws.show_gridlines, false)
120
- end
114
+ # def test_use_gridlines
115
+ # assert_raise(ArgumentError) { @ws.show_gridlines = -1.1 }
116
+ # assert_nothing_raised { @ws.show_gridlines = false }
117
+ # assert_equal(@ws.show_gridlines, false)
118
+ # end
121
119
 
122
- def test_selected
123
- assert_raise(ArgumentError) { @ws.selected = -1.1 }
124
- assert_nothing_raised { @ws.selected = true }
125
- assert_equal(@ws.selected, true)
126
- end
120
+ # def test_selected
121
+ # assert_raise(ArgumentError) { @ws.selected = -1.1 }
122
+ # assert_nothing_raised { @ws.selected = true }
123
+ # assert_equal(@ws.selected, true)
124
+ # end
127
125
 
128
126
  def test_rels_pn
129
127
  assert_equal(@ws.rels_pn, "worksheets/_rels/sheet1.xml.rels")
@@ -266,11 +264,11 @@ class TestWorksheet < Test::Unit::TestCase
266
264
  end
267
265
  end
268
266
 
269
- def test_to_xml_string_fit_to_page
270
- @ws.page_setup.fit_to_width = 1
271
- doc = Nokogiri::XML(@ws.to_xml_string)
272
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:pageSetUpPr[@fitToPage=1]').size, 1)
273
- end
267
+ # def test_to_xml_string_fit_to_page
268
+ # @ws.page_setup.fit_to_width = 1
269
+ # doc = Nokogiri::XML(@ws.to_xml_string)
270
+ # assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:pageSetUpPr[@fitToPage=1]').size, 1)
271
+ # end
274
272
 
275
273
  def test_to_xml_string_dimensions
276
274
  @ws.add_row [1,2,3]
@@ -278,22 +276,22 @@ class TestWorksheet < Test::Unit::TestCase
278
276
  assert_equal(doc.xpath('//xmlns:worksheet/xmlns:dimension[@ref="A1:C1"]').size, 1)
279
277
  end
280
278
 
281
- def test_fit_to_page_assignation_does_nothing
282
- @ws.fit_to_page = true
283
- assert_equal(@ws.fit_to_page?, false)
284
- end
279
+ # def test_fit_to_page_assignation_does_nothing
280
+ # @ws.fit_to_page = true
281
+ # assert_equal(@ws.fit_to_page?, false)
282
+ # end
285
283
 
286
- def test_to_xml_string_selected
287
- @ws.selected = true
288
- doc = Nokogiri::XML(@ws.to_xml_string)
289
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView[@tabSelected=1]').size, 1)
290
- end
284
+ # def test_to_xml_string_selected
285
+ # @ws.selected = true
286
+ # doc = Nokogiri::XML(@ws.to_xml_string)
287
+ # assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView[@tabSelected=1]').size, 1)
288
+ # end
291
289
 
292
- def test_to_xml_string_show_gridlines
293
- @ws.show_gridlines = false
294
- doc = Nokogiri::XML(@ws.to_xml_string)
295
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView[@showGridLines=0]').size, 1)
296
- end
290
+ # def test_to_xml_string_show_gridlines
291
+ # @ws.show_gridlines = false
292
+ # doc = Nokogiri::XML(@ws.to_xml_string)
293
+ # assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView[@showGridLines=0]').size, 1)
294
+ # end
297
295
 
298
296
  def test_to_xml_string_auto_fit_data
299
297
  @ws.add_row [1, "two"]
@@ -323,6 +321,13 @@ class TestWorksheet < Test::Unit::TestCase
323
321
  assert_equal(doc.xpath('//xmlns:worksheet/xmlns:mergeCells/xmlns:mergeCell[@ref="E1:F1"]').size, 1)
324
322
  end
325
323
 
324
+ def test_to_xml_string_merge_cells_row
325
+ row = @ws.add_row [1, "two"]
326
+ @ws.merge_cells row
327
+ doc = Nokogiri::XML(@ws.to_xml_string)
328
+ assert_equal(doc.xpath('//xmlns:worksheet/xmlns:mergeCells/xmlns:mergeCell[@ref="A1:B1"]').size, 1)
329
+ end
330
+
326
331
  def test_to_xml_string_row_breaks
327
332
  @ws.add_page_break("A1")
328
333
  doc = Nokogiri::XML(@ws.to_xml_string)
@@ -432,15 +437,15 @@ class TestWorksheet < Test::Unit::TestCase
432
437
  def test_relationships
433
438
  @ws.add_row [1,2,3]
434
439
  assert(@ws.relationships.empty?, "No Drawing relationship until you add a chart")
435
- c = @ws.add_chart Axlsx::Pie3DChart
440
+ @ws.add_chart Axlsx::Pie3DChart
436
441
  assert_equal(@ws.relationships.size, 1, "adding a chart creates the relationship")
437
- c = @ws.add_chart Axlsx::Pie3DChart
442
+ @ws.add_chart Axlsx::Pie3DChart
438
443
  assert_equal(@ws.relationships.size, 1, "multiple charts still only result in one relationship")
439
- c = @ws.add_comment :text => 'builder', :author => 'bob', :ref => @ws.rows.last.cells.last
444
+ @ws.add_comment :text => 'builder', :author => 'bob', :ref => @ws.rows.last.cells.last
440
445
  assert_equal(@ws.relationships.size, 3, "adding a comment adds 2 relationships")
441
- c = @ws.add_comment :text => 'not that is a comment!', :author => 'travis', :ref => "A1"
446
+ @ws.add_comment :text => 'not that is a comment!', :author => 'travis', :ref => "A1"
442
447
  assert_equal(@ws.relationships.size, 3, "adding multiple comments in the same worksheet should not add any additional comment relationships")
443
- c = @ws.add_pivot_table 'G5:G6', 'A1:D10'
448
+ @ws.add_pivot_table 'G5:G6', 'A1:D10'
444
449
  assert_equal(@ws.relationships.size, 4, "adding a pivot table adds 1 relationship")
445
450
  end
446
451
 
@@ -476,7 +481,7 @@ class TestWorksheet < Test::Unit::TestCase
476
481
  @ws.column_widths nil, 0.5
477
482
  assert_equal(@ws.column_info[1].width, 0.5, 'eat my width')
478
483
  assert_raise(ArgumentError, 'only accept unsigned ints') { @ws.column_widths 2, 7, -1 }
479
- assert_raise(ArgumentError, 'only accept Integer, Float or Fixnum') { @ws.column_widths 2, 7, "-1" }
484
+ assert_raise(ArgumentError, 'only accept Integer or Float') { @ws.column_widths 2, 7, "-1" }
480
485
  end
481
486
 
482
487
  def test_protect_range
@@ -574,4 +579,14 @@ class TestWorksheet < Test::Unit::TestCase
574
579
  assert_equal(1, @wb.worksheets.size)
575
580
  end
576
581
 
582
+ def test_worksheet_only_includes_outline_pr_when_set
583
+ doc = Nokogiri::XML(@ws.to_xml_string)
584
+ assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:outlinePr').size, 0)
585
+
586
+ @ws.sheet_pr.outline_pr.summary_below = false
587
+ @ws.sheet_pr.outline_pr.summary_right = true
588
+ doc = Nokogiri::XML(@ws.to_xml_string)
589
+ assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:outlinePr').size, 1)
590
+ assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:outlinePr[@summaryBelow=0][@summaryRight=1]').size, 1)
591
+ end
577
592
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: axlsx
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0.pre
4
+ version: 3.0.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Randy Morgan
@@ -9,92 +9,130 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-14 00:00:00.000000000 Z
12
+ date: 2018-02-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.8'
18
21
  - - ">="
19
22
  - !ruby/object:Gem::Version
20
- version: 1.4.1
23
+ version: 1.8.2
21
24
  type: :runtime
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
28
+ - - "~>"
29
+ - !ruby/object:Gem::Version
30
+ version: '1.8'
25
31
  - - ">="
26
32
  - !ruby/object:Gem::Version
27
- version: 1.4.1
33
+ version: 1.8.2
28
34
  - !ruby/object:Gem::Dependency
29
35
  name: rubyzip
30
36
  requirement: !ruby/object:Gem::Requirement
31
37
  requirements:
32
38
  - - "~>"
33
39
  - !ruby/object:Gem::Version
34
- version: 1.1.7
40
+ version: '1.2'
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.2.1
35
44
  type: :runtime
36
45
  prerelease: false
37
46
  version_requirements: !ruby/object:Gem::Requirement
38
47
  requirements:
39
48
  - - "~>"
40
49
  - !ruby/object:Gem::Version
41
- version: 1.1.7
50
+ version: '1.2'
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.2.1
42
54
  - !ruby/object:Gem::Dependency
43
55
  name: htmlentities
44
56
  requirement: !ruby/object:Gem::Requirement
45
57
  requirements:
46
58
  - - "~>"
47
59
  - !ruby/object:Gem::Version
48
- version: 4.3.1
60
+ version: '4.3'
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 4.3.4
49
64
  type: :runtime
50
65
  prerelease: false
51
66
  version_requirements: !ruby/object:Gem::Requirement
52
67
  requirements:
53
68
  - - "~>"
54
69
  - !ruby/object:Gem::Version
55
- version: 4.3.1
70
+ version: '4.3'
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 4.3.4
74
+ - !ruby/object:Gem::Dependency
75
+ name: mimemagic
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '0.3'
81
+ type: :runtime
82
+ prerelease: false
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '0.3'
56
88
  - !ruby/object:Gem::Dependency
57
89
  name: yard
58
90
  requirement: !ruby/object:Gem::Requirement
59
91
  requirements:
60
- - - ">="
92
+ - - "~>"
61
93
  - !ruby/object:Gem::Version
62
- version: '0'
94
+ version: 0.9.8
63
95
  type: :development
64
96
  prerelease: false
65
97
  version_requirements: !ruby/object:Gem::Requirement
66
98
  requirements:
67
- - - ">="
99
+ - - "~>"
68
100
  - !ruby/object:Gem::Version
69
- version: '0'
101
+ version: 0.9.8
70
102
  - !ruby/object:Gem::Dependency
71
103
  name: kramdown
72
104
  requirement: !ruby/object:Gem::Requirement
73
105
  requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: '1.16'
74
109
  - - ">="
75
110
  - !ruby/object:Gem::Version
76
- version: '0'
111
+ version: 1.16.2
77
112
  type: :development
78
113
  prerelease: false
79
114
  version_requirements: !ruby/object:Gem::Requirement
80
115
  requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '1.16'
81
119
  - - ">="
82
120
  - !ruby/object:Gem::Version
83
- version: '0'
121
+ version: 1.16.2
84
122
  - !ruby/object:Gem::Dependency
85
123
  name: timecop
86
124
  requirement: !ruby/object:Gem::Requirement
87
125
  requirements:
88
126
  - - "~>"
89
127
  - !ruby/object:Gem::Version
90
- version: 0.6.1
128
+ version: 0.8.1
91
129
  type: :development
92
130
  prerelease: false
93
131
  version_requirements: !ruby/object:Gem::Requirement
94
132
  requirements:
95
133
  - - "~>"
96
134
  - !ruby/object:Gem::Version
97
- version: 0.6.1
135
+ version: 0.8.1
98
136
  description: " xlsx spreadsheet generation with charts, images, automated column
99
137
  width, customizable styles and full schema validation. Axlsx helps you create beautiful
100
138
  Office Open XML Spreadsheet documents ( Excel, Google Spreadsheets, Numbers, LibreOffice)
@@ -114,7 +152,6 @@ files:
114
152
  - README.md
115
153
  - Rakefile
116
154
  - examples/2010_comments.rb
117
- - examples/IMAGE1UP.JPEG
118
155
  - examples/anchor_swapping.rb
119
156
  - examples/auto_filter.rb
120
157
  - examples/basic_charts.rb
@@ -148,10 +185,13 @@ files:
148
185
  - lib/axlsx/content_type/override.rb
149
186
  - lib/axlsx/doc_props/app.rb
150
187
  - lib/axlsx/doc_props/core.rb
188
+ - lib/axlsx/drawing/area_chart.rb
189
+ - lib/axlsx/drawing/area_series.rb
151
190
  - lib/axlsx/drawing/ax_data_source.rb
152
191
  - lib/axlsx/drawing/axes.rb
153
192
  - lib/axlsx/drawing/axis.rb
154
193
  - lib/axlsx/drawing/bar_3D_chart.rb
194
+ - lib/axlsx/drawing/bar_chart.rb
155
195
  - lib/axlsx/drawing/bar_series.rb
156
196
  - lib/axlsx/drawing/bubble_chart.rb
157
197
  - lib/axlsx/drawing/bubble_series.rb
@@ -210,12 +250,12 @@ files:
210
250
  - lib/axlsx/stylesheet/xf.rb
211
251
  - lib/axlsx/util/accessors.rb
212
252
  - lib/axlsx/util/constants.rb
253
+ - lib/axlsx/util/mime_type_utils.rb
213
254
  - lib/axlsx/util/options_parser.rb
214
255
  - lib/axlsx/util/parser.rb
215
256
  - lib/axlsx/util/serialized_attributes.rb
216
257
  - lib/axlsx/util/simple_typed_list.rb
217
258
  - lib/axlsx/util/storage.rb
218
- - lib/axlsx/util/string.rb
219
259
  - lib/axlsx/util/validators.rb
220
260
  - lib/axlsx/version.rb
221
261
  - lib/axlsx/workbook/defined_name.rb
@@ -249,6 +289,7 @@ files:
249
289
  - lib/axlsx/workbook/worksheet/header_footer.rb
250
290
  - lib/axlsx/workbook/worksheet/icon_set.rb
251
291
  - lib/axlsx/workbook/worksheet/merged_cells.rb
292
+ - lib/axlsx/workbook/worksheet/outline_pr.rb
252
293
  - lib/axlsx/workbook/worksheet/page_margins.rb
253
294
  - lib/axlsx/workbook/worksheet/page_set_up_pr.rb
254
295
  - lib/axlsx/workbook/worksheet/page_setup.rb
@@ -313,15 +354,19 @@ files:
313
354
  - lib/schema/vml-wordprocessingDrawing.xsd
314
355
  - lib/schema/wml.xsd
315
356
  - lib/schema/xml.xsd
357
+ - test/axlsx.qcachegrind
316
358
  - test/benchmark.rb
317
359
  - test/content_type/tc_content_type.rb
318
360
  - test/content_type/tc_default.rb
319
361
  - test/content_type/tc_override.rb
320
362
  - test/doc_props/tc_app.rb
321
363
  - test/doc_props/tc_core.rb
364
+ - test/drawing/tc_area_chart.rb
365
+ - test/drawing/tc_area_series.rb
322
366
  - test/drawing/tc_axes.rb
323
367
  - test/drawing/tc_axis.rb
324
368
  - test/drawing/tc_bar_3D_chart.rb
369
+ - test/drawing/tc_bar_chart.rb
325
370
  - test/drawing/tc_bar_series.rb
326
371
  - test/drawing/tc_bubble_chart.rb
327
372
  - test/drawing/tc_bubble_series.rb
@@ -383,6 +428,7 @@ files:
383
428
  - test/tc_axlsx.rb
384
429
  - test/tc_helper.rb
385
430
  - test/tc_package.rb
431
+ - test/util/tc_mime_type_utils.rb
386
432
  - test/util/tc_serialized_attributes.rb
387
433
  - test/util/tc_simple_typed_list.rb
388
434
  - test/util/tc_validators.rb
@@ -406,6 +452,7 @@ files:
406
452
  - test/workbook/worksheet/tc_date_time_converter.rb
407
453
  - test/workbook/worksheet/tc_header_footer.rb
408
454
  - test/workbook/worksheet/tc_icon_set.rb
455
+ - test/workbook/worksheet/tc_outline_pr.rb
409
456
  - test/workbook/worksheet/tc_page_margins.rb
410
457
  - test/workbook/worksheet/tc_page_set_up_pr.rb
411
458
  - test/workbook/worksheet/tc_page_setup.rb
@@ -447,20 +494,24 @@ required_rubygems_version: !ruby/object:Gem::Requirement
447
494
  version: 1.3.1
448
495
  requirements: []
449
496
  rubyforge_project:
450
- rubygems_version: 2.4.5
497
+ rubygems_version: 2.6.13
451
498
  signing_key:
452
499
  specification_version: 4
453
500
  summary: Excel OOXML (xlsx) with charts, styles, images and autowidth columns.
454
501
  test_files:
502
+ - test/axlsx.qcachegrind
455
503
  - test/benchmark.rb
456
504
  - test/content_type/tc_content_type.rb
457
505
  - test/content_type/tc_default.rb
458
506
  - test/content_type/tc_override.rb
459
507
  - test/doc_props/tc_app.rb
460
508
  - test/doc_props/tc_core.rb
509
+ - test/drawing/tc_area_chart.rb
510
+ - test/drawing/tc_area_series.rb
461
511
  - test/drawing/tc_axes.rb
462
512
  - test/drawing/tc_axis.rb
463
513
  - test/drawing/tc_bar_3D_chart.rb
514
+ - test/drawing/tc_bar_chart.rb
464
515
  - test/drawing/tc_bar_series.rb
465
516
  - test/drawing/tc_bubble_chart.rb
466
517
  - test/drawing/tc_bubble_series.rb
@@ -522,6 +573,7 @@ test_files:
522
573
  - test/tc_axlsx.rb
523
574
  - test/tc_helper.rb
524
575
  - test/tc_package.rb
576
+ - test/util/tc_mime_type_utils.rb
525
577
  - test/util/tc_serialized_attributes.rb
526
578
  - test/util/tc_simple_typed_list.rb
527
579
  - test/util/tc_validators.rb
@@ -545,6 +597,7 @@ test_files:
545
597
  - test/workbook/worksheet/tc_date_time_converter.rb
546
598
  - test/workbook/worksheet/tc_header_footer.rb
547
599
  - test/workbook/worksheet/tc_icon_set.rb
600
+ - test/workbook/worksheet/tc_outline_pr.rb
548
601
  - test/workbook/worksheet/tc_page_margins.rb
549
602
  - test/workbook/worksheet/tc_page_set_up_pr.rb
550
603
  - test/workbook/worksheet/tc_page_setup.rb
@@ -566,4 +619,3 @@ test_files:
566
619
  - test/workbook/worksheet/tc_table_style_info.rb
567
620
  - test/workbook/worksheet/tc_worksheet.rb
568
621
  - test/workbook/worksheet/tc_worksheet_hyperlink.rb
569
- has_rdoc: axlsx