Class: Prawn::Text::Formatted::Fragment
- Inherits:
-
Object
- Object
- Prawn::Text::Formatted::Fragment
- Defined in:
- lib/prawn/text/formatted/fragment.rb
Overview
Prawn::Text::Formatted::Fragment is a state store for a formatted text fragment. It does not render anything.
Instance Attribute Summary collapse
-
#ascender ⇒ Object
Returns the value of attribute ascender.
-
#baseline ⇒ Object
Returns the value of attribute baseline.
-
#descender ⇒ Object
Returns the value of attribute descender.
-
#format_state ⇒ Object
readonly
Returns the value of attribute format_state.
-
#left ⇒ Object
Returns the value of attribute left.
-
#line_height ⇒ Object
Returns the value of attribute line_height.
-
#text ⇒ Object
readonly
Returns the value of attribute text.
- #width ⇒ Object
-
#word_spacing ⇒ Object
Returns the value of attribute word_spacing.
Instance Method Summary collapse
- #absolute_bottom ⇒ Object
- #absolute_bottom_left ⇒ Object
- #absolute_bottom_right ⇒ Object
- #absolute_bounding_box ⇒ Object
- #absolute_left ⇒ Object
- #absolute_right ⇒ Object
- #absolute_top ⇒ Object
- #absolute_top_left ⇒ Object
- #absolute_top_right ⇒ Object
- #anchor ⇒ Object
- #bottom ⇒ Object
- #bottom_left ⇒ Object
- #bottom_right ⇒ Object
- #bounding_box ⇒ Object
- #callback_objects ⇒ Object
- #character_spacing ⇒ Object
- #color ⇒ Object
- #font ⇒ Object
- #height ⇒ Object
-
#initialize(text, format_state, document) ⇒ Fragment
constructor
A new instance of Fragment.
- #link ⇒ Object
- #right ⇒ Object
- #size ⇒ Object
- #strikethrough_points ⇒ Object
- #styles ⇒ Object
- #subscript? ⇒ Boolean
- #superscript? ⇒ Boolean
- #top ⇒ Object
- #top_left ⇒ Object
- #top_right ⇒ Object
- #underline_points ⇒ Object
- #y_offset ⇒ Object
Constructor Details
#initialize(text, format_state, document) ⇒ Fragment
Returns a new instance of Fragment.
23 24 25 26 27 28 |
# File 'lib/prawn/text/formatted/fragment.rb', line 23 def initialize(text, format_state, document) @text = text @format_state = format_state @document = document @word_spacing = 0 end |
Instance Attribute Details
#ascender ⇒ Object
Returns the value of attribute ascender.
20 21 22 |
# File 'lib/prawn/text/formatted/fragment.rb', line 20 def ascender @ascender end |
#baseline ⇒ Object
Returns the value of attribute baseline.
21 22 23 |
# File 'lib/prawn/text/formatted/fragment.rb', line 21 def baseline @baseline end |
#descender ⇒ Object
Returns the value of attribute descender.
20 21 22 |
# File 'lib/prawn/text/formatted/fragment.rb', line 20 def descender @descender end |
#format_state ⇒ Object (readonly)
Returns the value of attribute format_state.
18 19 20 |
# File 'lib/prawn/text/formatted/fragment.rb', line 18 def format_state @format_state end |
#left ⇒ Object
Returns the value of attribute left.
21 22 23 |
# File 'lib/prawn/text/formatted/fragment.rb', line 21 def left @left end |
#line_height ⇒ Object
Returns the value of attribute line_height.
20 21 22 |
# File 'lib/prawn/text/formatted/fragment.rb', line 20 def line_height @line_height end |
#text ⇒ Object (readonly)
Returns the value of attribute text.
18 19 20 |
# File 'lib/prawn/text/formatted/fragment.rb', line 18 def text @text end |
#width ⇒ Object
30 31 32 33 34 |
# File 'lib/prawn/text/formatted/fragment.rb', line 30 def width if @word_spacing == 0 then @width else @width + @word_spacing * @text.count(" ") end end |
#word_spacing ⇒ Object
Returns the value of attribute word_spacing.
21 22 23 |
# File 'lib/prawn/text/formatted/fragment.rb', line 21 def word_spacing @word_spacing end |
Instance Method Details
#absolute_bottom ⇒ Object
158 159 160 |
# File 'lib/prawn/text/formatted/fragment.rb', line 158 def absolute_bottom absolute_bounding_box[1] end |
#absolute_bottom_left ⇒ Object
170 171 172 |
# File 'lib/prawn/text/formatted/fragment.rb', line 170 def absolute_bottom_left [absolute_left, absolute_bottom] end |
#absolute_bottom_right ⇒ Object
174 175 176 |
# File 'lib/prawn/text/formatted/fragment.rb', line 174 def absolute_bottom_right [absolute_right, absolute_bottom] end |
#absolute_bounding_box ⇒ Object
59 60 61 62 63 64 65 66 |
# File 'lib/prawn/text/formatted/fragment.rb', line 59 def absolute_bounding_box box = bounding_box box[0] += @document.bounds.absolute_left box[2] += @document.bounds.absolute_left box[1] += @document.bounds.absolute_bottom box[3] += @document.bounds.absolute_bottom box end |
#absolute_left ⇒ Object
146 147 148 |
# File 'lib/prawn/text/formatted/fragment.rb', line 146 def absolute_left absolute_bounding_box[0] end |
#absolute_right ⇒ Object
150 151 152 |
# File 'lib/prawn/text/formatted/fragment.rb', line 150 def absolute_right absolute_bounding_box[2] end |
#absolute_top ⇒ Object
154 155 156 |
# File 'lib/prawn/text/formatted/fragment.rb', line 154 def absolute_top absolute_bounding_box[3] end |
#absolute_top_left ⇒ Object
162 163 164 |
# File 'lib/prawn/text/formatted/fragment.rb', line 162 def absolute_top_left [absolute_left, absolute_top] end |
#absolute_top_right ⇒ Object
166 167 168 |
# File 'lib/prawn/text/formatted/fragment.rb', line 166 def absolute_top_right [absolute_right, absolute_top] end |
#anchor ⇒ Object
86 87 88 |
# File 'lib/prawn/text/formatted/fragment.rb', line 86 def anchor @format_state[:anchor] end |
#bottom ⇒ Object
126 127 128 |
# File 'lib/prawn/text/formatted/fragment.rb', line 126 def bottom baseline - descender end |
#bottom_left ⇒ Object
142 143 144 |
# File 'lib/prawn/text/formatted/fragment.rb', line 142 def bottom_left [left, bottom] end |
#bottom_right ⇒ Object
138 139 140 |
# File 'lib/prawn/text/formatted/fragment.rb', line 138 def bottom_right [right, bottom] end |
#bounding_box ⇒ Object
55 56 57 |
# File 'lib/prawn/text/formatted/fragment.rb', line 55 def bounding_box [left, bottom, right, top] end |
#callback_objects ⇒ Object
107 108 109 110 111 112 113 114 115 116 |
# File 'lib/prawn/text/formatted/fragment.rb', line 107 def callback_objects callback = @format_state[:callback] if callback.nil? [] elsif callback.is_a?(Array) callback else [callback] end end |
#character_spacing ⇒ Object
102 103 104 105 |
# File 'lib/prawn/text/formatted/fragment.rb', line 102 def character_spacing @format_state[:character_spacing] || @document.character_spacing end |
#color ⇒ Object
90 91 92 |
# File 'lib/prawn/text/formatted/fragment.rb', line 90 def color @format_state[:color] end |
#font ⇒ Object
94 95 96 |
# File 'lib/prawn/text/formatted/fragment.rb', line 94 def font @format_state[:font] end |
#height ⇒ Object
36 37 38 |
# File 'lib/prawn/text/formatted/fragment.rb', line 36 def height top - bottom end |
#link ⇒ Object
82 83 84 |
# File 'lib/prawn/text/formatted/fragment.rb', line 82 def link @format_state[:link] end |
#right ⇒ Object
118 119 120 |
# File 'lib/prawn/text/formatted/fragment.rb', line 118 def right left + width end |
#size ⇒ Object
98 99 100 |
# File 'lib/prawn/text/formatted/fragment.rb', line 98 def size @format_state[:size] end |
#strikethrough_points ⇒ Object
73 74 75 76 |
# File 'lib/prawn/text/formatted/fragment.rb', line 73 def strikethrough_points y = baseline + ascender * 0.3 [[left, y], [right, y]] end |
#styles ⇒ Object
78 79 80 |
# File 'lib/prawn/text/formatted/fragment.rb', line 78 def styles @format_state[:styles] || [] end |
#subscript? ⇒ Boolean
40 41 42 |
# File 'lib/prawn/text/formatted/fragment.rb', line 40 def subscript? styles.include?(:subscript) end |
#superscript? ⇒ Boolean
44 45 46 |
# File 'lib/prawn/text/formatted/fragment.rb', line 44 def superscript? styles.include?(:superscript) end |
#top ⇒ Object
122 123 124 |
# File 'lib/prawn/text/formatted/fragment.rb', line 122 def top baseline + ascender end |
#top_left ⇒ Object
130 131 132 |
# File 'lib/prawn/text/formatted/fragment.rb', line 130 def top_left [left, top] end |
#top_right ⇒ Object
134 135 136 |
# File 'lib/prawn/text/formatted/fragment.rb', line 134 def top_right [right, top] end |
#underline_points ⇒ Object
68 69 70 71 |
# File 'lib/prawn/text/formatted/fragment.rb', line 68 def underline_points y = baseline - 1.25 [[left, y], [right, y]] end |
#y_offset ⇒ Object
48 49 50 51 52 53 |
# File 'lib/prawn/text/formatted/fragment.rb', line 48 def y_offset if subscript? then -descender elsif superscript? then 0.85 * ascender else 0 end end |