Module: Render::Type
- Defined in:
- lib/render/type.rb
Defined Under Namespace
Classes: Boolean, Date, Email, Enum, Hostname, IPv4, IPv6
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.instances ⇒ Object
Returns the value of attribute instances.
14
15
16
|
# File 'lib/render/type.rb', line 14
def instances
@instances
end
|
Class Method Details
.add!(name, klass) ⇒ Object
16
17
18
|
# File 'lib/render/type.rb', line 16
def add!(name, klass)
self.instances.merge!({ formatted_name(name) => klass })
end
|
.find(name) ⇒ Object
20
21
22
|
# 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) ⇒ Object
24
25
26
27
28
29
30
31
|
# File 'lib/render/type.rb', line 24
def parse(name, raise_error = false)
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) ⇒ Object
33
34
35
|
# File 'lib/render/type.rb', line 33
def parse!(name)
parse(name, true)
end
|
.to(classes, value, enums = nil) ⇒ Object
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/render/type.rb', line 37
def to(classes, value, enums = nil)
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")
when Enum.name
(enums & [value]).first
else
value
end
end
|