module Normalizr

Constants

VERSION

Public Instance Methods

configuration() click to toggle source
# File lib/normalizr.rb, line 14
def configuration
  @configuration ||= Configuration.new
end
configure(&block) click to toggle source
# File lib/normalizr.rb, line 18
def configure(&block)
  unless block_given?
    raise ArgumentError, '.configure must be called with a block'
  end

  configuration.instance_eval(&block)
end
find(name) click to toggle source
# File lib/normalizr.rb, line 26
def find(name)
  unless name.respond_to?(:call)
    configuration.normalizers.fetch(name) { raise MissingNormalizer.new(name) }
  else
    name
  end
end
normalize(obj, *normalizers) click to toggle source
# File lib/normalizr.rb, line 44
def normalize(obj, *normalizers)
  normalizers_with_default(normalizers).reduce(obj) do |memo, name|
    name, options = name.first if Hash === name

    process(memo, name, options)
  end
end
process(obj, name, options) click to toggle source
# File lib/normalizr.rb, line 34
def process(obj, name, options)
  if Array === obj
    obj.map { |item| process(item, name, options) }.tap do |ary|
      ary.compact! if name == :blank
    end
  else
    find(name).call(obj, options)
  end
end

Private Instance Methods

normalizers_with_default(normalizers) click to toggle source
# File lib/normalizr.rb, line 54
def normalizers_with_default(normalizers)
  default_index = normalizers.index(:default)

  normalizers[default_index.to_i] = configuration.default_normalizers if normalizers.empty? || default_index
  normalizers.flatten!
  normalizers
end