module Render::Type
Attributes
instances[RW]
Public Class Methods
add!(name, klass)
click to toggle source
# File lib/render/type.rb, line 16 def add!(name, klass) self.instances.merge!({ formatted_name(name) => klass }) end
find(name)
click to toggle source
# File lib/render/type.rb, line 20 def find(name) class_for_name(name) || class_for_name(render_name(name)) end
parse(name, raise_error = false)
click to toggle source
# File lib/render/type.rb, line 24 def parse(name, raise_error = false) return name.collect { |union_type| parse(union_type, raise_error) } if name.is_a?(Array) return nil if (name.nil?) return name unless name.is_a?(String) || name.is_a?(Symbol) Render::Type.find(name) || Object.const_get(name.capitalize) rescue NameError raise Errors::InvalidType.new(name) if raise_error end
parse!(name)
click to toggle source
# File lib/render/type.rb, line 34 def parse!(name) parse(name, true) end
to(classes, value)
click to toggle source
# File lib/render/type.rb, line 38 def to(classes, value) return nil if (value.nil? || classes.any?(&:nil?)) return value if classes.any? { |klass| value.is_a?(klass) } case(classes.first.name) when Float.name value.to_f when Integer.name value.to_i when String.name value.to_s when Boolean.name return true if (value == true || value == "true") return false if (value == false || value == "false") else value end end
Private Class Methods
add_render_specific_type!(name)
click to toggle source
# File lib/render/type.rb, line 74 def add_render_specific_type!(name) add!(render_name(name), Type.const_get(name)) end
class_for_name(name)
click to toggle source
# File lib/render/type.rb, line 59 def class_for_name(name) instances.each do |(instance_name, instance_class)| return instance_class if name.to_s.match(/#{instance_name}/i) end nil end
formatted_name(name)
click to toggle source
# File lib/render/type.rb, line 66 def formatted_name(name) name.to_s.downcase.to_sym end
render_name(name)
click to toggle source
# File lib/render/type.rb, line 70 def render_name(name) formatted_name("render_#{name}") end