Class: JSONP3::JSONPatch

Inherits:
Object
  • Object
show all
Defined in:
lib/json_p3/patch.rb

Overview

A JSON Patch containing zero or more patch operations.

Instance Method Summary collapse

Constructor Details

#initialize(ops = nil) ⇒ JSONPatch

Returns a new instance of JSONPatch.

Parameters:

  • ops (Array<Op | Hash<String, untyped>>?) (defaults to: nil)


328
329
330
331
# File 'lib/json_p3/patch.rb', line 328

def initialize(ops = nil)
  @ops = []
  build(ops) unless ops.nil?
end

Instance Method Details

#add(pointer, value) ⇒ self

Parameters:

  • pointer (String | JSONPointer)
  • value (JSON-like value)

Returns:

  • (self)


336
337
338
339
# File 'lib/json_p3/patch.rb', line 336

def add(pointer, value)
  @ops.push(OpAdd.new(ensure_pointer(pointer, :add, @ops.length), value))
  self
end

#apply(value) ⇒ Object

Apply this patch to JSON-like value value.



387
388
389
390
# File 'lib/json_p3/patch.rb', line 387

def apply(value)
  @ops.each_with_index { |op, i| value = op.apply(value, i) }
  value
end

#copy(from, pointer) ⇒ self

Parameters:

Returns:

  • (self)


370
371
372
373
374
375
376
# File 'lib/json_p3/patch.rb', line 370

def copy(from, pointer)
  @ops.push(OpCopy.new(
              ensure_pointer(from, :copy, @ops.length),
              ensure_pointer(pointer, :copy, @ops.length)
            ))
  self
end

#move(from, pointer) ⇒ self

Parameters:

Returns:

  • (self)


359
360
361
362
363
364
365
# File 'lib/json_p3/patch.rb', line 359

def move(from, pointer)
  @ops.push(OpMove.new(
              ensure_pointer(from, :move, @ops.length),
              ensure_pointer(pointer, :move, @ops.length)
            ))
  self
end

#remove(pointer) ⇒ self

Parameters:

Returns:

  • (self)


343
344
345
346
# File 'lib/json_p3/patch.rb', line 343

def remove(pointer)
  @ops.push(OpRemove.new(ensure_pointer(pointer, :remove, @ops.length)))
  self
end

#replace(pointer, value) ⇒ self

Parameters:

  • pointer (String | JSONPointer)
  • value (JSON-like value)

Returns:

  • (self)


351
352
353
354
# File 'lib/json_p3/patch.rb', line 351

def replace(pointer, value)
  @ops.push(OpReplace.new(ensure_pointer(pointer, :replace, @ops.length), value))
  self
end

#test(pointer, value) ⇒ self

Parameters:

  • pointer (String | JSONPointer)
  • value (JSON-like value)

Returns:

  • (self)


381
382
383
384
# File 'lib/json_p3/patch.rb', line 381

def test(pointer, value)
  @ops.push(OpTest.new(ensure_pointer(pointer, :test, @ops.length), value))
  self
end

#to_aObject



392
393
394
# File 'lib/json_p3/patch.rb', line 392

def to_a
  @ops.map(&:to_h)
end