diff options
| -rw-r--r-- | lib/hcl/yajl_middleware.rb | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/hcl/yajl_middleware.rb b/lib/hcl/yajl_middleware.rb index 186c3d4..8d914d7 100644 --- a/lib/hcl/yajl_middleware.rb +++ b/lib/hcl/yajl_middleware.rb @@ -1,8 +1,19 @@ require 'faraday_middleware/response_middleware' require 'yajl' +require 'cgi' class HCl::YajlMiddleware < FaradayMiddleware::ResponseMiddleware + def self.unescape obj + if obj.kind_of? Hash + obj.inject({}){|o,(k,v)| o[k] = unescape(v);o} + elsif obj.kind_of? Array + obj.inject([]){|o,v| o << unescape(v);o} + else + CGI.unescape_html(obj.to_s) + end + end + define_parser do |body| - Yajl::Parser.parse(body, symbolize_keys:true) + unescape Yajl::Parser.parse(body, symbolize_keys:true) end end |
