| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | /*Language: Apache configAuthor: Ruslan Keba <rukeba@gmail.com>Contributors: Ivan Sagalaev <maniac@softwaremaniacs.org>Website: https://httpd.apache.orgDescription: language definition for Apache configuration files (httpd.conf & .htaccess)Category: common, configAudit: 2020*//** @type LanguageFn */function apache(hljs) {  const NUMBER_REF = {    className: 'number',    begin: /[$%]\d+/  };  const NUMBER = {    className: 'number',    begin: /\d+/  };  const IP_ADDRESS = {    className: "number",    begin: /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?/  };  const PORT_NUMBER = {    className: "number",    begin: /:\d{1,5}/  };  return {    name: 'Apache config',    aliases: [ 'apacheconf' ],    case_insensitive: true,    contains: [      hljs.HASH_COMMENT_MODE,      {        className: 'section',        begin: /<\/?/,        end: />/,        contains: [          IP_ADDRESS,          PORT_NUMBER,          // low relevance prevents us from claming XML/HTML where this rule would          // match strings inside of XML tags          hljs.inherit(hljs.QUOTE_STRING_MODE, { relevance: 0 })        ]      },      {        className: 'attribute',        begin: /\w+/,        relevance: 0,        // keywords aren’t needed for highlighting per se, they only boost relevance        // for a very generally defined mode (starts with a word, ends with line-end        keywords: {          nomarkup:            'order deny allow setenv rewriterule rewriteengine rewritecond documentroot ' +            'sethandler errordocument loadmodule options header listen serverroot ' +            'servername'        },        starts: {          end: /$/,          relevance: 0,          keywords: { literal: 'on off all deny allow' },          contains: [            {              className: 'meta',              begin: /\s\[/,              end: /\]$/            },            {              className: 'variable',              begin: /[\$%]\{/,              end: /\}/,              contains: [                'self',                NUMBER_REF              ]            },            IP_ADDRESS,            NUMBER,            hljs.QUOTE_STRING_MODE          ]        }      }    ],    illegal: /\S/  };}module.exports = apache;
 |