lib/dolly/property.rb in dolly-3.1.0 vs lib/dolly/property.rb in dolly-3.1.1
- old
+ new
@@ -14,14 +14,19 @@
end
def cast_value(value)
return set_default if value.nil?
return value unless class_name
- return self_klass.new(value) unless respond_to?(klass_sym)
+ return custom_class(value) unless respond_to?(klass_sym)
send(klass_sym, value)
end
+ def custom_class(value)
+ value = value.is_a?(Hash) ? value.symbolize_keys : value
+ self_klass.new(value)
+ end
+
def boolean?
[TrueClass, FalseClass].include?(class_name)
end
def string_value(value)
@@ -30,10 +35,18 @@
def hash_value(value)
value.to_h
end
+ def hash_with_indifferent_access_value(value)
+ if defined?(Rails)
+ value.to_h.with_indifferent_access
+ else
+ value.to_h
+ end
+ end
+
def integer_value(value)
value.to_i
end
def float_value(value)
@@ -68,10 +81,16 @@
def truthy_value?(value)
value =~ /true/ || value === true
end
def klass_sym
- :"#{self_klass.name.underscore}_value"
+ klass_name = self_klass.
+ name.
+ split('::').
+ last.
+ underscore
+
+ :"#{klass_name}_value"
end
def self_klass
return unless class_name
return class_name if class_name.is_a?(Class)