diff options
| author | Randy Morgan (@morgan_randy) <[email protected]> | 2016-02-02 19:08:00 +0900 |
|---|---|---|
| committer | Randy Morgan (@morgan_randy) <[email protected]> | 2016-02-02 19:08:00 +0900 |
| commit | b52661c707c5ee812d71a9fc569fdf8f8c8ecfa5 (patch) | |
| tree | 55792f283734fb95ef90c8919369e61e460498bf | |
| parent | 776aaf53cb5c19c854c27f5daedd40431ad5b2ba (diff) | |
| parent | c3abaae08cd41e40c156f67ddcc632468a5b5e0e (diff) | |
| download | caxlsx-b52661c707c5ee812d71a9fc569fdf8f8c8ecfa5.tar.gz caxlsx-b52661c707c5ee812d71a9fc569fdf8f8c8ecfa5.zip | |
Merge pull request #443 from transoceanic2000/summary-position-config
Support configuration of outline summary position
| -rw-r--r-- | lib/axlsx/workbook/workbook.rb | 1 | ||||
| -rw-r--r-- | lib/axlsx/workbook/worksheet/outline_pr.rb | 33 | ||||
| -rw-r--r-- | lib/axlsx/workbook/worksheet/sheet_pr.rb | 10 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_outline_pr.rb | 19 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_worksheet.rb | 10 |
5 files changed, 72 insertions, 1 deletions
diff --git a/lib/axlsx/workbook/workbook.rb b/lib/axlsx/workbook/workbook.rb index ddb13600..4ba44adb 100644 --- a/lib/axlsx/workbook/workbook.rb +++ b/lib/axlsx/workbook/workbook.rb @@ -11,6 +11,7 @@ require 'axlsx/workbook/worksheet/cell_serializer.rb' require 'axlsx/workbook/worksheet/cell.rb' require 'axlsx/workbook/worksheet/page_margins.rb' require 'axlsx/workbook/worksheet/page_set_up_pr.rb' +require 'axlsx/workbook/worksheet/outline_pr.rb' require 'axlsx/workbook/worksheet/page_setup.rb' require 'axlsx/workbook/worksheet/header_footer.rb' require 'axlsx/workbook/worksheet/print_options.rb' diff --git a/lib/axlsx/workbook/worksheet/outline_pr.rb b/lib/axlsx/workbook/worksheet/outline_pr.rb new file mode 100644 index 00000000..ae9ccf38 --- /dev/null +++ b/lib/axlsx/workbook/worksheet/outline_pr.rb @@ -0,0 +1,33 @@ +module Axlsx + + # The OutlinePr class manages serialization of a worksheet's outlinePr element, which provides various + # options to control outlining. + class OutlinePr + include Axlsx::OptionsParser + include Axlsx::Accessors + include Axlsx::SerializedAttributes + + serializable_attributes :summary_below, + :summary_right, + :apply_styles + + # These attributes are all boolean so I'm doing a bit of a hand + # waving magic show to set up the attriubte accessors + boolean_attr_accessor :summary_below, + :summary_right, + :apply_styles + + # Creates a new OutlinePr object + # @param [Worksheet] worksheet The worksheet that owns this OutlinePr object + def initialize(options = {}) + parse_options options + end + + # Serialize the object + # @param [String] str serialized output will be appended to this object if provided. + # @return [String] + def to_xml_string(str = '') + str << "<outlinePr #{serialized_attributes} />" + end + end +end diff --git a/lib/axlsx/workbook/worksheet/sheet_pr.rb b/lib/axlsx/workbook/worksheet/sheet_pr.rb index a299bc0f..fd6dad2b 100644 --- a/lib/axlsx/workbook/worksheet/sheet_pr.rb +++ b/lib/axlsx/workbook/worksheet/sheet_pr.rb @@ -1,6 +1,6 @@ module Axlsx - # The SheetPr class manages serialization fo a worksheet's sheetPr element. + # The SheetPr class manages serialization of a worksheet's sheetPr element. class SheetPr include Axlsx::OptionsParser include Axlsx::Accessors @@ -33,6 +33,7 @@ module Axlsx def initialize(worksheet, options={}) raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet) @worksheet = worksheet + @outline_pr = nil parse_options options end @@ -51,6 +52,7 @@ module Axlsx update_properties str << "<sheetPr #{serialized_attributes}>" tab_color.to_xml_string(str, 'tabColor') if tab_color + outline_pr.to_xml_string(str) if @outline_pr page_setup_pr.to_xml_string(str) str << "</sheetPr>" end @@ -60,6 +62,12 @@ module Axlsx def page_setup_pr @page_setup_pr ||= PageSetUpPr.new end + + # The OutlinePr for this sheet pr object + # @return [OutlinePr] + def outline_pr + @outline_pr ||= OutlinePr.new + end # @see tab_color def tab_color=(v) diff --git a/test/workbook/worksheet/tc_outline_pr.rb b/test/workbook/worksheet/tc_outline_pr.rb new file mode 100644 index 00000000..41a2b4ca --- /dev/null +++ b/test/workbook/worksheet/tc_outline_pr.rb @@ -0,0 +1,19 @@ +require 'tc_helper.rb' + +class TestOutlinePr < Test::Unit::TestCase + def setup + @outline_pr = Axlsx::OutlinePr.new(:summary_below => false, :summary_right => true, :apply_styles => false) + end + + def test_summary_below + assert_equal false, @outline_pr.summary_below + end + + def test_summary_right + assert_equal true, @outline_pr.summary_right + end + + def test_apply_styles + assert_equal false, @outline_pr.apply_styles + end +end diff --git a/test/workbook/worksheet/tc_worksheet.rb b/test/workbook/worksheet/tc_worksheet.rb index eb668d7f..f8bd69ae 100644 --- a/test/workbook/worksheet/tc_worksheet.rb +++ b/test/workbook/worksheet/tc_worksheet.rb @@ -573,5 +573,15 @@ class TestWorksheet < Test::Unit::TestCase assert_raise(ArgumentError) { @wb.add_worksheet(:name => 'Sheet1') } assert_equal(1, @wb.worksheets.size) end + + def test_worksheet_only_includes_outline_pr_when_set + doc = Nokogiri::XML(@ws.to_xml_string) + assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:outlinePr').size, 0) + @ws.sheet_pr.outline_pr.summary_below = false + @ws.sheet_pr.outline_pr.summary_right = true + doc = Nokogiri::XML(@ws.to_xml_string) + assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:outlinePr').size, 1) + assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:outlinePr[@summaryBelow=0][@summaryRight=1]').size, 1) + end end |
