Class: Dolly::Property
- Inherits:
-
Object
- Object
- Dolly::Property
- Defined in:
- lib/dolly/property.rb
Constant Summary collapse
- CANT_CLONE =
[NilClass, TrueClass, FalseClass, Integer]
Instance Attribute Summary collapse
-
#class_name ⇒ Object
readonly
Returns the value of attribute class_name.
-
#default ⇒ Object
readonly
Returns the value of attribute default.
-
#key ⇒ Object
readonly
Returns the value of attribute key.
Instance Method Summary collapse
- #boolean? ⇒ Boolean
- #cast_value(value) ⇒ Object
- #custom_class(value) ⇒ Object
- #date_time_value(value) ⇒ Object
- #date_value(value) ⇒ Object
- #false_class_value(value) ⇒ Object
- #float_value(value) ⇒ Object
- #hash_value(value) ⇒ Object
- #hash_with_indifferent_access_value(value) ⇒ Object
-
#initialize(key, class_name, default = nil) ⇒ Property
constructor
A new instance of Property.
- #integer_value(value) ⇒ Object
- #string_value(value) ⇒ Object
- #time_value(value) ⇒ Object
- #true_class_value(value) ⇒ Object
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_name ⇒ Object (readonly)
Returns the value of attribute class_name.
5 6 7 |
# File 'lib/dolly/property.rb', line 5 def class_name @class_name end |
#default ⇒ Object (readonly)
Returns the value of attribute default.
5 6 7 |
# File 'lib/dolly/property.rb', line 5 def default @default end |
#key ⇒ Object (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
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 |