summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRandy Morgan <[email protected]>2012-02-26 18:54:29 +0900
committerRandy Morgan <[email protected]>2012-02-26 18:54:29 +0900
commitdc1f2922b1a546009ce3c4d937e8473939a51959 (patch)
treef6d229892da50851002bdf13b32fa9221096e794
parent568a9005d80021bc2b02fabaa9dbe91080d5cf51 (diff)
downloadcaxlsx-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.rb8
-rw-r--r--lib/axlsx/workbook/worksheet/worksheet.rb2
-rw-r--r--test/workbook/worksheet/tc_page_margins.rb16
-rw-r--r--test/workbook/worksheet/tc_worksheet.rb13
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