123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- module.exports = function(hljs) {
- /* Variables: simple (eg $(var)) and special (eg $@) */
- var VARIABLE = {
- className: 'variable',
- variants: [
- {
- begin: '\\$\\(' + hljs.UNDERSCORE_IDENT_RE + '\\)',
- contains: [hljs.BACKSLASH_ESCAPE],
- },
- {
- begin: /\$[@%<?\^\+\*]/
- },
- ]
- };
- /* Quoted string with variables inside */
- var QUOTE_STRING = {
- className: 'string',
- begin: /"/, end: /"/,
- contains: [
- hljs.BACKSLASH_ESCAPE,
- VARIABLE,
- ]
- };
- /* Function: $(func arg,...) */
- var 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,
- ]
- };
- /* Variable assignment */
- var ASSIGNMENT = {
- begin: '^' + hljs.UNDERSCORE_IDENT_RE + '\\s*(?=[:+?]?=)'
- };
- /* Meta targets (.PHONY) */
- var META = {
- className: 'meta',
- begin: /^\.PHONY:/, end: /$/,
- keywords: {'meta-keyword': '.PHONY'},
- lexemes: /[\.\w]+/
- };
- /* Targets */
- var TARGET = {
- className: 'section',
- begin: /^[^\s]+:/, end: /$/,
- contains: [VARIABLE,]
- };
- return {
- aliases: ['mk', 'mak'],
- keywords:
- 'define endef undefine ifdef ifndef ifeq ifneq else endif ' +
- 'include -include sinclude override export unexport private vpath',
- lexemes: /[\w-]+/,
- contains: [
- hljs.HASH_COMMENT_MODE,
- VARIABLE,
- QUOTE_STRING,
- FUNC,
- ASSIGNMENT,
- META,
- TARGET,
- ]
- };
- };
|