diff options
| author | Randy Morgan <[email protected]> | 2012-02-26 18:54:29 +0900 |
|---|---|---|
| committer | Randy Morgan <[email protected]> | 2012-02-26 18:54:29 +0900 |
| commit | dc1f2922b1a546009ce3c4d937e8473939a51959 (patch) | |
| tree | f6d229892da50851002bdf13b32fa9221096e794 | |
| parent | 568a9005d80021bc2b02fabaa9dbe91080d5cf51 (diff) | |
| download | caxlsx-dc1f2922b1a546009ce3c4d937e8473939a51959.tar.gz caxlsx-dc1f2922b1a546009ce3c4d937e8473939a51959.zip | |
Taking advantage of Stafan's excellent suggestion to take advantage of lazy loading page margins.
| -rw-r--r-- | lib/axlsx/workbook/worksheet/page_margins.rb | 8 | ||||
| -rw-r--r-- | lib/axlsx/workbook/worksheet/worksheet.rb | 2 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_page_margins.rb | 16 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_worksheet.rb | 13 |
4 files changed, 14 insertions, 25 deletions
diff --git a/lib/axlsx/workbook/worksheet/page_margins.rb b/lib/axlsx/workbook/worksheet/page_margins.rb index ab67337b..f41e3426 100644 --- a/lib/axlsx/workbook/worksheet/page_margins.rb +++ b/lib/axlsx/workbook/worksheet/page_margins.rb @@ -61,13 +61,6 @@ module Axlsx end end - # True if custom page margins have been specified. - def custom_margins_specified? - !(@left == @right && @right == DEFAULT_LEFT_RIGHT && - @top == @bottom && @bottom == DEFAULT_TOP_BOTTOM && - @header == @footer && @footer == DEFAULT_HEADER_FOOTER) - end - # Set some or all margins at once. # @param [Hash] margins the margins to set (possible keys are :left, :right, :top, :bottom, :header and :footer). def set(margins) @@ -95,7 +88,6 @@ module Axlsx # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to. # @see #custom_margins_specified? def to_xml(xml) - return unless custom_margins_specified? xml.pageMargins :left => left, :right => right, :top => top, :bottom => bottom, :header => header, :footer => footer end end diff --git a/lib/axlsx/workbook/worksheet/worksheet.rb b/lib/axlsx/workbook/worksheet/worksheet.rb index 3882b1db..7622aba0 100644 --- a/lib/axlsx/workbook/worksheet/worksheet.rb +++ b/lib/axlsx/workbook/worksheet/worksheet.rb @@ -348,7 +348,7 @@ module Axlsx } xml.autoFilter :ref=>@auto_filter if @auto_filter xml.mergeCells(:count=>@merged_cells.size) { @merged_cells.each { | mc | xml.mergeCell(:ref=>mc) } } unless @merged_cells.empty? - page_margins.to_xml(xml) + page_margins.to_xml(xml) if @page_margins xml.drawing :"r:id"=>"rId1" if @drawing } end diff --git a/test/workbook/worksheet/tc_page_margins.rb b/test/workbook/worksheet/tc_page_margins.rb index ed3d90d8..3368129c 100644 --- a/test/workbook/worksheet/tc_page_margins.rb +++ b/test/workbook/worksheet/tc_page_margins.rb @@ -10,7 +10,6 @@ class TestPageMargins < Test::Unit::TestCase end def test_initialize - assert_equal(false, @pm.custom_margins_specified?) assert_equal(Axlsx::PageMargins::DEFAULT_LEFT_RIGHT, @pm.left) assert_equal(Axlsx::PageMargins::DEFAULT_LEFT_RIGHT, @pm.right) assert_equal(Axlsx::PageMargins::DEFAULT_TOP_BOTTOM, @pm.top) @@ -21,7 +20,6 @@ class TestPageMargins < Test::Unit::TestCase def test_initialize_with_options optioned = Axlsx::PageMargins.new(:left => 2, :right => 3, :top => 2, :bottom => 1, :header => 0.1, :footer => 0.1) - assert_equal(true, optioned.custom_margins_specified?) assert_equal(2, optioned.left) assert_equal(3, optioned.right) assert_equal(2, optioned.top) @@ -30,14 +28,9 @@ class TestPageMargins < Test::Unit::TestCase assert_equal(0.1, optioned.footer) end - def test_custom_margins_specified - @pm.left = 0.5 - assert(@pm.custom_margins_specified?) - end def test_set_all_values @pm.set(:left => 1.1, :right => 1.2, :top => 1.3, :bottom => 1.4, :header => 0.8, :footer => 0.9) - assert(@pm.custom_margins_specified?) assert_equal(1.1, @pm.left) assert_equal(1.2, @pm.right) assert_equal(1.3, @pm.top) @@ -48,7 +41,6 @@ class TestPageMargins < Test::Unit::TestCase def test_set_some_values @pm.set(:left => 1.1, :right => 1.2) - assert(@pm.custom_margins_specified?) assert_equal(1.1, @pm.left) assert_equal(1.2, @pm.right) assert_equal(Axlsx::PageMargins::DEFAULT_TOP_BOTTOM, @pm.top) @@ -70,14 +62,6 @@ class TestPageMargins < Test::Unit::TestCase assert_equal(1, doc.xpath(".//pageMargins[@left=1.1][@right=1.2][@top=1.3][@bottom=1.4][@header=0.8][@footer=0.9]").size) end - def test_to_xml_is_noop_unless_custom_margins_specified - assert_equal(false, @pm.custom_margins_specified?) - xml = Nokogiri::XML::Builder.new - @pm.to_xml(xml) - doc = Nokogiri::XML.parse(xml.to_xml) - assert_equal(0, doc.children.size) - end - def test_left assert_raise(ArgumentError) { @pm.left = -1.2 } assert_nothing_raised { @pm.left = 1.5 } diff --git a/test/workbook/worksheet/tc_worksheet.rb b/test/workbook/worksheet/tc_worksheet.rb index d7e52f73..b290f06b 100644 --- a/test/workbook/worksheet/tc_worksheet.rb +++ b/test/workbook/worksheet/tc_worksheet.rb @@ -139,6 +139,19 @@ class TestWorksheet < Test::Unit::TestCase assert(errors.empty?, "error free validation") end + def test_valid_with_page_margins + @ws.page_margins.set :left => 9 + schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD)) + doc = Nokogiri::XML(@ws.to_xml) + errors = [] + schema.validate(doc).each do |error| + errors.push error + puts error.message + end + assert(errors.empty?, "error free validation") + + end + def test_relationships assert(@ws.relationships.empty?, "No Drawing relationship until you add a chart") c = @ws.add_chart Axlsx::Pie3DChart |
