1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- """
- pygments.lexers.jmespath
- ~~~~~~~~~~~~~~~~~~~~~~~~
- Lexers for the JMESPath language
- :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
- :license: BSD, see LICENSE for details.
- """
- from pygments.lexer import RegexLexer, bygroups, include
- from pygments.token import String, Punctuation, Whitespace, Name, Operator, \
- Number, Literal, Keyword
- __all__ = ['JMESPathLexer']
- class JMESPathLexer(RegexLexer):
- """
- For JMESPath queries.
- """
- name = 'JMESPath'
- url = 'https://jmespath.org'
- filenames = ['*.jp']
- aliases = ['jmespath', 'jp']
- tokens = {
- 'string': [
- (r"'(\\(.|\n)|[^'\\])*'", String),
- ],
- 'punctuation': [
- (r'(\[\?|[\.\*\[\],:\(\)\{\}\|])', Punctuation),
- ],
- 'ws': [
- (r" |\t|\n|\r", Whitespace)
- ],
- "dq-identifier": [
- (r'[^\\"]+', Name.Variable),
- (r'\\"', Name.Variable),
- (r'.', Punctuation, '#pop'),
- ],
- 'identifier': [
- (r'(&)?(")', bygroups(Name.Variable, Punctuation), 'dq-identifier'),
- (r'(")?(&?[A-Za-z][A-Za-z0-9_-]*)(")?', bygroups(Punctuation, Name.Variable, Punctuation)),
- ],
- 'root': [
- include('ws'),
- include('string'),
- (r'(==|!=|<=|>=|<|>|&&|\|\||!)', Operator),
- include('punctuation'),
- (r'@', Name.Variable.Global),
- (r'(&?[A-Za-z][A-Za-z0-9_]*)(\()', bygroups(Name.Function, Punctuation)),
- (r'(&)(\()', bygroups(Name.Variable, Punctuation)),
- include('identifier'),
- (r'-?\d+', Number),
- (r'`', Literal, 'literal'),
- ],
- 'literal': [
- include('ws'),
- include('string'),
- include('punctuation'),
- (r'(false|true|null)\b', Keyword.Constant),
- include('identifier'),
- (r'-?\d+\.?\d*([eE][-+]\d+)?', Number),
- (r'\\`', Literal),
- (r'`', Literal, '#pop'),
- ]
- }
|