| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | module.exports = 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\\}]'  };};
 |