class Hashie::Mash
def method_missing(method_name, *args, &blk)
def method_missing(method_name, *args, &blk) return self.[](method_name, &blk) if key?(method_name) suffixes_regex = ALLOWED_SUFFIXES.join match = method_name.to_s.match(/(.*?)([#{suffixes_regex}]?)$/) case match[2] when '=' self[match[1]] = args.first when '?' !!self[match[1]] when '!' initializing_reader(match[1]) when '_' underbang_reader(match[1]) else default(method_name) end end