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