diff options
| author | Randy Morgan <[email protected]> | 2012-05-17 09:13:10 +0900 |
|---|---|---|
| committer | Randy Morgan <[email protected]> | 2012-05-17 09:13:10 +0900 |
| commit | d90004e372f74ca3e3b59f9926445933e50735cf (patch) | |
| tree | c6914b0b7908895258279af55bd1a7b70e5fe125 | |
| parent | 2c8d79816ef12b2b90211aafdd78bc141220f161 (diff) | |
| download | caxlsx-d90004e372f74ca3e3b59f9926445933e50735cf.tar.gz caxlsx-d90004e372f74ca3e3b59f9926445933e50735cf.zip | |
helper method for handling page fitting.
| -rw-r--r-- | lib/axlsx/workbook/worksheet/page_setup.rb | 21 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_page_setup.rb | 13 |
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 |
