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