| 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,    ]  };};
 |