summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRandy Morgan <[email protected]>2012-05-17 09:13:10 +0900
committerRandy Morgan <[email protected]>2012-05-17 09:13:10 +0900
commitd90004e372f74ca3e3b59f9926445933e50735cf (patch)
treec6914b0b7908895258279af55bd1a7b70e5fe125
parent2c8d79816ef12b2b90211aafdd78bc141220f161 (diff)
downloadcaxlsx-d90004e372f74ca3e3b59f9926445933e50735cf.tar.gz
caxlsx-d90004e372f74ca3e3b59f9926445933e50735cf.zip
helper method for handling page fitting.
-rw-r--r--lib/axlsx/workbook/worksheet/page_setup.rb21
-rw-r--r--test/workbook/worksheet/tc_page_setup.rb13
2 files changed, 28 insertions, 6 deletions
diff --git a/lib/axlsx/workbook/worksheet/page_setup.rb b/lib/axlsx/workbook/worksheet/page_setup.rb
index af5f2411..fa929d31 100644
--- a/lib/axlsx/workbook/worksheet/page_setup.rb
+++ b/lib/axlsx/workbook/worksheet/page_setup.rb
@@ -65,17 +65,28 @@ module Axlsx
end
# @see fit_to_height
- def fit_to_height=(v); Axlsx::validate_unsigned_int(v); @fit_to_height = v end
+ def fit_to_height=(v); Axlsx::validate_unsigned_int(v); @fit_to_height = v; end
# @see fit_to_width
- def fit_to_width=(v); Axlsx::validate_unsigned_int(v); @fit_to_width = v end
+ def fit_to_width=(v); Axlsx::validate_unsigned_int(v); @fit_to_width = v; end
# @see orientation
- def orientation=(v); Axlsx::validate_page_orientation(v); @orientation = v end
+ def orientation=(v); Axlsx::validate_page_orientation(v); @orientation = v; end
# @see paper_height
- def paper_height=(v); Axlsx::validate_number_with_unit(v); @paper_height = v end
+ def paper_height=(v); Axlsx::validate_number_with_unit(v); @paper_height = v; end
# @see paper_width
- def paper_width=(v); Axlsx::validate_number_with_unit(v); @paper_width = v end
+ def paper_width=(v); Axlsx::validate_number_with_unit(v); @paper_width = v; end
# @see scale
def scale=(v); Axlsx::validate_page_scale(v); @scale = v; end
+
+ # convenience method to achieve sanity when setting fit_to_width and fit_to_height
+ # as they both default to 1 if only their counterpart is specified.
+ # @note This method will overwrite any value you explicitly set via the fit_to_height or fit_to_width methods.
+ # @option options [Integer] width The number of pages to fit this worksheet on horizontally. Default 9999
+ # @option options [Integer] height The number of pages to fit this worksheet on vertically. Default 9999
+ def fit_to(options={})
+ self.fit_to_width = options[:width] || 9999
+ self.fit_to_height = options[:height] || 9999
+ [@fit_to_width, @fit_to_height]
+ end
# Serializes the page settings element.
# @param [String] str
diff --git a/test/workbook/worksheet/tc_page_setup.rb b/test/workbook/worksheet/tc_page_setup.rb
index fee9fb7e..cdf94b65 100644
--- a/test/workbook/worksheet/tc_page_setup.rb
+++ b/test/workbook/worksheet/tc_page_setup.rb
@@ -106,5 +106,16 @@ class TestPageSetup < Test::Unit::TestCase
assert_nothing_raised { @ps.scale = 99 }
assert_equal(99, @ps.scale)
end
-
+
+ def test_fit_to
+ fits = @ps.fit_to(:width => 1)
+ assert_equal([1, 9999], fits)
+ fits = @ps.fit_to :height => 1
+ assert_equal(fits, [9999,1])
+ fits = @ps.fit_to :height => 7, :width => 2
+ assert_equal(fits, [2, 7])
+ assert_raise(ArgumentError) { puts @ps.fit_to(:width => true)}
+
+
+ end
end