Class: Dolly::Property

Inherits:
Object
  • Object
show all
Defined in:
lib/dolly/property.rb

Constant Summary collapse

CANT_CLONE =
[NilClass, TrueClass, FalseClass, Integer]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(key, class_name, default = nil) ⇒ Property

Returns a new instance of Property.



10
11
12
13
14
# File 'lib/dolly/property.rb', line 10

def initialize(key, class_name, default = nil)
  @key = key
  @default = default
  @class_name = class_name
end

Instance Attribute Details

#class_nameObject (readonly)

Returns the value of attribute class_name.



5
6
7
# File 'lib/dolly/property.rb', line 5

def class_name
  @class_name
end

#defaultObject (readonly)

Returns the value of attribute default.



5
6
7
# File 'lib/dolly/property.rb', line 5

def default
  @default
end

#keyObject (readonly)

Returns the value of attribute key.



5
6
7
# File 'lib/dolly/property.rb', line 5

def key
  @key
end

Instance Method Details

#boolean?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/dolly/property.rb', line 28

def boolean?
  [TrueClass, FalseClass].include?(class_name)
end

#cast_value(value) ⇒ Object



16
17
18
19
20
21
# File 'lib/dolly/property.rb', line 16

def cast_value(value)
  return set_default if value.nil?
  return value unless class_name
  return custom_class(value) unless respond_to?(klass_sym)
  send(klass_sym, value)
end

#custom_class(value) ⇒ Object



23
24
25
26
# File 'lib/dolly/property.rb', line 23

def custom_class(value)
  value = value.is_a?(Hash) ? value.symbolize_keys : value
  self_klass.new(value)
end

#date_time_value(value) ⇒ Object



66
67
68
69
# File 'lib/dolly/property.rb', line 66

def date_time_value(value)
  return value.to_datetime if value.respond_to?(:to_datetime)
  DateTime.parse(value)
end

#date_value(value) ⇒ Object



56
57
58
59
# File 'lib/dolly/property.rb', line 56

def date_value(value)
  return value.to_date if value.respond_to?(:to_date)
  Date.parse(value)
end

#false_class_value(value) ⇒ Object



75
76
77
# File 'lib/dolly/property.rb', line 75

def false_class_value(value)
  truthy_value?(value)
end

#float_value(value) ⇒ Object



52
53
54
# File 'lib/dolly/property.rb', line 52

def float_value(value)
  value.to_f
end

#hash_value(value) ⇒ Object



36
37
38
# File 'lib/dolly/property.rb', line 36

def hash_value(value)
  value.to_h
end

#hash_with_indifferent_access_value(value) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/dolly/property.rb', line 40

def hash_with_indifferent_access_value(value)
  if defined?(Rails)
    value.to_h.with_indifferent_access
  else
    value.to_h
  end
end

#integer_value(value) ⇒ Object



48
49
50
# File 'lib/dolly/property.rb', line 48

def integer_value(value)
  value.to_i
end

#string_value(value) ⇒ Object



32
33
34
# File 'lib/dolly/property.rb', line 32

def string_value(value)
  value.to_s
end

#time_value(value) ⇒ Object



61
62
63
64
# File 'lib/dolly/property.rb', line 61

def time_value(value)
  return value.to_time if value.respond_to?(:to_time)
  DateTime.parse(value).to_time
end

#true_class_value(value) ⇒ Object



71
72
73
# File 'lib/dolly/property.rb', line 71

def true_class_value(value)
  truthy_value?(value)
end