diff runtime/syntax/rego.vim @ 18928:180a1c5175f6

Update runtime files. Commit: https://github.com/vim/vim/commit/95a9dd1efc5ae3221865f4970053a5708557e682 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Dec 19 22:12:03 2019 +0100 Update runtime files.
author Bram Moolenaar <Bram@vim.org>
date Thu, 19 Dec 2019 22:15:04 +0100
parents
children 15c80d8bc515
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/rego.vim
@@ -0,0 +1,89 @@
+" Vim syntax file
+" Language: rego policy language
+" Maintainer: Matt Dunford (zenmatic@gmail.com)
+" URL:        https://github.com/zenmatic/vim-syntax-rego
+" Last Change: 2019 Dec 12
+
+" https://www.openpolicyagent.org/docs/latest/policy-language/
+
+" quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+	finish
+endif
+
+syn case match
+
+syn keyword regoDirective package import allow deny
+syn keyword regoKeywords as default else false not null true with some
+
+syn keyword regoFuncAggregates count sum product max min sort all any
+syn match regoFuncArrays "\<array\.\(concat\|slice\)\>"
+syn keyword regoFuncSets intersection union
+
+syn keyword regoFuncStrings concat /\<contains\>/ endswith format_int indexof lower replace split sprintf startswith substring trim trim_left trim_prefix trim_right trim_suffix trim_space upper
+syn match regoFuncStrings2 "\<strings\.replace_n\>"
+syn match regoFuncStrings3 "\<contains\>"
+
+syn keyword regoFuncRegex re_match
+syn match regoFuncRegex2 "\<regex\.\(split\|globs_match\|template_match\|find_n\|find_all_string_submatch_n\)\>"
+
+syn match regoFuncGlob "\<glob\.\(match\|quote_meta\)\>"
+syn match regoFuncUnits "\<units\.parse_bytes\>"
+syn keyword regoFuncTypes is_number is_string is_boolean is_array is_set is_object is_null type_name
+syn match regoFuncEncoding1 "\<\(base64\|base64url\)\.\(encode\|decode\)\>"
+syn match regoFuncEncoding2 "\<urlquery\.\(encode\|decode\|encode_object\)\>"
+syn match regoFuncEncoding3 "\<\(json\|yaml\)\.\(marshal\|unmarshal\)\>"
+syn match regoFuncTokenSigning "\<io\.jwt\.\(encode_sign_raw\|encode_sign\)\>"
+syn match regoFuncTokenVerification "\<io\.jwt\.\(verify_rs256\|verify_ps256\|verify_es256\|verify_hs256\|decode\|decode_verify\)\>"
+syn match regoFuncTime "\<time\.\(now_ns\|parse_ns\|parse_rfc3339_ns\|parse_duration_ns\|date\|clock\|weekday\)\>"
+syn match regoFuncCryptography "\<crypto\.x509\.parse_certificates\>"
+syn keyword regoFuncGraphs walk
+syn match regoFuncHttp "\<http\.send\>"
+syn match regoFuncNet "\<net\.\(cidr_contains\|cidr_intersects\)\>"
+syn match regoFuncRego "\<rego\.parse_module\>"
+syn match regoFuncOpa "\<opa\.runtime\>"
+syn keyword regoFuncDebugging trace
+
+hi def link regoDirective Statement
+hi def link regoKeywords Statement
+hi def link regoFuncAggregates Statement
+hi def link regoFuncArrays Statement
+hi def link regoFuncSets Statement
+hi def link regoFuncStrings Statement
+hi def link regoFuncStrings2 Statement
+hi def link regoFuncStrings3 Statement
+hi def link regoFuncRegex Statement
+hi def link regoFuncRegex2 Statement
+hi def link regoFuncGlob Statement
+hi def link regoFuncUnits Statement
+hi def link regoFuncTypes Statement
+hi def link regoFuncEncoding1 Statement
+hi def link regoFuncEncoding2 Statement
+hi def link regoFuncEncoding3 Statement
+hi def link regoFuncTokenSigning Statement
+hi def link regoFuncTokenVerification Statement
+hi def link regoFuncTime Statement
+hi def link regoFuncCryptography Statement
+hi def link regoFuncGraphs Statement
+hi def link regoFuncHttp Statement
+hi def link regoFuncNet Statement
+hi def link regoFuncRego Statement
+hi def link regoFuncOpa Statement
+hi def link regoFuncDebugging Statement
+
+" https://www.openpolicyagent.org/docs/latest/policy-language/#strings
+syn region      regoString            start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn region      regoRawString         start=+`+ end=+`+
+
+hi def link     regoString            String
+hi def link     regoRawString         String
+
+" Comments; their contents
+syn keyword     regoTodo              contained TODO FIXME XXX BUG
+syn cluster     regoCommentGroup      contains=regoTodo
+syn region      regoComment           start="#" end="$" contains=@regoCommentGroup,@Spell
+
+hi def link     regoComment           Comment
+hi def link     regoTodo              Todo
+
+let b:current_syntax = 'rego'