eric7/JediInterface/JediClient.py

branch
eric7
changeset 8668
d29c775b8bd7
parent 8666
3a62b4009df9
child 8669
c26ecdb00a8b
diff -r 99dfcefcc4d8 -r d29c775b8bd7 eric7/JediInterface/JediClient.py
--- a/eric7/JediInterface/JediClient.py	Mon Oct 04 19:59:59 2021 +0200
+++ b/eric7/JediInterface/JediClient.py	Tue Oct 05 18:13:40 2021 +0200
@@ -42,7 +42,6 @@
         super().__init__(host, port, idString)
         
         # TODO: add additional methods for these topics
-        #       - rename variable
         #       - extract function
         #       - extract variable
         #       - inline variable
@@ -58,6 +57,8 @@
             "gotoReferences": self.__getReferences,
             
             "renameVariable": self.__renameVariable,
+            "extractVariable": self.__extractVariable,
+            "inlineVariable": self.__inlineVariable,
             "applyRefactoring": self.__applyRefactoring,
             "cancelRefactoring": self.__cancelRefactoring,
         }
@@ -444,7 +445,79 @@
         }
         result.update(errorDict)
         
-        self.sendJson("RenameVariableDiff", result)
+        self.sendJson("RefactoringDiff", result)
+    
+    def __extractVariable(self, params):
+        """
+        Private method to extract a statement to a new variable.
+        
+        @param params dictionary containing the method parameters
+        @type dict
+        """
+        filename = params["FileName"]
+        source = params["Source"]
+        line = params["Line"]
+        index = params["Index"]
+        endLine = params["EndLine"]
+        endIndex = params["EndIndex"]
+        uid = params["Uuid"]
+        newName = params["NewName"]
+        
+        errorDict = {}
+        diff = ""
+        
+        script = jedi.Script(source, path=filename, project=self.__project)
+        
+        try:
+            refactoring = script.extract_variable(
+                line, index, new_name=newName,
+                until_line=endLine, until_column=endIndex
+            )
+            self.__refactorings[uid] = refactoring
+            diff = refactoring.get_diff()
+        except SuppressedException as err:
+            errorDict = self.__handleError(err)
+        
+        result = {
+            "Diff": diff,
+            "Uuid": uid,
+        }
+        result.update(errorDict)
+        
+        self.sendJson("RefactoringDiff", result)
+    
+    def __inlineVariable(self, params):
+        """
+        Private method to inline a variable statement.
+        
+        @param params dictionary containing the method parameters
+        @type dict
+        """
+        filename = params["FileName"]
+        source = params["Source"]
+        line = params["Line"]
+        index = params["Index"]
+        uid = params["Uuid"]
+        
+        errorDict = {}
+        diff = ""
+        
+        script = jedi.Script(source, path=filename, project=self.__project)
+        
+        try:
+            refactoring = script.inline(line, index)
+            self.__refactorings[uid] = refactoring
+            diff = refactoring.get_diff()
+        except SuppressedException as err:
+            errorDict = self.__handleError(err)
+        
+        result = {
+            "Diff": diff,
+            "Uuid": uid,
+        }
+        result.update(errorDict)
+        
+        self.sendJson("RefactoringDiff", result)
     
     def __applyRefactoring(self, params):
         """

eric ide

mercurial