xref: /vim-8.2.3635/runtime/syntax/raml.vim (revision ba3ff539)
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