summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/hcl/yajl_middleware.rb13
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