mirror of
https://github.com/sharkdp/bat.git
synced 2024-12-20 21:40:52 +01:00
d39507889a
This adds syntax support for Rego, the declarative policy language used by the Open Policy Agent: https://github.com/open-policy-agent/opa Generated from: https://github.com/open-policy-agent/opa/blob/master/misc/syntax/textmate/Rego.tmLanguage Using: https://github.com/aziz/SublimeSyntaxConvertor Signed-off-by: Patrick East <east.patrick@gmail.com>
98 lines
2.8 KiB
YAML
Vendored
98 lines
2.8 KiB
YAML
Vendored
%YAML 1.2
|
|
---
|
|
# http://www.sublimetext.com/docs/3/syntax.html
|
|
name: Rego
|
|
file_extensions:
|
|
- rego
|
|
scope: source.rego
|
|
contexts:
|
|
main:
|
|
- include: comment
|
|
- include: keyword
|
|
- include: operator
|
|
- include: head
|
|
- include: term
|
|
comment:
|
|
- match: (#).*$\n?
|
|
scope: comment.line.number-sign.rego
|
|
captures:
|
|
1: punctuation.definition.comment.rego
|
|
call:
|
|
- match: '([a-zA-Z_][a-zA-Z0-9_]*)\('
|
|
scope: meta.function-call.rego
|
|
captures:
|
|
1: support.function.any-method.rego
|
|
constant:
|
|
- match: \b(?:true|false|null)\b
|
|
scope: constant.language.rego
|
|
head:
|
|
- match: "^([[:alpha:]_][[:alnum:]_]*)"
|
|
captures:
|
|
1: entity.name.function.declaration
|
|
push:
|
|
- meta_scope: meta.function.rego
|
|
- match: '(=|{|\n)'
|
|
pop: true
|
|
- include: term
|
|
keyword:
|
|
- match: (^|\s+)(?:(default|not|package|import|as|with|else|some))\s+
|
|
scope: keyword.other.rego
|
|
number:
|
|
- match: |-
|
|
(?x: # turn on extended mode
|
|
-? # an optional minus
|
|
(?:
|
|
0 # a zero
|
|
| # ...or...
|
|
[1-9] # a 1-9 character
|
|
\d* # followed by zero or more digits
|
|
)
|
|
(?:
|
|
(?:
|
|
\. # a period
|
|
\d+ # followed by one or more digits
|
|
)?
|
|
(?:
|
|
[eE] # an e character
|
|
[+-]? # followed by an option +/-
|
|
\d+ # followed by one or more digits
|
|
)? # make exponent optional
|
|
)? # make decimal portion optional
|
|
)
|
|
scope: constant.numeric.rego
|
|
operator:
|
|
- match: \=|\!\=|>|<|<\=|>\=|\+|-|\*|%|/|\||&|:\=
|
|
scope: keyword.operator.comparison.rego
|
|
string:
|
|
- match: '"'
|
|
captures:
|
|
0: punctuation.definition.string.begin.rego
|
|
push:
|
|
- meta_scope: string.quoted.double.rego
|
|
- match: '"'
|
|
captures:
|
|
0: punctuation.definition.string.end.rego
|
|
pop: true
|
|
- match: |-
|
|
(?x: # turn on extended mode
|
|
\\ # a literal backslash
|
|
(?: # ...followed by...
|
|
["\\/bfnrt] # one of these characters
|
|
| # ...or...
|
|
u # a u
|
|
[0-9a-fA-F]{4} # and four hex digits
|
|
)
|
|
)
|
|
scope: constant.character.escape.rego
|
|
- match: \\.
|
|
scope: invalid.illegal.unrecognized-string-escape.rego
|
|
term:
|
|
- include: constant
|
|
- include: string
|
|
- include: number
|
|
- include: call
|
|
- include: variable
|
|
variable:
|
|
- match: '\b[[:alpha:]_][[:alnum:]_]*\b'
|
|
scope: meta.identifier.rego
|