{"version":3,"sources":["webpack:///./node_modules/react-syntax-highlighter/node_modules/highlight.js/lib/languages/erlang.js"],"names":["module","exports","hljs","BASIC_ATOM_RE","FUNCTION_NAME_RE","ERLANG_RESERVED","keyword","literal","COMMENT","NUMBER","className","begin","relevance","NAMED_FUN","FUNCTION_CALL","end","returnBegin","contains","endsWithParent","returnEnd","TUPLE","VAR1","VAR2","RECORD_ACCESS","UNDERSCORE_IDENT_RE","BLOCK_STATEMENTS","beginKeywords","keywords","inherit","APOS_STRING_MODE","QUOTE_STRING_MODE","BASIC_MODES","PARAMS","name","aliases","illegal","TITLE_MODE","starts","excludeEnd","$pattern","IDENT_RE"],"mappings":"8EA2HAA,EAAOC,QApHP,SAAgBC,GACd,IAAIC,EAAgB,uBAChBC,EAAmB,IAAMD,EAAgB,IAAMA,EAAgB,IAAMA,EAAgB,IACrFE,EAAkB,CACpBC,QAAS,2IACTC,QAAS,cAEPC,EAAUN,EAAKM,QAAQ,IAAK,KAC5BC,EAAS,CACXC,UAAW,SACXC,MAAO,gGACPC,UAAW,GAETC,EAAY,CACdF,MAAO,UAAYR,EAAgB,SAEjCW,EAAgB,CAClBH,MAAOP,EAAmB,MAC1BW,IAAK,MACLC,aAAa,EACbJ,UAAW,EACXK,SAAU,CAAC,CACTN,MAAOP,EACPQ,UAAW,GACV,CACDD,MAAO,MACPI,IAAK,MACLG,gBAAgB,EAChBC,WAAW,EACXP,UAAW,KAIXQ,EAAQ,CACVT,MAAO,IACPI,IAAK,IACLH,UAAW,GAGTS,EAAO,CACTV,MAAO,4BACPC,UAAW,GAETU,EAAO,CACTX,MAAO,qBACPC,UAAW,GAETW,EAAgB,CAClBZ,MAAO,IAAMT,EAAKsB,oBAClBZ,UAAW,EACXI,aAAa,EACbC,SAAU,CAAC,CACTN,MAAO,IAAMT,EAAKsB,oBAClBZ,UAAW,GACV,CACDD,MAAO,IACPI,IAAK,IACLH,UAAW,KAIXa,EAAmB,CACrBC,cAAe,0BACfX,IAAK,MACLY,SAAUtB,GAEZoB,EAAiBR,SAAW,CAACT,EAASK,EAAWX,EAAK0B,QAAQ1B,EAAK2B,iBAAkB,CACnFnB,UAAW,KACTe,EAAkBX,EAAeZ,EAAK4B,kBAAmBrB,EAAQW,EAAOC,EAAMC,EAAMC,GACxF,IAAIQ,EAAc,CAACvB,EAASK,EAAWY,EAAkBX,EAAeZ,EAAK4B,kBAAmBrB,EAAQW,EAAOC,EAAMC,EAAMC,GAC3HT,EAAcG,SAAS,GAAGA,SAAWc,EACrCX,EAAMH,SAAWc,EACjBR,EAAcN,SAAS,GAAGA,SAAWc,EACrC,IAAIC,EAAS,CACXtB,UAAW,SACXC,MAAO,MACPI,IAAK,MACLE,SAAUc,GAEZ,MAAO,CACLE,KAAM,SACNC,QAAS,CAAC,OACVP,SAAUtB,EACV8B,QAAS,4CACTlB,SAAU,CAAC,CACTP,UAAW,WACXC,MAAO,IAAMR,EAAgB,UAC7BY,IAAK,KACLC,aAAa,EACbmB,QAAS,yBACTlB,SAAU,CAACe,EAAQ9B,EAAK0B,QAAQ1B,EAAKkC,WAAY,CAC/CzB,MAAOR,KAETkC,OAAQ,CACNtB,IAAK,QACLY,SAAUtB,EACVY,SAAUc,IAEXvB,EAAS,CACVG,MAAO,KACPI,IAAK,MACLH,UAAW,EACX0B,YAAY,EACZtB,aAAa,EACbW,SAAU,CACRY,SAAU,IAAMrC,EAAKsC,SACrBlC,QAAS,2KAEXW,SAAU,CAACe,IACVvB,EAAQP,EAAK4B,kBAAmBP,EAAeF,EAAMC,EAAMF,EAAO,CACnET,MAAO","file":"react-syntax-highlighter_languages_highlight_erlang-ee6807690ab2a3ab572e.js","sourcesContent":["/*\nLanguage: Erlang\nDescription: Erlang is a general-purpose functional language, with strict evaluation, single assignment, and dynamic typing.\nAuthor: Nikolay Zakharov <nikolay.desh@gmail.com>, Dmitry Kovega <arhibot@gmail.com>\nWebsite: https://www.erlang.org\nCategory: functional\n*/\nfunction erlang(hljs) {\n  var BASIC_ATOM_RE = '[a-z\\'][a-zA-Z0-9_\\']*';\n  var FUNCTION_NAME_RE = '(' + BASIC_ATOM_RE + ':' + BASIC_ATOM_RE + '|' + BASIC_ATOM_RE + ')';\n  var ERLANG_RESERVED = {\n    keyword: 'after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if ' + 'let not of orelse|10 query receive rem try when xor',\n    literal: 'false true'\n  };\n  var COMMENT = hljs.COMMENT('%', '$');\n  var NUMBER = {\n    className: 'number',\n    begin: '\\\\b(\\\\d+(_\\\\d+)*#[a-fA-F0-9]+(_[a-fA-F0-9]+)*|\\\\d+(_\\\\d+)*(\\\\.\\\\d+(_\\\\d+)*)?([eE][-+]?\\\\d+)?)',\n    relevance: 0\n  };\n  var NAMED_FUN = {\n    begin: 'fun\\\\s+' + BASIC_ATOM_RE + '/\\\\d+'\n  };\n  var FUNCTION_CALL = {\n    begin: FUNCTION_NAME_RE + '\\\\(',\n    end: '\\\\)',\n    returnBegin: true,\n    relevance: 0,\n    contains: [{\n      begin: FUNCTION_NAME_RE,\n      relevance: 0\n    }, {\n      begin: '\\\\(',\n      end: '\\\\)',\n      endsWithParent: true,\n      returnEnd: true,\n      relevance: 0 // \"contains\" defined later\n\n    }]\n  };\n  var TUPLE = {\n    begin: '{',\n    end: '}',\n    relevance: 0 // \"contains\" defined later\n\n  };\n  var VAR1 = {\n    begin: '\\\\b_([A-Z][A-Za-z0-9_]*)?',\n    relevance: 0\n  };\n  var VAR2 = {\n    begin: '[A-Z][a-zA-Z0-9_]*',\n    relevance: 0\n  };\n  var RECORD_ACCESS = {\n    begin: '#' + hljs.UNDERSCORE_IDENT_RE,\n    relevance: 0,\n    returnBegin: true,\n    contains: [{\n      begin: '#' + hljs.UNDERSCORE_IDENT_RE,\n      relevance: 0\n    }, {\n      begin: '{',\n      end: '}',\n      relevance: 0 // \"contains\" defined later\n\n    }]\n  };\n  var BLOCK_STATEMENTS = {\n    beginKeywords: 'fun receive if try case',\n    end: 'end',\n    keywords: ERLANG_RESERVED\n  };\n  BLOCK_STATEMENTS.contains = [COMMENT, NAMED_FUN, hljs.inherit(hljs.APOS_STRING_MODE, {\n    className: ''\n  }), BLOCK_STATEMENTS, FUNCTION_CALL, hljs.QUOTE_STRING_MODE, NUMBER, TUPLE, VAR1, VAR2, RECORD_ACCESS];\n  var BASIC_MODES = [COMMENT, NAMED_FUN, BLOCK_STATEMENTS, FUNCTION_CALL, hljs.QUOTE_STRING_MODE, NUMBER, TUPLE, VAR1, VAR2, RECORD_ACCESS];\n  FUNCTION_CALL.contains[1].contains = BASIC_MODES;\n  TUPLE.contains = BASIC_MODES;\n  RECORD_ACCESS.contains[1].contains = BASIC_MODES;\n  var PARAMS = {\n    className: 'params',\n    begin: '\\\\(',\n    end: '\\\\)',\n    contains: BASIC_MODES\n  };\n  return {\n    name: 'Erlang',\n    aliases: ['erl'],\n    keywords: ERLANG_RESERVED,\n    illegal: '(</|\\\\*=|\\\\+=|-=|/\\\\*|\\\\*/|\\\\(\\\\*|\\\\*\\\\))',\n    contains: [{\n      className: 'function',\n      begin: '^' + BASIC_ATOM_RE + '\\\\s*\\\\(',\n      end: '->',\n      returnBegin: true,\n      illegal: '\\\\(|#|//|/\\\\*|\\\\\\\\|:|;',\n      contains: [PARAMS, hljs.inherit(hljs.TITLE_MODE, {\n        begin: BASIC_ATOM_RE\n      })],\n      starts: {\n        end: ';|\\\\.',\n        keywords: ERLANG_RESERVED,\n        contains: BASIC_MODES\n      }\n    }, COMMENT, {\n      begin: '^-',\n      end: '\\\\.',\n      relevance: 0,\n      excludeEnd: true,\n      returnBegin: true,\n      keywords: {\n        $pattern: '-' + hljs.IDENT_RE,\n        keyword: '-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn ' + '-import -include -include_lib -compile -define -else -endif -file -behaviour ' + '-behavior -spec'\n      },\n      contains: [PARAMS]\n    }, NUMBER, hljs.QUOTE_STRING_MODE, RECORD_ACCESS, VAR1, VAR2, TUPLE, {\n      begin: /\\.$/\n    } // relevance booster\n    ]\n  };\n}\n\nmodule.exports = erlang;"],"sourceRoot":""}