123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- /*
- 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) {
- const VAR = {
- className: 'variable',
- variants: [
- {
- begin: /\$\d+/
- },
- {
- begin: /\$\{/,
- end: /\}/
- },
- {
- begin: /[$@]/ + hljs.UNDERSCORE_IDENT_RE
- }
- ]
- };
- const 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;
|