class Hashie::Mash
@private
Public Instance Methods
genability_to_ruby_friendly(method_name)
click to toggle source
# File lib/mashie_extensions.rb, line 46 def genability_to_ruby_friendly(method_name) method_name.to_s.gsub(/^[A-Z]/){ $&.downcase }.gsub(/[A-Z]/){ "_#{$&.downcase}" }.to_sym end
method_missing(method_name, *args, &blk)
click to toggle source
Modified Hashie::Mash
method missing
# File lib/mashie_extensions.rb, line 24 def method_missing(method_name, *args, &blk) begin method_name = ruby_to_genability_friendly(method_name) rescue; end return self.[](method_name, &blk) if key?(method_name) match = method_name.to_s.match(/(.*?)([?=!]?)$/) case match[2] when "=" self[match[1]] = args.first when "?" !!self[match[1]] when "!" initializing_reader(match[1]) else default(method_name, *args, &blk) end end
ruby_to_genability_friendly(method_name)
click to toggle source
# File lib/mashie_extensions.rb, line 42 def ruby_to_genability_friendly(method_name) method_name.to_s.gsub(/(?:^|_)(.)/){ $1.upcase }.gsub(/^[A-Z]/){ $&.downcase }.to_sym end
to_friendly_hash()
click to toggle source
Convert results to Ruby / Rails friendly attributes
# File lib/mashie_extensions.rb, line 7 def to_friendly_hash out = {} keys.each do |k| out[genability_to_ruby_friendly(k)] = case self[k] when Hashie::Hash self[k].to_friendly_hash when Array self[k].collect(&:to_friendly_hash) else self[k] end #Hashie::Hash === self[k] ? self[k].to_friendly_hash : self[k] end out end