# File lib/rubytter.rb, line 253 def structize(data) case data when Array data.map{|i| structize(i)} when Hash class << data def id self[:id] end def to_hash(obj = self) obj.inject({}) {|memo, (key, value)| memo[key] = (value.kind_of? obj.class) ? to_hash(value) : value memo } end def method_missing(name, *args) self[name] end end data.keys.each do |k| case k when String, Symbol # String しかまず来ないだろうからこの判定はいらない気もするなぁ data[k] = structize(data[k]) else data.delete(k) end end data.symbolize_keys! else case data when String CGI.unescapeHTML(data) # ここで unescapeHTML すべきか悩むところではある else data end end end