Class: JSONP3::JSONPatch
- Inherits:
-
Object
- Object
- JSONP3::JSONPatch
- Defined in:
- lib/json_p3/patch.rb
Overview
A JSON Patch containing zero or more patch operations.
Instance Method Summary collapse
- #add(pointer, value) ⇒ self
-
#apply(value) ⇒ Object
Apply this patch to JSON-like value value.
- #copy(from, pointer) ⇒ self
-
#initialize(ops = nil) ⇒ JSONPatch
constructor
A new instance of JSONPatch.
- #move(from, pointer) ⇒ self
- #remove(pointer) ⇒ self
- #replace(pointer, value) ⇒ self
- #test(pointer, value) ⇒ self
- #to_a ⇒ Object
Constructor Details
#initialize(ops = nil) ⇒ JSONPatch
Returns a new instance of JSONPatch.
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
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
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
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
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
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
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_a ⇒ Object
392 393 394 |
# File 'lib/json_p3/patch.rb', line 392 def to_a @ops.map(&:to_h) end |