Advertisement
little_meow3

DevTools lab5

Dec 4th, 2022
503
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const vscode = require("vscode");
  2.  
  3. class Analyzer {
  4.  
  5.     analyzeCode() {
  6.         const editor = vscode.window.activeTextEditor;
  7.         if (!editor) {
  8.             vscode.window.showErrorMessage("There is no open text editor");
  9.             return;
  10.         }
  11.  
  12.         const doc = editor.document;
  13.         const text = doc.getText();
  14.  
  15.         var fields = [];
  16.         var publicMethods = [[]];
  17.         var publicMethodCount = 0;
  18.         var publicMethodBool = false;
  19.         var privateMethods = [[]];
  20.         var privateMethodCount = 0;
  21.         var privateMethodBool = false;
  22.         var constructor = [];
  23.         var consructorBool = false;
  24.         var classDeclaration = "";
  25.         var className = "";
  26.         var linesCount = text.split("\n").length;
  27.  
  28.         text.split("\n").map((codeLine, idx) => {
  29.             if (idx == linesCount - 1) {
  30.                 return
  31.             } else {
  32.                 if (codeLine.includes("public class")) {
  33.                     classDeclaration = codeLine;
  34.                     className = codeLine.slice(13);
  35.                     var brace = className.indexOf("{");
  36.                     className = className.substring(0, brace);
  37.                     if (className[className.length - 1] == ' ') {
  38.                         className = className.substring(0, className.length - 1);
  39.                     }
  40.  
  41.                 } else {
  42.                     if (codeLine.includes("public") && codeLine.includes(className)) {
  43.                         consructorBool = true;
  44.                         constructor.push(codeLine);
  45.                     } else {
  46.                         if (consructorBool == true && !codeLine.includes("public") && !codeLine.includes("private")) {
  47.                             constructor.push(codeLine);
  48.                             return;
  49.                         }
  50.                         else {
  51.                             consructorBool = false;
  52.                             if ((codeLine.includes("public") || codeLine.includes("private")) && codeLine.includes(";")) {
  53.                                 fields.push(codeLine);
  54.                             } else {
  55.                                 if (codeLine.includes("public")) {
  56.                                     publicMethodBool = true;
  57.                                     publicMethodCount += 1;
  58.                                     publicMethods[publicMethodCount - 1].push(codeLine);
  59.                                 } else {
  60.                                     if (publicMethodBool == true  && !codeLine.includes("public") && !codeLine.includes("private")) {
  61.                                         publicMethods[publicMethodCount - 1].push(codeLine);
  62.                                     }
  63.                                     else {
  64.                                         publicMethodBool = false;
  65.                                         if (codeLine.includes("private")) {
  66.                                             privateMethodBool = true;
  67.                                             privateMethodCount += 1;
  68.                                             privateMethods[privateMethodCount - 1].push(codeLine);
  69.                                         } else {
  70.                                             if (privateMethodBool == true  && !codeLine.includes("public") && !codeLine.includes("private")) {
  71.                                                 privateMethods[privateMethodCount - 1].push(codeLine);
  72.                                             } else {
  73.                                                 privateMethodBool = false;
  74.                                             }
  75.                                         }
  76.                                     }
  77.                                 }
  78.                             }
  79.                         }
  80.                     }
  81.                 }
  82.             }
  83.         });
  84.  
  85.         var newText = "";
  86.         newText += classDeclaration;
  87.        
  88.         newText += '\n';
  89.        
  90.         for (let i = 0; i < fields.length; i += 1) {
  91.             newText += fields[i];
  92.         }
  93.  
  94.         for (let i = 0; i < constructor.length; i += 1) {
  95.             newText += constructor[i];
  96.         }
  97.  
  98.         for (let i = 0; i < publicMethods.length; i += 1) {
  99.             for (let j = 0; j < publicMethods[i].length; j += 1) {
  100.                 newText += publicMethods[i][j];
  101.             }
  102.         }
  103.  
  104.         for (let i = 0; i < privateMethods.length; i += 1) {
  105.             for (let j = 0; j < privateMethods[i].length; j += 1) {
  106.                 newText += privateMethods[i][j];
  107.             }
  108.         }
  109.  
  110.         newText += "}";
  111.         editor.edit(builder => builder.replace(editor.selection, newText));
  112.     }
  113. }
  114.  
  115. module.exports = Analyzer;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement