1" Vim syntax file 2" Language: RAML (RESTful API Modeling Language) 3" Maintainer: Eric Hopkins <[email protected]> 4" URL: https://github.com/in3d/vim-raml 5" License: Same as Vim 6" Last Change: 2018-11-03 7 8if exists("b:current_syntax") 9 finish 10endif 11 12let s:cpo_save = &cpo 13set cpo&vim 14 15syn keyword ramlTodo contained TODO FIXME XXX NOTE 16 17syn region ramlComment display oneline start='\%(^\|\s\)#' end='$' 18 \ contains=ramlTodo,@Spell 19 20syn region ramlVersion display oneline start='#%RAML' end='$' 21 22syn match ramlNodeProperty '!\%(![^\\^% ]\+\|[^!][^:/ ]*\)' 23 24syn match ramlAnchor '&.\+' 25 26syn match ramlAlias '\*.\+' 27 28syn match ramlDelimiter '[-,:]' 29syn match ramlBlock '[\[\]{}>|]' 30syn match ramlOperator '[?+-]' 31syn match ramlKey '\h\+\(?\)\?\ze\s*:' 32syn match ramlKey '\w\+\(\s\+\w\+\)*\(?\)\?\ze\s*:' 33syn match routeKey '\/\w\+\(\s\+\w\+\)*\ze\s*:' 34syn match routeKey 'application\/\w\+\ze\s*:' 35syn match routeParamKey '\/{\w\+}*\ze\s*:' 36 37syn region ramlString matchgroup=ramlStringDelimiter 38 \ start=+\s"+ skip=+\\"+ end=+"+ 39 \ contains=ramlEscape 40syn region ramlString matchgroup=ramlStringDelimiter 41 \ start=+\s'+ skip=+''+ end=+'+ 42 \ contains=ramlStringEscape 43syn region ramlParameter matchgroup=ramlParameterDelimiter 44 \ start=+<<+ skip=+''+ end=+>>+ 45syn match ramlEscape contained display +\\[\\"abefnrtv^0_ NLP]+ 46syn match ramlEscape contained display '\\x\x\{2}' 47syn match ramlEscape contained display '\\u\x\{4}' 48syn match ramlEscape contained display '\\U\x\{8}' 49syn match ramlEscape display '\\\%(\r\n\|[\r\n]\)' 50syn match ramlStringEscape contained +''+ 51 52syn match ramlNumber display 53 \ '\<[+-]\=\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=' 54syn match ramlNumber display '0\o\+' 55syn match ramlNumber display '0x\x\+' 56syn match ramlNumber display '([+-]\=[iI]nf)' 57syn match ramlNumber display '(NaN)' 58 59syn match ramlConstant '\<[~yn]\>' 60syn keyword ramlConstant true True TRUE false False FALSE 61syn keyword ramlConstant yes Yes on ON no No off OFF 62syn keyword ramlConstant null Null NULL nil Nil NIL 63 64syn keyword httpVerbs get post put delete head patch options 65syn keyword ramlTypes string number integer date boolean file 66 67syn match ramlTimestamp '\d\d\d\d-\%(1[0-2]\|\d\)-\%(3[0-2]\|2\d\|1\d\|\d\)\%( \%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d [+-]\%([01]\d\|2[0-3]\):[0-5]\d\|t\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d[+-]\%([01]\d\|2[0-3]\):[0-5]\d\|T\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\dZ\)\=' 68 69syn region ramlDocumentHeader start='---' end='$' contains=ramlDirective 70syn match ramlDocumentEnd '\.\.\.' 71 72syn match ramlDirective contained '%[^:]\+:.\+' 73 74hi def link ramlVersion String 75hi def link routeInterpolation String 76hi def link ramlInterpolation Constant 77hi def link ramlTodo Todo 78hi def link ramlComment Comment 79hi def link ramlDocumentHeader PreProc 80hi def link ramlDocumentEnd PreProc 81hi def link ramlDirective Keyword 82hi def link ramlNodeProperty Type 83hi def link ramlAnchor Type 84hi def link ramlAlias Type 85hi def link ramlBlock Operator 86hi def link ramlOperator Operator 87hi def link routeParamKey SpecialChar 88hi def link ramlKey Identifier 89hi def link routeKey SpecialChar 90hi def link ramlParameterDelimiter Type 91hi def link ramlParameter Type 92hi def link ramlString String 93hi def link ramlStringDelimiter ramlString 94hi def link ramlEscape SpecialChar 95hi def link ramlStringEscape SpecialChar 96hi def link ramlNumber Number 97hi def link ramlConstant Constant 98hi def link ramlTimestamp Number 99hi def link httpVerbs Statement 100hi def link ramlTypes Type 101hi def link ramlDelimiter Delimiter 102 103let b:current_syntax = "raml" 104 105let &cpo = s:cpo_save 106unlet s:cpo_save 107