Sha256: 43415a3d8402984124d112fa79d56ffee6ba264b002a995521ffc1dbb749150c

Contents?: true

Size: 1.02 KB

Versions: 4

Compression:

Stored size: 1.02 KB

Contents

module Polo

  class Configuration
    attr_reader :on_duplicate_strategy, :blacklist, :adapter

    def initialize(options={})
      options = { on_duplicate: nil, obfuscate: {}, adapter: :mysql }.merge(options)
      @adapter = options[:adapter]
      @on_duplicate_strategy = options[:on_duplicate]
      obfuscate(options[:obfuscate])
    end

    # TODO: document this
    # This normalizes an array or hash of fields to a hash of
    # { field_name => strategy }
    def obfuscate(*fields)
      if fields.is_a?(Array)
        fields = fields.flatten
      end

      fields_and_strategies = {}

      fields.each do |field|
        if field.is_a?(Symbol) || field.is_a?(String)
          fields_and_strategies[field] = nil
        elsif field.is_a?(Hash)
          fields_and_strategies = fields_and_strategies.merge(field)
        end
      end

      @blacklist = fields_and_strategies
    end

    def on_duplicate(strategy)
      @on_duplicate_strategy = strategy
    end

    def set_adapter(db)
      @adapter = db
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
polo-0.5.0 lib/polo/configuration.rb
polo-0.4.1 lib/polo/configuration.rb
polo-0.4.0 lib/polo/configuration.rb
polo-0.3.0 lib/polo/configuration.rb