{"version":3,"file":"handlebars-lexer.js","names":["BaseLexer","HandlebarsLexer","_BaseLexer","_inherits","_super","_createSuper","_this","options","arguments","length","undefined","_classCallCheck","call","functions","createFunctionRegex","createArgumentsRegex","_createClass","key","value","extract","content","matches","functionRegex","exec","args","parseArguments","populateKeysFromArguments","keys","result","argumentsRegex","arg","parts","split","push","validateString","slice","firstArgument","secondArgument","isKeyString","isDefaultValueString","emit","concat","_objectSpread","defaultValue","functionPattern","curlyPattern","parenthesisPattern","pattern","RegExp","variablePattern","stringOrVariablePattern","stringPattern","default"],"sources":["../../src/lexers/handlebars-lexer.js"],"sourcesContent":["import BaseLexer from './base-lexer.js'\n\nexport default class HandlebarsLexer extends BaseLexer {\n constructor(options = {}) {\n super(options)\n\n this.functions = options.functions || ['t']\n\n this.createFunctionRegex()\n this.createArgumentsRegex()\n }\n\n extract(content) {\n let matches\n\n while ((matches = this.functionRegex.exec(content))) {\n const args = this.parseArguments(matches[1] || matches[2])\n this.populateKeysFromArguments(args)\n }\n\n return this.keys\n }\n\n parseArguments(args) {\n let matches\n const result = {\n arguments: [],\n options: {},\n }\n while ((matches = this.argumentsRegex.exec(args))) {\n const arg = matches[1]\n const parts = arg.split('=')\n result.arguments.push(arg)\n if (parts.length === 2 && this.validateString(parts[1])) {\n const value = parts[1].slice(1, -1)\n if (value === 'true') {\n result.options[parts[0]] = true\n } else if (value === 'false') {\n result.options[parts[0]] = false\n } else {\n result.options[parts[0]] = value\n }\n }\n }\n return result\n }\n\n populateKeysFromArguments(args) {\n const firstArgument = args.arguments[0]\n const secondArgument = args.arguments[1]\n const isKeyString = this.validateString(firstArgument)\n const isDefaultValueString = this.validateString(secondArgument)\n\n if (!isKeyString) {\n this.emit('warning', `Key is not a string literal: ${firstArgument}`)\n } else {\n const result = {\n ...args.options,\n key: firstArgument.slice(1, -1),\n }\n if (isDefaultValueString) {\n result.defaultValue = secondArgument.slice(1, -1)\n }\n this.keys.push(result)\n }\n }\n\n createFunctionRegex() {\n const functionPattern = this.functionPattern()\n const curlyPattern = '(?:{{)' + functionPattern + '\\\\s+(.*?)(?:}})'\n const parenthesisPattern = '(?:\\\\()' + functionPattern + '\\\\s+(.*)(?:\\\\))'\n const pattern = curlyPattern + '|' + parenthesisPattern\n this.functionRegex = new RegExp(pattern, 'gi')\n return this.functionRegex\n }\n\n createArgumentsRegex() {\n const pattern =\n '(?:\\\\s+|^)' +\n '(' +\n '(?:' +\n BaseLexer.variablePattern +\n '(?:=' +\n BaseLexer.stringOrVariablePattern +\n ')?' +\n ')' +\n '|' +\n BaseLexer.stringPattern +\n ')'\n this.argumentsRegex = new RegExp(pattern, 'gi')\n return this.argumentsRegex\n }\n}\n"],"mappings":"usDAAA,OAAOA,SAAS,MAAM,iBAAiB;;AAElBC,eAAe,0BAAAC,UAAA,GAAAC,SAAA,CAAAF,eAAA,EAAAC,UAAA,MAAAE,MAAA,GAAAC,YAAA,CAAAJ,eAAA;EAClC,SAAAA,gBAAA,EAA0B,KAAAK,KAAA,KAAdC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC,CAAAG,eAAA,OAAAV,eAAA;IACtBK,KAAA,GAAAF,MAAA,CAAAQ,IAAA,OAAML,OAAO;;IAEbD,KAAA,CAAKO,SAAS,GAAGN,OAAO,CAACM,SAAS,IAAI,CAAC,GAAG,CAAC;;IAE3CP,KAAA,CAAKQ,mBAAmB,CAAC,CAAC;IAC1BR,KAAA,CAAKS,oBAAoB,CAAC,CAAC,QAAAT,KAAA;EAC7B,CAACU,YAAA,CAAAf,eAAA,KAAAgB,GAAA,aAAAC,KAAA;;IAED,SAAAC,QAAQC,OAAO,EAAE;MACf,IAAIC,OAAO;;MAEX,OAAQA,OAAO,GAAG,IAAI,CAACC,aAAa,CAACC,IAAI,CAACH,OAAO,CAAC,EAAG;QACnD,IAAMI,IAAI,GAAG,IAAI,CAACC,cAAc,CAACJ,OAAO,CAAC,CAAC,CAAC,IAAIA,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,CAACK,yBAAyB,CAACF,IAAI,CAAC;MACtC;;MAEA,OAAO,IAAI,CAACG,IAAI;IAClB,CAAC,MAAAV,GAAA,oBAAAC,KAAA;;IAED,SAAAO,eAAeD,IAAI,EAAE;MACnB,IAAIH,OAAO;MACX,IAAMO,MAAM,GAAG;QACbpB,SAAS,EAAE,EAAE;QACbD,OAAO,EAAE,CAAC;MACZ,CAAC;MACD,OAAQc,OAAO,GAAG,IAAI,CAACQ,cAAc,CAACN,IAAI,CAACC,IAAI,CAAC,EAAG;QACjD,IAAMM,GAAG,GAAGT,OAAO,CAAC,CAAC,CAAC;QACtB,IAAMU,KAAK,GAAGD,GAAG,CAACE,KAAK,CAAC,GAAG,CAAC;QAC5BJ,MAAM,CAACpB,SAAS,CAACyB,IAAI,CAACH,GAAG,CAAC;QAC1B,IAAIC,KAAK,CAACtB,MAAM,KAAK,CAAC,IAAI,IAAI,CAACyB,cAAc,CAACH,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UACvD,IAAMb,KAAK,GAAGa,KAAK,CAAC,CAAC,CAAC,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;UACnC,IAAIjB,KAAK,KAAK,MAAM,EAAE;YACpBU,MAAM,CAACrB,OAAO,CAACwB,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;UACjC,CAAC,MAAM,IAAIb,KAAK,KAAK,OAAO,EAAE;YAC5BU,MAAM,CAACrB,OAAO,CAACwB,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;UAClC,CAAC,MAAM;YACLH,MAAM,CAACrB,OAAO,CAACwB,KAAK,CAAC,CAAC,CAAC,CAAC,GAAGb,KAAK;UAClC;QACF;MACF;MACA,OAAOU,MAAM;IACf,CAAC,MAAAX,GAAA,+BAAAC,KAAA;;IAED,SAAAQ,0BAA0BF,IAAI,EAAE;MAC9B,IAAMY,aAAa,GAAGZ,IAAI,CAAChB,SAAS,CAAC,CAAC,CAAC;MACvC,IAAM6B,cAAc,GAAGb,IAAI,CAAChB,SAAS,CAAC,CAAC,CAAC;MACxC,IAAM8B,WAAW,GAAG,IAAI,CAACJ,cAAc,CAACE,aAAa,CAAC;MACtD,IAAMG,oBAAoB,GAAG,IAAI,CAACL,cAAc,CAACG,cAAc,CAAC;;MAEhE,IAAI,CAACC,WAAW,EAAE;QAChB,IAAI,CAACE,IAAI,CAAC,SAAS,kCAAAC,MAAA,CAAkCL,aAAa,CAAE,CAAC;MACvE,CAAC,MAAM;QACL,IAAMR,MAAM,GAAAc,aAAA,CAAAA,aAAA;QACPlB,IAAI,CAACjB,OAAO;UACfU,GAAG,EAAEmB,aAAa,CAACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAChC;;QACD,IAAII,oBAAoB,EAAE;UACxBX,MAAM,CAACe,YAAY,GAAGN,cAAc,CAACF,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD;QACA,IAAI,CAACR,IAAI,CAACM,IAAI,CAACL,MAAM,CAAC;MACxB;IACF,CAAC,MAAAX,GAAA,yBAAAC,KAAA;;IAED,SAAAJ,oBAAA,EAAsB;MACpB,IAAM8B,eAAe,GAAG,IAAI,CAACA,eAAe,CAAC,CAAC;MAC9C,IAAMC,YAAY,GAAG,QAAQ,GAAGD,eAAe,GAAG,iBAAiB;MACnE,IAAME,kBAAkB,GAAG,SAAS,GAAGF,eAAe,GAAG,iBAAiB;MAC1E,IAAMG,OAAO,GAAGF,YAAY,GAAG,GAAG,GAAGC,kBAAkB;MACvD,IAAI,CAACxB,aAAa,GAAG,IAAI0B,MAAM,CAACD,OAAO,EAAE,IAAI,CAAC;MAC9C,OAAO,IAAI,CAACzB,aAAa;IAC3B,CAAC,MAAAL,GAAA,0BAAAC,KAAA;;IAED,SAAAH,qBAAA,EAAuB;MACrB,IAAMgC,OAAO;MACX,YAAY;MACZ,GAAG;MACH,KAAK;MACL/C,SAAS,CAACiD,eAAe;MACzB,MAAM;MACNjD,SAAS,CAACkD,uBAAuB;MACjC,IAAI;MACJ,GAAG;MACH,GAAG;MACHlD,SAAS,CAACmD,aAAa;MACvB,GAAG;MACL,IAAI,CAACtB,cAAc,GAAG,IAAImB,MAAM,CAACD,OAAO,EAAE,IAAI,CAAC;MAC/C,OAAO,IAAI,CAAClB,cAAc;IAC5B,CAAC,YAAA5B,eAAA,GAzF0CD,SAAS,WAAjCC,eAAe,IAAAmD,OAAA"}