Sha256: cc4e0b2011791696226a5a1b77bfd540b242bc086662182e307b6d395308c804
Contents?: true
Size: 1.43 KB
Versions: 10
Compression:
Stored size: 1.43 KB
Contents
module Postmark module HashHelper extend self 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 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 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 end end
Version data entries
10 entries across 10 versions & 1 rubygems