From d90004e372f74ca3e3b59f9926445933e50735cf Mon Sep 17 00:00:00 2001 From: Randy Morgan Date: Thu, 17 May 2012 09:13:10 +0900 Subject: helper method for handling page fitting. --- lib/axlsx/workbook/worksheet/page_setup.rb | 21 ++++++++++++++++----- 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 -- cgit v1.2.3