class ImageParadise::Gruff::Layer
Attributes
name[R]
Public Class Methods
new(base_dir, folder_name)
click to toggle source
# File lib/image_paradise/graphs/scene.rb, line 140 def initialize(base_dir, folder_name) @base_dir = base_dir.to_s @name = folder_name.to_s @filenames = Dir.open(File.join(base_dir, folder_name)).entries.select { |file| file =~ /^[^.]+\.png$/ }.sort @selected_filename = select_default end
Public Instance Methods
observe(obj)
click to toggle source
Register this layer so it receives updates from the group
# File lib/image_paradise/graphs/scene.rb, line 148 def observe(obj) obj.add_observer self end
path()
click to toggle source
Returns the full path to the selected image, or a blank string
# File lib/image_paradise/graphs/scene.rb, line 171 def path unless @selected_filename.nil? || @selected_filename.empty? return File.join(@base_dir, @name, @selected_filename) end '' end
update(value)
click to toggle source
Choose the appropriate filename for this layer, based on the input
# File lib/image_paradise/graphs/scene.rb, line 153 def update(value) @selected_filename = case value.to_s when /^(true|false)$/ select_boolean value when /^(\w|\s)+$/ select_string value when /^-?(\d+\.)?\d+$/ select_numeric value when /(\d\d):(\d\d):\d\d/ select_time "#{$1}#{$2}" else select_default end # Finally, try to use 'default' if we're still blank @selected_filename ||= select_default end
Private Instance Methods
file_exists_or_blank(filename)
click to toggle source
Returns the string “#{filename}.png”, if it exists.
Failing that, it returns default.png, or ” if that doesn’t exist.
# File lib/image_paradise/graphs/scene.rb, line 212 def file_exists_or_blank(filename) @filenames.include?("#{filename}.png") ? "#{filename}.png" : select_default end
select_boolean(value)
click to toggle source
Match “true.png” or “false.png”
# File lib/image_paradise/graphs/scene.rb, line 181 def select_boolean(value) file_exists_or_blank value.to_s end
select_default()
click to toggle source
# File lib/image_paradise/graphs/scene.rb, line 205 def select_default @filenames.include?("default.png") ? "default.png" : '' end
select_numeric(value)
click to toggle source
Match -5 to _5.png
# File lib/image_paradise/graphs/scene.rb, line 186 def select_numeric(value) file_exists_or_blank value.to_s.gsub('-', '_') end
select_string(value)
click to toggle source
Match “partly cloudy” to “partly_cloudy.png”
# File lib/image_paradise/graphs/scene.rb, line 201 def select_string(value) file_exists_or_blank value.to_s.gsub(' ', '_') end
select_time(value)
click to toggle source
# File lib/image_paradise/graphs/scene.rb, line 190 def select_time(value) times = @filenames.map { |filename| filename.gsub('.png', '') } times.each_with_index do |time, index| if (time > value) && (index > 0) return "#{times[index - 1]}.png" end end return "#{times.last}.png" end