123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- /*
- Language: Nginx config
- Author: Peter Leonov <gojpeg@yandex.ru>
- Contributors: Ivan Sagalaev <maniac@softwaremaniacs.org>
- Category: common, config
- Website: https://www.nginx.com
- */
- function nginx(hljs) {
- var VAR = {
- className: 'variable',
- variants: [
- {begin: /\$\d+/},
- {begin: /\$\{/, end: /}/},
- {begin: '[\\$\\@]' + hljs.UNDERSCORE_IDENT_RE}
- ]
- };
- var DEFAULT = {
- endsWithParent: true,
- keywords: {
- $pattern: '[a-z/_]+',
- literal:
- 'on off yes no true false none blocked debug info notice warn error crit ' +
- 'select break last permanent redirect kqueue rtsig epoll poll /dev/poll'
- },
- relevance: 0,
- illegal: '=>',
- contains: [
- hljs.HASH_COMMENT_MODE,
- {
- className: 'string',
- contains: [hljs.BACKSLASH_ESCAPE, VAR],
- variants: [
- {begin: /"/, end: /"/},
- {begin: /'/, end: /'/}
- ]
- },
- // this swallows entire URLs to avoid detecting numbers within
- {
- begin: '([a-z]+):/', end: '\\s', endsWithParent: true, excludeEnd: true,
- contains: [VAR]
- },
- {
- className: 'regexp',
- contains: [hljs.BACKSLASH_ESCAPE, VAR],
- variants: [
- {begin: "\\s\\^", end: "\\s|{|;", returnEnd: true},
- // regexp locations (~, ~*)
- {begin: "~\\*?\\s+", end: "\\s|{|;", returnEnd: true},
- // *.example.com
- {begin: "\\*(\\.[a-z\\-]+)+"},
- // sub.example.*
- {begin: "([a-z\\-]+\\.)+\\*"}
- ]
- },
- // IP
- {
- className: 'number',
- begin: '\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b'
- },
- // units
- {
- className: 'number',
- begin: '\\b\\d+[kKmMgGdshdwy]*\\b',
- relevance: 0
- },
- VAR
- ]
- };
- return {
- name: 'Nginx config',
- aliases: ['nginxconf'],
- contains: [
- hljs.HASH_COMMENT_MODE,
- {
- begin: hljs.UNDERSCORE_IDENT_RE + '\\s+{', returnBegin: true,
- end: '{',
- contains: [
- {
- className: 'section',
- begin: hljs.UNDERSCORE_IDENT_RE
- }
- ],
- relevance: 0
- },
- {
- begin: hljs.UNDERSCORE_IDENT_RE + '\\s', end: ';|{', returnBegin: true,
- contains: [
- {
- className: 'attribute',
- begin: hljs.UNDERSCORE_IDENT_RE,
- starts: DEFAULT
- }
- ],
- relevance: 0
- }
- ],
- illegal: '[^\\s\\}]'
- };
- }
- module.exports = nginx;
|