module Postmark::HashHelper

Public Instance Methods

to_postmark(object, options = {}) click to toggle source
# File lib/postmark/helpers/hash_helper.rb, line 6
def to_postmark(object, options = {})
  deep = options.fetch(:deep, false)

  case object
  when Hash
    object.reduce({}) do |m, (k, v)|
      m.tap do |h|
        h[Inflector.to_postmark(k)] = deep ? to_postmark(v, options) : v
      end
    end
  when Array
    deep ? object.map { |v| to_postmark(v, options) } : object
  else
    object
  end
end
to_ruby(object, options = {}) click to toggle source
# File lib/postmark/helpers/hash_helper.rb, line 23
def to_ruby(object, options = {})
  compatible = options.fetch(:compatible, false)
  deep = options.fetch(:deep, false)

  case object
  when Hash
    object.reduce({}) do |m, (k, v)|
      m.tap do |h|
        h[Inflector.to_ruby(k)] = deep ? to_ruby(v, options) : v
      end
    end.tap do |result|
      if compatible
        result.merge!(object)
        enhance_with_compatibility_warning(result)
      end
    end
  when Array
    deep ? object.map { |v| to_ruby(v, options) } : object
  else
    object
  end
end

Private Instance Methods

enhance_with_compatibility_warning(hash) click to toggle source
# File lib/postmark/helpers/hash_helper.rb, line 48
def enhance_with_compatibility_warning(hash)
  def hash.[](key)
    if key.is_a? String
      Kernel.warn("Postmark: the CamelCased String keys of response are " \
                  "deprecated in favor of underscored symbols. The " \
                  "support will be dropped in the future.")
    end
    super
  end
end