blob: 062a71c81be15abe1eb3d60a73416c2825638a24 [file] [log] [blame]
Bram Moolenaarba3ff532018-11-04 14:45:49 +01001" Vim syntax file
2" Language: RAML (RESTful API Modeling Language)
3" Maintainer: Eric Hopkins <eric.on.tech@gmail.com>
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