Sha256: 7b37cada862bd4150c4781a2cd09192ffd75b738140be782244dafa921da97a8

Contents?: true

Size: 650 Bytes

Versions: 2

Compression:

Stored size: 650 Bytes

Contents

module Mutations
  class SymbolFilter < AdditionalFilter
    @default_options = {
      :nils => false,    # true allows an explicit nil to be valid. Overrides any other options
      :in => nil,        # Can be an array like %i(red blue green)
    }

    def filter(data)
      if data.nil?
        return [nil, nil] if options[:nils]
        return [nil, :nils]
      end

      case data
      when Symbol # we're good!
      when String then data = data.to_sym
      else return [nil, :symbol]
      end

      # Ensure it matches `in`
      return [data, :in] if options[:in] && !options[:in].include?(data)

      [data, nil]
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mutations-0.9.1 lib/mutations/symbol_filter.rb
mutations-0.9.0 lib/mutations/symbol_filter.rb