class Blumquist::JSONPointer
Constants
- DOCUMENT_ADDRESS_IDENTIFIER
- DOCUMENT_ROOT_IDENTIFIER
Attributes
uri[R]
Public Class Methods
new(uri, document: nil)
click to toggle source
# File lib/blumquist/json_pointer.rb, line 21 def initialize(uri, document: nil) @uri = uri validate_uri! @document = document end
Public Instance Methods
value()
click to toggle source
# File lib/blumquist/json_pointer.rb, line 27 def value result = keys.any? ? document&.dig(*keys) : document raise(Errors::InvalidPointer, pointer: uri, document: document) if result.nil? result end
Private Instance Methods
address()
click to toggle source
# File lib/blumquist/json_pointer.rb, line 45 def address return @address if defined?(@address) @address = uri.scan(/.*\.json/).first end
document()
click to toggle source
# File lib/blumquist/json_pointer.rb, line 51 def document if points_to_document_address? @external_document ||= JSON.parse( File.read(address) ) else @document end end
keys()
click to toggle source
# File lib/blumquist/json_pointer.rb, line 37 def keys return @keys if defined?(@keys) @keys = @uri.split('#')[1] @keys = @keys&.sub('/', '') if @keys&.start_with?('/') @keys = @keys&.split('/') || [] end
points_to_document_address?()
click to toggle source
# File lib/blumquist/json_pointer.rb, line 59 def points_to_document_address? !address.nil? end
validate_uri!()
click to toggle source
# File lib/blumquist/json_pointer.rb, line 63 def validate_uri! # # Why only this uri formats are valid? # Refer to the description on the top of this file # return if uri.start_with?(DOCUMENT_ROOT_IDENTIFIER) return if uri.match(DOCUMENT_ADDRESS_IDENTIFIER) raise(Errors::UnsupportedPointer, pointer: uri) end