neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

rego.vim (5682B)


      1 " Vim syntax file
      2 " Language: rego policy language
      3 " Maintainer: Matt Dunford (zenmatic@gmail.com)
      4 " URL:        https://github.com/zenmatic/vim-syntax-rego
      5 " Last Change: 2022 Dec 4
      6 
      7 " https://www.openpolicyagent.org/docs/latest/policy-language/
      8 
      9 " quit when a (custom) syntax file was already loaded
     10 if exists("b:current_syntax")
     11 finish
     12 endif
     13 
     14 syn case match
     15 
     16 syn keyword regoDirective package import allow deny
     17 syn keyword regoKeywords as default else every false if import package not null true with some in print
     18 
     19 syn keyword regoFuncAggregates count sum product max min sort all any
     20 syn match regoFuncArrays "\<array\.\(concat\|slice\|reverse\)\>"
     21 syn keyword regoFuncSets intersection union
     22 
     23 syn keyword regoFuncStrings concat /\<contains\>/ endswith format_int indexof indexof_n lower replace split sprintf startswith substring trim trim_left trim_prefix trim_right trim_suffix trim_space upper
     24 syn match regoFuncStrings2 "\<strings\.\(replace_n\|reverse\|any_prefix_match\|any_suffix_match\)\>"
     25 syn match regoFuncStrings3 "\<contains\>"
     26 
     27 syn keyword regoFuncRegex re_match
     28 syn match regoFuncRegex2 "\<regex\.\(is_valid\|split\|globs_match\|template_match\|find_n\|find_all_string_submatch_n\|replace\)\>"
     29 
     30 syn match regoFuncUuid "\<uuid.rfc4122\>"
     31 syn match regoFuncBits "\<bits\.\(or\|and\|negate\|xor\|lsh\|rsh\)\>"
     32 syn match regoFuncObject "\<object\.\(get\|remove\|subset\|union\|union_n\|filter\)\>"
     33 syn match regoFuncGlob "\<glob\.\(match\|quote_meta\)\>"
     34 syn match regoFuncUnits "\<units\.parse\(_bytes\)\=\>"
     35 syn keyword regoFuncTypes is_number is_string is_boolean is_array is_set is_object is_null type_name
     36 syn match regoFuncEncoding1 "\<base64\.\(encode\|decode\|is_valid\)\>"
     37 syn match regoFuncEncoding2 "\<base64url\.\(encode\(_no_pad\)\=\|decode\)\>"
     38 syn match regoFuncEncoding3 "\<urlquery\.\(encode\|decode\|\(en\|de\)code_object\)\>"
     39 syn match regoFuncEncoding4 "\<\(json\|yaml\)\.\(is_valid\|marshal\|unmarshal\)\>"
     40 syn match regoFuncEncoding5 "\<json\.\(filter\|patch\|remove\)\>"
     41 syn match regoFuncTokenSigning "\<io\.jwt\.\(encode_sign_raw\|encode_sign\)\>"
     42 syn match regoFuncTokenVerification1 "\<io\.jwt\.\(decode\|decode_verify\)\>"
     43 syn match regoFuncTokenVerification2 "\<io\.jwt\.verify_\(rs\|ps\|es\|hs\)\(256\|384\|512\)\>"
     44 syn match regoFuncTime "\<time\.\(now_ns\|parse_ns\|parse_rfc3339_ns\|parse_duration_ns\|date\|clock\|weekday\|diff\|add_date\)\>"
     45 syn match regoFuncCryptography "\<crypto\.x509\.\(parse_certificates\|parse_certificate_request\|parse_and_verify_certificates\|parse_rsa_private_key\)\>"
     46 syn match regoFuncCryptography "\<crypto\.\(md5\|sha1\|sha256\)"
     47 syn match regoFuncCryptography "\<crypto\.hmac\.\(md5\|sha1\|sha256\|sha512\)"
     48 syn keyword regoFuncGraphs walk
     49 syn match regoFuncGraphs2 "\<graph\.reachable\(_paths\)\=\>"
     50 syn match regoFuncGraphQl "\<graphql\.\(\(schema_\)\=is_valid\|parse\(_\(and_verify\|query\|schema\)\)\=\)\>"
     51 syn match regoFuncHttp "\<http\.send\>"
     52 syn match regoFuncNet "\<net\.\(cidr_merge\|cidr_contains\|cidr_contains_matches\|cidr_intersects\|cidr_expand\|lookup_ip_addr\|cidr_is_valid\)\>"
     53 syn match regoFuncRego "\<rego\.\(parse_module\|metadata\.\(rule\|chain\)\)\>"
     54 syn match regoFuncOpa "\<opa\.runtime\>"
     55 syn keyword regoFuncDebugging trace
     56 syn match regoFuncRand "\<rand\.intn\>"
     57 
     58 syn match   regoFuncNumbers "\<numbers\.\(range\|intn\)\>"
     59 syn keyword regoFuncNumbers round ceil floor abs
     60 
     61 syn match regoFuncSemver "\<semver\.\(is_valid\|compare\)\>"
     62 syn keyword regoFuncConversions to_number
     63 syn match regoFuncHex "\<hex\.\(encode\|decode\)\>"
     64 
     65 hi def link regoFuncUuid Statement
     66 hi def link regoFuncBits Statement
     67 hi def link regoDirective Statement
     68 hi def link regoKeywords Statement
     69 hi def link regoFuncAggregates Statement
     70 hi def link regoFuncArrays Statement
     71 hi def link regoFuncSets Statement
     72 hi def link regoFuncStrings Statement
     73 hi def link regoFuncStrings2 Statement
     74 hi def link regoFuncStrings3 Statement
     75 hi def link regoFuncRegex Statement
     76 hi def link regoFuncRegex2 Statement
     77 hi def link regoFuncGlob Statement
     78 hi def link regoFuncUnits Statement
     79 hi def link regoFuncTypes Statement
     80 hi def link regoFuncEncoding1 Statement
     81 hi def link regoFuncEncoding2 Statement
     82 hi def link regoFuncEncoding3 Statement
     83 hi def link regoFuncEncoding4 Statement
     84 hi def link regoFuncEncoding5 Statement
     85 hi def link regoFuncTokenSigning Statement
     86 hi def link regoFuncTokenVerification1 Statement
     87 hi def link regoFuncTokenVerification2 Statement
     88 hi def link regoFuncTime Statement
     89 hi def link regoFuncCryptography Statement
     90 hi def link regoFuncGraphs Statement
     91 hi def link regoFuncGraphQl Statement
     92 hi def link regoFuncGraphs2 Statement
     93 hi def link regoFuncHttp Statement
     94 hi def link regoFuncNet Statement
     95 hi def link regoFuncRego Statement
     96 hi def link regoFuncOpa Statement
     97 hi def link regoFuncDebugging Statement
     98 hi def link regoFuncObject Statement
     99 hi def link regoFuncNumbers Statement
    100 hi def link regoFuncSemver Statement
    101 hi def link regoFuncConversions Statement
    102 hi def link regoFuncHex Statement
    103 hi def link regoFuncRand Statement
    104 
    105 " https://www.openpolicyagent.org/docs/latest/policy-language/#strings
    106 syn region      regoString            start=+"+ skip=+\\\\\|\\"+ end=+"+
    107 syn region      regoRawString         start=+`+ end=+`+
    108 
    109 hi def link     regoString            String
    110 hi def link     regoRawString         String
    111 
    112 " Comments; their contents
    113 syn keyword     regoTodo              contained TODO FIXME XXX BUG
    114 syn cluster     regoCommentGroup      contains=regoTodo
    115 syn region      regoComment           start="#" end="$" contains=@regoCommentGroup,@Spell
    116 
    117 hi def link     regoComment           Comment
    118 hi def link     regoTodo              Todo
    119 
    120 let b:current_syntax = 'rego'