| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | /*Language: NginxAuthor: Peter Leonov <[email protected]>Contributors: Ivan Sagalaev <[email protected]>Category: common, config*/function(hljs) {  var VAR = {    className: 'variable',    variants: [      {begin: /\$\d+/},      {begin: /\$\{/, end: /}/},      {begin: '[\\$\\@]' + hljs.UNDERSCORE_IDENT_RE}    ]  };  var DEFAULT = {    endsWithParent: true,    lexemes: '[a-z/_]+',    keywords: {      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 {    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\\}]'  };}
 |