Sha256: 69a6c6692c9b4a7daf7aa50efad5b34f88cf23de0eae648d62e450f90e5df25d

Contents?: true

Size: 825 Bytes

Versions: 2

Compression:

Stored size: 825 Bytes

Contents

require 'delegate'
require 'time'
require 'peddler/structured_list'

module Peddler
  # @api private
  class Operation < SimpleDelegator
    def initialize(action)
      super('Action' => action)
    end

    def structure!(*list_keys)
      list_key = list_keys.first

      if has_key?(list_key)
        builder = StructuredList.new(*list_keys)
        vals = delete(list_key)
        update(builder.build(vals))
      end

      self
    end

    def store(key, val)
      key = camelize(key) if key.is_a?(Symbol)
      val = val.iso8601 if val.respond_to?(:iso8601)

      __getobj__.store(key, val)
    end

    def update(hsh)
      hsh.each { |key, val| store(key, val) }
      self
    end

    alias :add :update

    private

    def camelize(sym)
      sym.to_s.split('_').map(&:capitalize).join
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
peddler-0.7.1 lib/peddler/operation.rb
peddler-0.7.0 lib/peddler/operation.rb