{"version":3,"sources":["webpack:///./node_modules/react-syntax-highlighter/node_modules/highlight.js/lib/languages/moonscript.js"],"names":["module","exports","hljs","KEYWORDS","keyword","literal","built_in","JS_IDENT_RE","SUBST","className","begin","end","keywords","EXPRESSIONS","inherit","C_NUMBER_MODE","starts","relevance","variants","contains","BACKSLASH_ESCAPE","IDENT_RE","TITLE","TITLE_MODE","PARAMS","returnBegin","concat","name","aliases","illegal","COMMENT","beginKeywords","endsWithParent","returnEnd"],"mappings":"gFAkHAA,EAAOC,QA1GP,SAAoBC,GAClB,IAAIC,EAAW,CACbC,QACA,6IACAC,QAAS,iBACTC,SAAU,qRAERC,EAAc,2BACdC,EAAQ,CACVC,UAAW,QACXC,MAAO,MACPC,IAAK,IACLC,SAAUT,GAERU,EAAc,CAACX,EAAKY,QAAQZ,EAAKa,cAAe,CAClDC,OAAQ,CACNL,IAAK,WACLM,UAAW,KAGf,CACER,UAAW,SACXS,SAAU,CAAC,CACTR,MAAO,IACPC,IAAK,IACLQ,SAAU,CAACjB,EAAKkB,mBACf,CACDV,MAAO,IACPC,IAAK,IACLQ,SAAU,CAACjB,EAAKkB,iBAAkBZ,MAEnC,CACDC,UAAW,WACXC,MAAO,MAAQR,EAAKmB,UACnB,CACDX,MAAO,IAAMR,EAAKmB,UAEjB,CACDX,MAAOR,EAAKmB,SAAW,OAASnB,EAAKmB,WAGvCb,EAAMW,SAAWN,EACjB,IAAIS,EAAQpB,EAAKY,QAAQZ,EAAKqB,WAAY,CACxCb,MAAOH,IAGLiB,EAAS,CACXf,UAAW,SACXC,MAAO,YACPe,aAAa,EAIbN,SAAU,CAAC,CACTT,MAAO,KACPC,IAAK,KACLC,SAAUT,EACVgB,SAAU,CAAC,QAAQO,OAAOb,MAG9B,MAAO,CACLc,KAAM,aACNC,QAAS,CAAC,QACVhB,SAAUT,EACV0B,QAAS,OACTV,SAAUN,EAAYa,OAAO,CAACxB,EAAK4B,QAAQ,KAAM,KAAM,CACrDrB,UAAW,WAEXC,MAAO,QAAUH,EAAV,mCACPI,IAAK,QACLc,aAAa,EACbN,SAAU,CAACG,EAAOE,IACjB,CACDd,MAAO,aAEPO,UAAW,EACXE,SAAU,CAAC,CACTV,UAAW,WACXC,MAjCU,0BAkCVC,IAAK,QACLc,aAAa,EACbN,SAAU,CAACK,MAEZ,CACDf,UAAW,QACXsB,cAAe,QACfpB,IAAK,IACLkB,QAAS,YACTV,SAAU,CAAC,CACTY,cAAe,UACfC,gBAAgB,EAChBH,QAAS,YACTV,SAAU,CAACG,IACVA,IACF,CACDb,UAAW,OAEXC,MAAOH,EAAc,IACrBI,IAAK,IACLc,aAAa,EACbQ,WAAW,EACXhB,UAAW","file":"react-syntax-highlighter_languages_highlight_moonscript-1b88684cec9ea17c53fe.js","sourcesContent":["/*\nLanguage: MoonScript\nAuthor: Billy Quith <chinbillybilbo@gmail.com>\nDescription: MoonScript is a programming language that transcompiles to Lua.\nOrigin: coffeescript.js\nWebsite: http://moonscript.org/\nCategory: scripting\n*/\nfunction moonscript(hljs) {\n  var KEYWORDS = {\n    keyword: // Moonscript keywords\n    'if then not for in while do return else elseif break continue switch and or ' + 'unless when class extends super local import export from using',\n    literal: 'true false nil',\n    built_in: '_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load ' + 'loadfile loadstring module next pairs pcall print rawequal rawget rawset require ' + 'select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug ' + 'io math os package string table'\n  };\n  var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n  var SUBST = {\n    className: 'subst',\n    begin: /#\\{/,\n    end: /}/,\n    keywords: KEYWORDS\n  };\n  var EXPRESSIONS = [hljs.inherit(hljs.C_NUMBER_MODE, {\n    starts: {\n      end: '(\\\\s*/)?',\n      relevance: 0\n    }\n  }), // a number tries to eat the following slash to prevent treating it as a regexp\n  {\n    className: 'string',\n    variants: [{\n      begin: /'/,\n      end: /'/,\n      contains: [hljs.BACKSLASH_ESCAPE]\n    }, {\n      begin: /\"/,\n      end: /\"/,\n      contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n    }]\n  }, {\n    className: 'built_in',\n    begin: '@__' + hljs.IDENT_RE\n  }, {\n    begin: '@' + hljs.IDENT_RE // relevance booster on par with CoffeeScript\n\n  }, {\n    begin: hljs.IDENT_RE + '\\\\\\\\' + hljs.IDENT_RE // inst\\method\n\n  }];\n  SUBST.contains = EXPRESSIONS;\n  var TITLE = hljs.inherit(hljs.TITLE_MODE, {\n    begin: JS_IDENT_RE\n  });\n  var PARAMS_RE = '(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>';\n  var PARAMS = {\n    className: 'params',\n    begin: '\\\\([^\\\\(]',\n    returnBegin: true,\n\n    /* We need another contained nameless mode to not have every nested\n    pair of parens to be called \"params\" */\n    contains: [{\n      begin: /\\(/,\n      end: /\\)/,\n      keywords: KEYWORDS,\n      contains: ['self'].concat(EXPRESSIONS)\n    }]\n  };\n  return {\n    name: 'MoonScript',\n    aliases: ['moon'],\n    keywords: KEYWORDS,\n    illegal: /\\/\\*/,\n    contains: EXPRESSIONS.concat([hljs.COMMENT('--', '$'), {\n      className: 'function',\n      // function: -> =>\n      begin: '^\\\\s*' + JS_IDENT_RE + '\\\\s*=\\\\s*' + PARAMS_RE,\n      end: '[-=]>',\n      returnBegin: true,\n      contains: [TITLE, PARAMS]\n    }, {\n      begin: /[\\(,:=]\\s*/,\n      // anonymous function start\n      relevance: 0,\n      contains: [{\n        className: 'function',\n        begin: PARAMS_RE,\n        end: '[-=]>',\n        returnBegin: true,\n        contains: [PARAMS]\n      }]\n    }, {\n      className: 'class',\n      beginKeywords: 'class',\n      end: '$',\n      illegal: /[:=\"\\[\\]]/,\n      contains: [{\n        beginKeywords: 'extends',\n        endsWithParent: true,\n        illegal: /[:=\"\\[\\]]/,\n        contains: [TITLE]\n      }, TITLE]\n    }, {\n      className: 'name',\n      // table\n      begin: JS_IDENT_RE + ':',\n      end: ':',\n      returnBegin: true,\n      returnEnd: true,\n      relevance: 0\n    }])\n  };\n}\n\nmodule.exports = moonscript;"],"sourceRoot":""}