Method: JSONP3::RelativeJSONPointer#to
- Defined in:
- lib/json_p3/pointer.rb
#to(pointer) ⇒ JSONPointer
Return a new JSON Pointer by applying this relative pointer to pointer.
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 |
# File 'lib/json_p3/pointer.rb', line 208 def to(pointer) p = pointer.is_a?(String) ? JSONPointer.new(pointer) : pointer raise JSONPointerIndexError, "origin (#{@origin}) exceeds root (#{p.tokens.length})" if @origin > p.tokens.length tokens = @origin < 1 ? p.tokens[0..] || raise : p.tokens[0...-@origin] || raise tokens[-1] = (tokens[-1] || raise) + @index if @index != 0 && tokens.length.positive? && tokens[-1].is_a?(Integer) if @pointer == "#" tokens[-1] = "##{tokens[-1]}" else tokens.concat(@pointer.tokens) # steep:ignore end JSONPointer.new(JSONPointer.encode(tokens)) end |