lib/bright_serializer/entity/base.rb in bright_serializer-0.2.5 vs lib/bright_serializer/entity/base.rb in bright_serializer-0.3.0
- old
+ new
@@ -12,21 +12,28 @@
def initialize(definition)
@definition = definition
end
def to_h
- Inflector.deep_transform_keys_in_object!(@definition) { |k| Inflector.camel_lower k.to_s }
+ @definition = Inflector.deep_transform_keys_in_object(@definition) { |k| Inflector.camel_lower k.to_s }
parse_ref!
+ evaluate_callable!
@definition
end
def parse_ref!
object = nested_hash(@definition, 'ref')
return unless object
ref_entity_name = Inflector.constantize(object.delete('ref')).entity_name
relation = "#/definitions/#{ref_entity_name}"
object['$ref'] = relation
+ end
+
+ def evaluate_callable!
+ @definition = Inflector.deep_transform_values_in_object(@definition) do |value|
+ value.respond_to?(:call) ? value.call : value
+ end
end
def nested_hash(obj, key)
if obj.respond_to?(:key?) && obj.key?(key)
obj