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

.instancesObject

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