Sha256: e6764c636e8847d8bd2a59ac5f90caa34c692d578f8acdb50ab0b2a46b5a56a6
Contents?: true
Size: 1.07 KB
Versions: 4
Compression:
Stored size: 1.07 KB
Contents
class SCHash end require 'hashie/hash' require 'hashie/mash' module Hashie class SCHash < Hashie::Mash protected def convert_key(key) #:nodoc: underscore_string(key.to_s) end # Unlike its parent Mash, a Rash will convert other Hashie::Hash values to a Rash when assigning # instead of respecting the existing subclass def convert_value(val, duping=false) #:nodoc: case val when self.class val.dup when ::Hash val = val.dup if duping self.class.new(val) when Array val.collect{ |e| convert_value(e) } else val end end # converts a camel_cased string to a underscore string # subs spaces with underscores, strips whitespace # Same way ActiveSupport does string.underscore def underscore_string(str) str.to_s.strip. gsub(' ', '_'). gsub(/::/, '/'). gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2'). gsub(/([a-z\d])([A-Z])/,'\1_\2'). tr("-", "_"). squeeze("_"). downcase end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
snake_case_hash-1.0.4 | lib/hashie/sc_hash.rb |
snake_case_hash-1.0.3 | lib/hashie/sc_hash.rb |
snake_case_hash-1.0.2 | lib/hashie/sc_hash.rb |
snake_case_hash-1.0.0 | lib/hashie/sc_hash.rb |