class MultiMovingsign::PageSegment
Attributes
line_definitions[RW]
title[RW]
Public Class Methods
new(title, line_definitions)
click to toggle source
# File lib/multi_movingsign/page_renderer.rb, line 168 def initialize(title, line_definitions) self.title = title self.line_definitions = line_definitions end
Public Instance Methods
calculate_screens(number_of_signs, sign_width)
click to toggle source
Turns a single page segment into n rendered screens of information
# 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?()
click to toggle source
# File lib/multi_movingsign/page_renderer.rb, line 177 def line_definitions? !self.line_definitions.empty? end
title?()
click to toggle source
# File lib/multi_movingsign/page_renderer.rb, line 173 def title? !!self.title end