Method: JSONPathGrammar#_nt_bareword

Defined in:
lib/jsonpath/parser.rb

#_nt_barewordObject



1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
# File 'lib/jsonpath/parser.rb', line 1816

def _nt_bareword
  start_index = index
  if node_cache[:bareword].has_key?(index)
    cached = node_cache[:bareword][index]
    @index = cached.interval.end if cached
    return cached
  end

  s0, i0 = [], index
  loop do
    if input.index(Regexp.new('[a-zA-Z0-9]'), index) == index
      r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
      @index += 1
    else
      r1 = nil
    end
    if r1
      s0 << r1
    else
      break
    end
  end
  if s0.empty?
    self.index = i0
    r0 = nil
  else
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
  end

  node_cache[:bareword][start_index] = r0

  return r0
end