Class: MultiMovingsign::PageSegment
- Inherits:
-
Object
- Object
- MultiMovingsign::PageSegment
- Defined in:
- lib/multi_movingsign/page_renderer.rb
Instance Attribute Summary collapse
-
#line_definitions ⇒ Object
Returns the value of attribute line_definitions.
-
#title ⇒ Object
Returns the value of attribute title.
Instance Method Summary collapse
-
#calculate_screens(number_of_signs, sign_width) ⇒ Object
Turns a single page segment into n rendered screens of information.
-
#initialize(title, line_definitions) ⇒ PageSegment
constructor
A new instance of PageSegment.
- #line_definitions? ⇒ Boolean
- #title? ⇒ Boolean
Constructor Details
#initialize(title, line_definitions) ⇒ PageSegment
Returns a new instance of PageSegment.
168 169 170 171 |
# File 'lib/multi_movingsign/page_renderer.rb', line 168 def initialize(title, line_definitions) self.title = title self.line_definitions = line_definitions end |
Instance Attribute Details
#line_definitions ⇒ Object
Returns the value of attribute line_definitions.
166 167 168 |
# File 'lib/multi_movingsign/page_renderer.rb', line 166 def line_definitions @line_definitions end |
#title ⇒ Object
Returns the value of attribute title.
165 166 167 |
# File 'lib/multi_movingsign/page_renderer.rb', line 165 def title @title end |
Instance Method Details
#calculate_screens(number_of_signs, sign_width) ⇒ Object
Turns a single page segment into n rendered screens of information
182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/multi_movingsign/page_renderer.rb', line 182 def calculate_screens(number_of_signs, sign_width) raise "Title too long!" if title? && PageRenderer.calculate_width(title) > sign_width if title? && !line_definitions? return Screen.new [title] end screens = [] #puts line_definitions.map { |d| d.line_segments.map { |s| s.split_if_necessary(sign_width).map { |s| s.to_s} } }.inspect num_of_line_segments = line_definitions.map { |d| d.line_segments.length }.max (0..(num_of_line_segments - 1)).each do |segment_index| subsegments = line_definitions.map { |d| (s = d.line_segments[segment_index]) ? s.split_if_necessary(sign_width) : [] } num_of_subsegments = subsegments.map { |s| s.length }.max (0..(num_of_subsegments-1)).each do |subsegment_index| lines = [] lines << title if title? lines.concat subsegments.map { |s| s[subsegment_index % s.length] || "" } screens << Screen.new(lines) end end screens end |
#line_definitions? ⇒ Boolean
177 178 179 |
# File 'lib/multi_movingsign/page_renderer.rb', line 177 def line_definitions? !self.line_definitions.empty? end |
#title? ⇒ Boolean
173 174 175 |
# File 'lib/multi_movingsign/page_renderer.rb', line 173 def title? !!self.title end |