class Blueprinter::AutoExtractor

@api private

Public Class Methods

new() click to toggle source
# File lib/blueprinter/extractors/auto_extractor.rb, line 6
def initialize
  @hash_extractor = HashExtractor.new
  @public_send_extractor = PublicSendExtractor.new
  @block_extractor = BlockExtractor.new
  @datetime_formatter = DateTimeFormatter.new
end

Public Instance Methods

extract(field_name, object, local_options, options = {}) click to toggle source
# File lib/blueprinter/extractors/auto_extractor.rb, line 13
def extract(field_name, object, local_options, options = {})
  extraction = extractor(object, options).extract(field_name, object, local_options, options)
  value = @datetime_formatter.format(extraction, options)
  use_default_value?(value, options[:default_if]) ? default_value(options) : value
end

Private Instance Methods

default_value(field_options) click to toggle source
# File lib/blueprinter/extractors/auto_extractor.rb, line 21
def default_value(field_options)
  field_options.key?(:default) ? field_options.fetch(:default) : Blueprinter.configuration.field_default
end
extractor(object, options) click to toggle source
# File lib/blueprinter/extractors/auto_extractor.rb, line 25
def extractor(object, options)
  if options[:block]
    @block_extractor
  elsif object.is_a?(Hash)
    @hash_extractor
  else
    @public_send_extractor
  end
end