Sha256: bbc70ed0ed1867e9342d96634a772b0e5ab6c0260e6d986e7a197751dd58980d

Contents?: true

Size: 936 Bytes

Versions: 1

Compression:

Stored size: 936 Bytes

Contents

class Sendgrid::Web::Parameters < Hash

  def []=(key, value)
    super(key, _cleanse_value(value))
  end

  def merge!(hash = {})
    super(_cleanse(hash))
  end

  def merge(hash = {})
    super(_cleanse(hash))
  end

  def replace(hash = {})
    super(_cleanse(hash))
  end

  def store(key, value)
    super(key, _cleanse_value(value))
  end

  def update(hash = {})
    super(_cleanse(hash))
  end

  private

  def _cleanse(hash)
    cleansed = Sendgrid::Web::Parameters.new
    hash.each do |k, v|
      cleansed[k] = _cleanse_value(v) unless v.nil?
    end
    cleansed
  end

  def _cleanse_value(value)
    if value.is_a?(Hash) || value.is_a?(Sendgrid::Web::Parameters)
      value = _cleanse(value)
    elsif value.is_a?(Array)
      value = value.collect { |v| _cleanse_value(v) }
    elsif value.respond_to?(:strftime)
      value = value.strftime('%Y-%m-%d')
    else
      value = value.to_s
    end
    value
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sendgrid-web-0.1.0 lib/sendgrid/web/parameters.rb