lib/porridge/factory.rb in porridge-0.2.2 vs lib/porridge/factory.rb in porridge-0.3.0
- old
+ new
@@ -33,48 +33,73 @@
def custom_extractor(callback)
extractor callback
end
+ def attribute_extractor(name: nil, callback: nil, &block)
+ custom_extractor(callback || block) || from_name_extractor(name)
+ end
+
def association_extractor(serializer:, extractor: nil, extraction_name: nil, callback: nil, &block)
extractor SerializingExtractor.new(
- extractor || custom_extractor(callback) || custom_extractor(block) || from_name_extractor(extraction_name),
+ extractor || attribute_extractor(name: extraction_name, callback: callback, &block),
serializer
)
end
- alias belongs_to_extractor association_extractor
- alias has_many_extractor association_extractor
+ def belongs_to_extractor(...)
+ association_extractor(...)
+ end
+
+ def has_many_extractor(...) # rubocop:disable Naming/PredicateName
+ association_extractor(...)
+ end
+
def serializer(base)
return nil if base.nil?
Serializer.ensure_valid!(base)
base
end
def chain_serializer(*bases)
serializer ChainSerializer.new(*bases)
end
- alias serializers chain_serializer
+ def serializers(...)
+ chain_serializer(...)
+ end
+
def for_extracted_serializer(serializer, extractor)
serializer SerializerForExtracted.new(serializer, extractor)
end
- alias serializer_for_extracted for_extracted_serializer
+ def serializer_for_extracted(...)
+ for_extracted_serializer(...)
+ end
+
def field_serializer(name, extractor)
serializer FieldSerializer.new(name, extractor)
end
def attribute_field_serializer(name, callback = nil, extraction_name: nil, &block)
- extractor = custom_extractor(callback || block) || from_name_extractor(extraction_name || name)
- field_serializer(name, extractor)
+ field_serializer(name, attribute_extractor(name: extraction_name || name, callback: callback, &block))
end
+ def attributes_field_serializer(*names)
+ serializers(*names.map { |name| attribute_field_serializer(name) })
+ end
+
def association_field_serializer(name, options = {}, &block)
options[:extraction_name] ||= name
field_serializer(name, association_extractor(**options, &block))
end
- alias belongs_to_field_serializer association_field_serializer
- alias has_many_field_serializer association_field_serializer
+
+ def belongs_to_field_serializer(...)
+ association_field_serializer(...)
+ end
+
+ def has_many_field_serializer(...) # rubocop:disable Naming/PredicateName
+ association_field_serializer(...)
+ end
end
end