diff -r c7600eee9047 -r 05fb0977ce1b RefactoringRope/RefactoringClient.py --- a/RefactoringRope/RefactoringClient.py Sun Sep 24 11:56:11 2017 +0200 +++ b/RefactoringRope/RefactoringClient.py Sun Sep 24 13:42:01 2017 +0200 @@ -87,6 +87,8 @@ self.__calculateEncapsulateFieldChanges, "CalculateLocalToAttributeChanges": self.__calculateLocalToAttributeChanges, + "CalculateMethodObjectChanges": + self.__calculateMethodObjectChanges, } from FileSystemCommands import RefactoringClientFileSystemCommands @@ -1476,6 +1478,45 @@ result.update(errorDict) self.sendJson("Changes", result) + + def __calculateMethodObjectChanges(self, params): + """ + Private method to calculate the 'Method to Method Object' changes + based on the parameters sent by the server. + + @param params dictionary containing the method parameters sent by + the server + @type dict + """ + changeGroup = params["ChangeGroup"] + title = params["Title"] + filename = params["FileName"] + offset = params["Offset"] + name = params["Name"] + + errorDict = {} + changes = None + result = { + "ChangeGroup": changeGroup, + "Title": title, + } + + import rope.refactor.method_object + resource = rope.base.libutils.path_to_resource( + self.__project, filename) + try: + converter = rope.refactor.method_object.MethodObject( + self.__project, resource, offset) + changes = converter.get_changes(name) + except Exception as err: + errorDict = self.__handleRopeError(err) + + self.__changes[changeGroup] = changes + + result["Subcommand"] = "ChangesCalculated" + result.update(errorDict) + + self.sendJson("Changes", result) if __name__ == '__main__':