Sha256: 2c285d879554f838766a88b25dd5e4fab0866476ad67eadb44b048570ba05d9c
Contents?: true
Size: 1.18 KB
Versions: 3
Compression:
Stored size: 1.18 KB
Contents
require "json" require "json_deep_parse/version" # Refinement for extending JSON with #deep_parse functionality # # Valid JSON can only map to a fixed set of objects in Ruby so we # can easily define a solution for each potential value of a valid # JSON object while attempting to reparse any strings that are found # that may be potentially deeply escaped JSON. module JSONDeepParse unless JSON.respond_to?(:deep_parse) refine Array do def deep_parse map { |value| value.deep_parse } end end refine FalseClass do def deep_parse self end end refine Hash do def deep_parse map { |key, value| [key, value.deep_parse] }.to_h end end refine JSON.singleton_class do def deep_parse(payload) parse(payload).deep_parse end end refine NilClass do def deep_parse self end end refine Numeric do def deep_parse self end end refine String do def deep_parse JSON.deep_parse(self) rescue JSON::ParserError self end end refine TrueClass do def deep_parse self end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
json_deep_parse-1.0.1 | lib/json_deep_parse.rb |
json_deep_parse-1.0.0 | lib/json_deep_parse.rb |
json_deep_parse-0.1.0 | lib/json_deep_parse.rb |