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