class JsonPath::Proxy

Attributes

obj[R]
to_hash[R]

Public Class Methods

new(obj) click to toggle source
# File lib/jsonpath/proxy.rb, line 8
def initialize(obj)
  @obj = obj
end

Public Instance Methods

compact(path = JsonPath::PATH_ALL) click to toggle source
# File lib/jsonpath/proxy.rb, line 28
def compact(path = JsonPath::PATH_ALL)
  _compact(_deep_copy, path)
end
compact!(path = JsonPath::PATH_ALL) click to toggle source
# File lib/jsonpath/proxy.rb, line 32
def compact!(path = JsonPath::PATH_ALL)
  _compact(@obj, path)
end
delete(path = JsonPath::PATH_ALL) click to toggle source
# File lib/jsonpath/proxy.rb, line 20
def delete(path = JsonPath::PATH_ALL)
  _delete(_deep_copy, path)
end
delete!(path = JsonPath::PATH_ALL) click to toggle source
# File lib/jsonpath/proxy.rb, line 24
def delete!(path = JsonPath::PATH_ALL)
  _delete(@obj, path)
end
gsub(path, replacement = nil, &replacement_block) click to toggle source
# File lib/jsonpath/proxy.rb, line 12
def gsub(path, replacement = nil, &replacement_block)
  _gsub(_deep_copy, path, replacement ? proc(&method(:replacement)) : replacement_block)
end
gsub!(path, replacement = nil, &replacement_block) click to toggle source
# File lib/jsonpath/proxy.rb, line 16
def gsub!(path, replacement = nil, &replacement_block)
  _gsub(@obj, path, replacement ? proc(&method(:replacement)) : replacement_block)
end

Private Instance Methods

_compact(obj, path) click to toggle source
# File lib/jsonpath/proxy.rb, line 62
def _compact(obj, path)
  JsonPath.new(path)[obj, :compact].each
  Proxy.new(obj)
end
_deep_copy() click to toggle source
# File lib/jsonpath/proxy.rb, line 38
def _deep_copy
  Marshal.load(Marshal.dump(@obj))
end
_delete(obj, path) click to toggle source
# File lib/jsonpath/proxy.rb, line 47
def _delete(obj, path)
  JsonPath.new(path)[obj, :delete].each
  obj = _remove(obj)
  Proxy.new(obj)
end
_gsub(obj, path, replacement) click to toggle source
# File lib/jsonpath/proxy.rb, line 42
def _gsub(obj, path, replacement)
  JsonPath.new(path)[obj, :substitute].each(&replacement)
  Proxy.new(obj)
end
_remove(obj) click to toggle source
# File lib/jsonpath/proxy.rb, line 53
def _remove(obj)
  obj.each do |o|
    if o.is_a?(Hash) || o.is_a?(Array)
      _remove(o)
      o.delete({})
    end
  end
end