diff options
Diffstat (limited to 'htroot/js/languages/makefile.js')
| -rw-r--r-- | htroot/js/languages/makefile.js | 99 |
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 |
