1{"version":3,"sources":["../../node_modules/codemirror/mode/pig/pig.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","defineMode","_config","parserConfig","keywords","builtins","types","multiLineStrings","isOperatorChar","chain","stream","state","f","tokenize","tokenComment","isEnd","ch","next","tokenBase","tokenString","quote","escaped","end","test","eatWhile","eat","skipToEnd","propertyIsEnumerable","current","toUpperCase","startState","startOfLine","token","eatSpace","style","str","obj","words","split","i","length","pBuiltins","pKeywords","pTypes","defineMIME","name","registerHelper"],"mappings":"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","file":"pig.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n/*\n *      Pig Latin Mode for CodeMirror 2\n *      @author Prasanth Jayachandran\n *      @link   https://github.com/prasanthj/pig-codemirror-2\n *  This implementation is adapted from PL/SQL mode in CodeMirror 2.\n */\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"pig\", function(_config, parserConfig) {\n  var keywords = parserConfig.keywords,\n  builtins = parserConfig.builtins,\n  types = parserConfig.types,\n  multiLineStrings = parserConfig.multiLineStrings;\n\n  var isOperatorChar = /[*+\\-%<>=&?:\\/!|]/;\n\n  function chain(stream, state, f) {\n    state.tokenize = f;\n    return f(stream, state);\n  }\n\n  function tokenComment(stream, state) {\n    var isEnd = false;\n    var ch;\n    while(ch = stream.next()) {\n      if(ch == \"/\" && isEnd) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      isEnd = (ch == \"*\");\n    }\n    return \"comment\";\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var escaped = false, next, end = false;\n      while((next = stream.next()) != null) {\n        if (next == quote && !escaped) {\n          end = true; break;\n        }\n        escaped = !escaped && next == \"\\\\\";\n      }\n      if (end || !(escaped || multiLineStrings))\n        state.tokenize = tokenBase;\n      return \"error\";\n    };\n  }\n\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n\n    // is a start of string?\n    if (ch == '\"' || ch == \"'\")\n      return chain(stream, state, tokenString(ch));\n    // is it one of the special chars\n    else if(/[\\[\\]{}\\(\\),;\\.]/.test(ch))\n      return null;\n    // is it a number?\n    else if(/\\d/.test(ch)) {\n      stream.eatWhile(/[\\w\\.]/);\n      return \"number\";\n    }\n    // multi line comment or operator\n    else if (ch == \"/\") {\n      if (stream.eat(\"*\")) {\n        return chain(stream, state, tokenComment);\n      }\n      else {\n        stream.eatWhile(isOperatorChar);\n        return \"operator\";\n      }\n    }\n    // single line comment or operator\n    else if (ch==\"-\") {\n      if(stream.eat(\"-\")){\n        stream.skipToEnd();\n        return \"comment\";\n      }\n      else {\n        stream.eatWhile(isOperatorChar);\n        return \"operator\";\n      }\n    }\n    // is it an operator\n    else if (isOperatorChar.test(ch)) {\n      stream.eatWhile(isOperatorChar);\n      return \"operator\";\n    }\n    else {\n      // get the while word\n      stream.eatWhile(/[\\w\\$_]/);\n      // is it one of the listed keywords?\n      if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) {\n        //keywords can be used as variables like flatten(group), group.$0 etc..\n        if (!stream.eat(\")\") && !stream.eat(\".\"))\n          return \"keyword\";\n      }\n      // is it one of the builtin functions?\n      if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase()))\n        return \"variable-2\";\n      // is it one of the listed types?\n      if (types && types.propertyIsEnumerable(stream.current().toUpperCase()))\n        return \"variable-3\";\n      // default is a 'variable'\n      return \"variable\";\n    }\n  }\n\n  // Interface\n  return {\n    startState: function() {\n      return {\n        tokenize: tokenBase,\n        startOfLine: true\n      };\n    },\n\n    token: function(stream, state) {\n      if(stream.eatSpace()) return null;\n      var style = state.tokenize(stream, state);\n      return style;\n    }\n  };\n});\n\n(function() {\n  function keywords(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n\n  // builtin funcs taken from trunk revision 1303237\n  var pBuiltins = \"ABS ACOS ARITY ASIN ATAN AVG BAGSIZE BINSTORAGE BLOOM BUILDBLOOM CBRT CEIL \"\n    + \"CONCAT COR COS COSH COUNT COUNT_STAR COV CONSTANTSIZE CUBEDIMENSIONS DIFF DISTINCT DOUBLEABS \"\n    + \"DOUBLEAVG DOUBLEBASE DOUBLEMAX DOUBLEMIN DOUBLEROUND DOUBLESUM EXP FLOOR FLOATABS FLOATAVG \"\n    + \"FLOATMAX FLOATMIN FLOATROUND FLOATSUM GENERICINVOKER INDEXOF INTABS INTAVG INTMAX INTMIN \"\n    + \"INTSUM INVOKEFORDOUBLE INVOKEFORFLOAT INVOKEFORINT INVOKEFORLONG INVOKEFORSTRING INVOKER \"\n    + \"ISEMPTY JSONLOADER JSONMETADATA JSONSTORAGE LAST_INDEX_OF LCFIRST LOG LOG10 LOWER LONGABS \"\n    + \"LONGAVG LONGMAX LONGMIN LONGSUM MAX MIN MAPSIZE MONITOREDUDF NONDETERMINISTIC OUTPUTSCHEMA  \"\n    + \"PIGSTORAGE PIGSTREAMING RANDOM REGEX_EXTRACT REGEX_EXTRACT_ALL REPLACE ROUND SIN SINH SIZE \"\n    + \"SQRT STRSPLIT SUBSTRING SUM STRINGCONCAT STRINGMAX STRINGMIN STRINGSIZE TAN TANH TOBAG \"\n    + \"TOKENIZE TOMAP TOP TOTUPLE TRIM TEXTLOADER TUPLESIZE UCFIRST UPPER UTF8STORAGECONVERTER \";\n\n  // taken from QueryLexer.g\n  var pKeywords = \"VOID IMPORT RETURNS DEFINE LOAD FILTER FOREACH ORDER CUBE DISTINCT COGROUP \"\n    + \"JOIN CROSS UNION SPLIT INTO IF OTHERWISE ALL AS BY USING INNER OUTER ONSCHEMA PARALLEL \"\n    + \"PARTITION GROUP AND OR NOT GENERATE FLATTEN ASC DESC IS STREAM THROUGH STORE MAPREDUCE \"\n    + \"SHIP CACHE INPUT OUTPUT STDERROR STDIN STDOUT LIMIT SAMPLE LEFT RIGHT FULL EQ GT LT GTE LTE \"\n    + \"NEQ MATCHES TRUE FALSE DUMP\";\n\n  // data types\n  var pTypes = \"BOOLEAN INT LONG FLOAT DOUBLE CHARARRAY BYTEARRAY BAG TUPLE MAP \";\n\n  CodeMirror.defineMIME(\"text/x-pig\", {\n    name: \"pig\",\n    builtins: keywords(pBuiltins),\n    keywords: keywords(pKeywords),\n    types: keywords(pTypes)\n  });\n\n  CodeMirror.registerHelper(\"hintWords\", \"pig\", (pBuiltins + pTypes + pKeywords).split(\" \"));\n}());\n\n});\n"]}