{"version":3,"sources":["webpack:///./node_modules/petrel/src/languages/JavaAutoComplete.js"],"names":["JavaAutoComplete","environment","super","this","defaultFunctions","variables","functions","defaultVariables","defaultClasses","classes","prependSource","code","val","varRes","matchAll","split","push","access","type","name","length","value","params","map","a","trim","replaceAll","_","g1","g2","g3","paramsLength","word","editor","searchWord","ret","analyseCode","key","KEYWORDS","toLowerCase","startsWith","text","replace","KEYWORDS_OWN_LOGIC","forEach","va","fn","fnN","join","cursorMove","cl","FILE_EXTENSIONS"],"mappings":"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","file":"js/chunk-2d21d456.b0bff52e.js","sourcesContent":["import AutoCompletion from \"../AutoCompletion.js\"\n\nexport default class JavaAutoComplete extends AutoCompletion {\n\n constructor(environment = {}){\n super()\n this.defaultFunctions = environment.variables ? environment.functions : []\n this.defaultVariables = environment.variables ? environment.variables : []\n this.defaultClasses = environment.classes ? environment.classes : []\n this.prependSource = environment.prependSource ? environment.prependSource+\"\\n\\n\" : ''\n }\n\n analyseCode(code){\n const variables = [...this.defaultVariables]\n const functions = [...this.defaultFunctions]\n const classes = [...this.defaultClasses]\n\n const val = this.prependSource+code\n for (const varRes of val.matchAll(/(^| |\\n)((public|private|protected) )?((native|transient|volatile|static) )?([a-zA-Z_$][a-zA-Z_$0-9]*(<[a-zA-Z_$][a-zA-Z_$0-9]*?>)?) (\\s*?)([a-zA-Z_$\\.][a-zA-Z_$0-9\\.]*)(\\s*?)(=((\\s*?)[^;]*)|;|\\n|$)/gm)) {\n if (varRes[6] == 'import') {\n const split = varRes[9].split(\".\")\n classes.push({\n access: '',\n type: 'imported',\n name: split.length == 1 ? split[0] : split[split.length-1]\n })\n } else {\n variables.push({\n access: varRes[3],\n type: varRes[6],\n name: varRes[9],\n value: varRes[12]\n })\n }\n }\n\n for (const varRes of val.matchAll(/(^| |\\n)((public|private|protected) )?((native|transient|volatile|static) )?([a-zA-Z_$][a-zA-Z_$0-9]*(<[a-zA-Z_$][a-zA-Z_$0-9]*?>)?) (\\s*?)([a-zA-Z_$][a-zA-Z_$0-9]*)(\\s*?)(\\s*?)(\\(([a-zA-Z_$0-9 ,]*)\\))|\\{.*\\n(|;|\\n|$)/gm)){\n if (typeof varRes[10] != 'undefined' && typeof varRes[13] != 'undefined' && typeof varRes[6] != 'undefined'){\n let params = varRes[13].split(\",\").map(a=>a.trim().replaceAll(/([a-zA-Z_$][a-zA-Z_$0-9]*(<.*>)?) ([a-zA-Z_$][a-zA-Z_$0-9]*)/gi, (_,g1,g2,g3)=>g3))\n if (params[0] == '')\n params = []\n functions.push({\n access: varRes[3],\n type: varRes[6],\n params: params,\n paramsLength: params.length,\n name: varRes[9]\n })\n }\n }\n for (const varRes of val.matchAll(/(^| |\\n)((public|private|protected) )?((native|transient|volatile|static) )?(class|abstract class|enum|interface|@interface) (([a-zA-Z_$][a-zA-Z_$0-9]*)(<([a-zA-Z_$][a-zA-Z_$0-9])*?>)?)(\\s*?)( extends ([a-zA-Z_$][a-zA-Z_$0-9]*((\\s*?)<([a-zA-Z_$][a-zA-Z_$0-9])*?>)?))?( implements ([a-zA-Z_$][a-zA-Z_$0-9]*((\\s*?)<([a-zA-Z_$][a-zA-Z_$0-9])*?>)?))?(\\s*?)(|;|\\n|$)/gm)){\n if (typeof varRes[3] != 'undefined' && typeof varRes[6] != 'undefined' && typeof varRes[8] != 'undefined'){\n classes.push({\n access: varRes[3],\n type: varRes[6],\n name: varRes[8]\n })\n }\n }\n\n return {variables, functions, classes}\n }\n\n autoComplete(word, editor){\n const searchWord = word.replaceAll(/\\(|{|;/g, \"\")\n \n const ret = []\n if (searchWord == \"\")\n return []\n\n const {variables, functions, classes} = this.analyseCode(editor.value)\n \n for (const key of JavaAutoComplete.KEYWORDS) {\n if (key.toLowerCase().startsWith(searchWord.toLowerCase()) && searchWord !== key){\n ret.push({\n text: key,\n type: 'KEYWORD',\n replace: ()=> key+\" \" \n })\n }\n }\n \n for (const key in JavaAutoComplete.KEYWORDS_OWN_LOGIC) {\n if (key.toLowerCase().startsWith(searchWord.toLowerCase()) && searchWord !== key){\n ret.push({\n text: key,\n type: 'KEYWORD',\n replace: ()=> key,\n ...JavaAutoComplete.KEYWORDS_OWN_LOGIC[key](key)\n })\n }\n }\n\n variables.forEach(va => {\n if (va.name.toLowerCase().startsWith(searchWord.toLowerCase()) && searchWord !== va.name){\n ret.push({\n text: va.name+': '+va.type,\n type: 'VARIABLE',\n replace: ()=> va.name\n })\n }\n })\n functions.forEach(fn => {\n if (fn.name.toLowerCase().startsWith(searchWord.toLowerCase()) && searchWord !== fn.name){\n const fnN = fn.name+\"(\"+(fn.paramsLength > 0 ? fn.params.join(\", \") : '')+\")\"+(fn.type == 'void' ? ';' : '')\n ret.push({\n text: fnN.replace(\";\",'')+\": \"+fn.type,\n type: 'FUNCTION',\n replace: ()=>fnN,\n cursorMove: fn.paramsLength > 0 ? -1 : 0\n })\n }\n })\n classes.forEach(cl => {\n if (cl.name.toLowerCase().startsWith(searchWord.toLowerCase()) && searchWord !== cl.name){\n ret.push({\n text: cl.name+\": \"+cl.type,\n type: 'CLASS',\n replace: ()=>cl.name\n })\n }\n })\n return ret\n }\n \n}\nJavaAutoComplete.KEYWORDS_OWN_LOGIC = {\n 'if () {\\n \\n}': key=>({\n text: \"if\",\n replace: ()=>key,\n cursorMove: -10,\n type: \"SHORTCUT\"\n }),\n 'else if () {\\n \\n}': key=>({\n text: \"else if\",\n cursorMove: -10,\n type: \"SHORTCUT\"\n }),\n 'else {\\n \\n}': key=>({\n text: \"else\",\n cursorMove: -3,\n type: \"SHORTCUT\"\n }),\n 'sout': key=>({\n text: \"sout\",\n replace: ()=>'System.out.println();',\n cursorMove: -2,\n type: \"SHORTCUT\"\n })\n}\n\nJavaAutoComplete.FILE_EXTENSIONS = [\"java\", \"groovy\"]\nJavaAutoComplete.KEYWORDS = [\"abstract\", \"assert\", \"boolean\", \"break\", \"byte\", \"case\", \"catch\", \"char\", \"class\", \"const\", \"continue\", \"default\", \"do\", \"double\", \"else\", \"extends\", \"false\", \"final\", \"finally\", \"float\", \"for\", \"goto\", \"if\", \"implements\", \"import\", \"instanceof\", \"int\", \"interface\", \"long\", \"native\", \"new\", \"null\", \"package\", \"private\", \"protected\", \"public\", \"return\", \"short\", \"static\", \"strictfp\", \"super\", \"switch\", \"synchronized\", \"this\", \"throw\", \"throws\", \"transient\", \"true\", \"try\", \"void\", \"volatile\", \"while\"]"],"sourceRoot":""}