You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.3 KiB
89 lines
2.3 KiB
/* |
|
Language: Apache config |
|
Author: Ruslan Keba <rukeba@gmail.com> |
|
Contributors: Ivan Sagalaev <maniac@softwaremaniacs.org> |
|
Website: https://httpd.apache.org |
|
Description: language definition for Apache configuration files (httpd.conf & .htaccess) |
|
Category: common, config |
|
Audit: 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;
|
|
|