lib/prawn/document/span.rb in prawn-1.0.0.rc2 vs lib/prawn/document/span.rb in prawn-1.0.0

- old
+ new

@@ -6,50 +6,52 @@ # # This is free software. Please see the LICENSE and COPYING files for details. module Prawn class Document - # A span is a special purpose bounding box that allows a column of - # elements to be positioned relative to the margin_box. + # @group Stable API + + # A span is a special purpose bounding box that allows a column of + # elements to be positioned relative to the margin_box. # # Arguments: # +width+:: The width of the column in PDF points # # Options: # <tt>:position</tt>:: One of :left, :center, :right or an x offset # - # This method is typically used for flowing a column of text from one + # This method is typically used for flowing a column of text from one # page to the next. # # span(350, :position => :center) do # text "Here's some centered text in a 350 point column. " * 100 # end - # + # def span(width, options={}) Prawn.verify_options [:position], options - original_position = self.y - + original_position = self.y + # FIXME: Any way to move this upstream? left_boundary = case(options[:position] || :left) when :left margin_box.absolute_left when :center - margin_box.absolute_left + margin_box.width / 2.0 - width /2.0 + margin_box.absolute_left + margin_box.width / 2.0 - width / 2.0 when :right margin_box.absolute_right - width when Numeric margin_box.absolute_left + options[:position] else raise ArgumentError, "Invalid option for :position" end - + # we need to bust out of whatever nested bounding boxes we're in. canvas do - bounding_box([left_boundary, + bounding_box([left_boundary, margin_box.absolute_top], :width => width) do self.y = original_position yield end - end + end end end end