class Pact::MatchingRules::JsonPath
Attributes
path[R]
Public Class Methods
new(path)
click to toggle source
# File lib/pact/matching_rules/jsonpath.rb, line 13 def initialize(path) scanner = StringScanner.new(path) @path = [] while not scanner.eos? if token = scanner.scan(/\$/) @path << token elsif token = scanner.scan(/@/) @path << token elsif token = scanner.scan(/[:a-zA-Z0-9_-]+/) @path << "['#{token}']" elsif token = scanner.scan(/'(.*?)'/) @path << "[#{token}]" elsif token = scanner.scan(/\[/) count = 1 while !count.zero? if t = scanner.scan(/\[/) token << t count += 1 elsif t = scanner.scan(/\]/) token << t count -= 1 elsif t = scanner.scan(/[^\[\]]*/) token << t end end @path << token elsif token = scanner.scan(/\.\./) @path << token elsif scanner.scan(/\./) nil elsif token = scanner.scan(/\*/) @path << token elsif token = scanner.scan(/[><=] \d+/) @path.last << token elsif token = scanner.scan(/./) @path.last << token end end end
Public Instance Methods
to_s()
click to toggle source
# File lib/pact/matching_rules/jsonpath.rb, line 53 def to_s path.join end