summaryrefslogtreecommitdiff
path: root/htroot/js/languages/makefile.js
diff options
context:
space:
mode:
Diffstat (limited to 'htroot/js/languages/makefile.js')
-rw-r--r--htroot/js/languages/makefile.js99
1 files changed, 99 insertions, 0 deletions
diff --git a/htroot/js/languages/makefile.js b/htroot/js/languages/makefile.js
new file mode 100644
index 000000000..d1561da07
--- /dev/null
+++ b/htroot/js/languages/makefile.js
@@ -0,0 +1,99 @@
+/*! `makefile` grammar compiled for Highlight.js 11.11.1 */
+ (function(){
+ var hljsGrammar = (function () {
+ 'use strict';
+
+ /*
+ Language: Makefile
+ Author: Ivan Sagalaev <maniac@softwaremaniacs.org>
+ Contributors: Joël Porquet <joel@porquet.org>
+ Website: https://www.gnu.org/software/make/manual/html_node/Introduction.html
+ Category: common, build-system
+ */
+
+ function makefile(hljs) {
+ /* Variables: simple (eg $(var)) and special (eg $@) */
+ const VARIABLE = {
+ className: 'variable',
+ variants: [
+ {
+ begin: '\\$\\(' + hljs.UNDERSCORE_IDENT_RE + '\\)',
+ contains: [ hljs.BACKSLASH_ESCAPE ]
+ },
+ { begin: /\$[@%<?\^\+\*]/ }
+ ]
+ };
+ /* Quoted string with variables inside */
+ const QUOTE_STRING = {
+ className: 'string',
+ begin: /"/,
+ end: /"/,
+ contains: [
+ hljs.BACKSLASH_ESCAPE,
+ VARIABLE
+ ]
+ };
+ /* Function: $(func arg,...) */
+ const FUNC = {
+ className: 'variable',
+ begin: /\$\([\w-]+\s/,
+ end: /\)/,
+ keywords: { built_in:
+ 'subst patsubst strip findstring filter filter-out sort '
+ + 'word wordlist firstword lastword dir notdir suffix basename '
+ + 'addsuffix addprefix join wildcard realpath abspath error warning '
+ + 'shell origin flavor foreach if or and call eval file value' },
+ contains: [
+ VARIABLE,
+ QUOTE_STRING // Added QUOTE_STRING as they can be a part of functions
+ ]
+ };
+ /* Variable assignment */
+ const ASSIGNMENT = { begin: '^' + hljs.UNDERSCORE_IDENT_RE + '\\s*(?=[:+?]?=)' };
+ /* Meta targets (.PHONY) */
+ const META = {
+ className: 'meta',
+ begin: /^\.PHONY:/,
+ end: /$/,
+ keywords: {
+ $pattern: /[\.\w]+/,
+ keyword: '.PHONY'
+ }
+ };
+ /* Targets */
+ const TARGET = {
+ className: 'section',
+ begin: /^[^\s]+:/,
+ end: /$/,
+ contains: [ VARIABLE ]
+ };
+ return {
+ name: 'Makefile',
+ aliases: [
+ 'mk',
+ 'mak',
+ 'make',
+ ],
+ keywords: {
+ $pattern: /[\w-]+/,
+ keyword: 'define endef undefine ifdef ifndef ifeq ifneq else endif '
+ + 'include -include sinclude override export unexport private vpath'
+ },
+ contains: [
+ hljs.HASH_COMMENT_MODE,
+ VARIABLE,
+ QUOTE_STRING,
+ FUNC,
+ ASSIGNMENT,
+ META,
+ TARGET
+ ]
+ };
+ }
+
+ return makefile;
+
+})();
+
+ hljs.registerLanguage('makefile', hljsGrammar);
+ })(); \ No newline at end of file