class Hashie::Mash
def method_missing(method_name, *args, &blk)
def method_missing(method_name, *args, &blk) return self[method_name] if key?(method_name) match = method_name.to_s.match(/(.*?)([?=!]?)$/) case match[2] when "=" self[match[1]] = args.first when "?" key?(match[1]) when "!" initializing_reader(match[1]) else default(method_name, *args, &blk) end end