Sha256: 68a11de48b622b2e838dada1d27171e592e4004641d97b70e887d0d4dfde9d35

Contents?: true

Size: 597 Bytes

Versions: 3

Compression:

Stored size: 597 Bytes

Contents

class JsonPath
  class Proxy
    def initialize(obj)
      @obj = obj
    end

    def gsub(path, replacement = nil, &replacement_block)
      _gsub(deep_copy, path, replacement ? proc{replacement} : replacement_block)
    end

    def gsub!(path, replacement = nil, &replacement_block)
      _gsub(@obj, path, replacement ? proc{replacement} : replacement_block)
    end

    private
    def deep_copy
      Marshal::load(Marshal::dump(@obj))
    end

    def _gsub(obj, path, replacement)
      JsonPath.new(path, :mode => :substitute).enum_on(obj).each(&replacement)
      obj
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
jsonpath-0.4.2 lib/jsonpath/proxy.rb
jsonpath-0.4.1 lib/jsonpath/proxy.rb
jsonpath-0.4.0 lib/jsonpath/proxy.rb