RefactoringRope/RefactoringClient.py

branch
server_client_variant
changeset 176
117d86025a5c
parent 175
72a1d9030d67
child 178
70b4fb448811
equal deleted inserted replaced
175:72a1d9030d67 176:117d86025a5c
61 "ClearChanges": self.__clearChanges, 61 "ClearChanges": self.__clearChanges,
62 "CalculateRenameChanges": self.__calculateRenameChanges, 62 "CalculateRenameChanges": self.__calculateRenameChanges,
63 "CalculateChangeOccurrencesChanges": 63 "CalculateChangeOccurrencesChanges":
64 self.__calculateChangeOccurrencesChanges, 64 self.__calculateChangeOccurrencesChanges,
65 "CalculateExtractChanges": self.__calculateExtractChanges, 65 "CalculateExtractChanges": self.__calculateExtractChanges,
66 "RequestInlineType": self.__requestInlineType,
67 "CalculateInlineChanges": self.__calculateInlineChanges,
66 } 68 }
67 69
68 from FileSystemCommands import RefactoringClientFileSystemCommands 70 from FileSystemCommands import RefactoringClientFileSystemCommands
69 self.__fsCommands = RefactoringClientFileSystemCommands(self) 71 self.__fsCommands = RefactoringClientFileSystemCommands(self)
70 72
534 536
535 import rope.refactor.rename 537 import rope.refactor.rename
536 resource = rope.base.libutils.path_to_resource( 538 resource = rope.base.libutils.path_to_resource(
537 self.__project, filename) 539 self.__project, filename)
538 540
539 try:
540 renamer = rope.refactor.rename.Rename(
541 self.__project, resource, offset)
542 except Exception as err:
543 errorDict = self.__handleRopeError(err)
544 result.update(errorDict)
545 self.sendJson("Changes", result)
546 return
547
548 if isLocal: 541 if isLocal:
549 resources = [resource] 542 resources = [resource]
550 else: 543 else:
551 resources = None 544 resources = None
552 545
553 from ProgressHandle import ProgressHandle 546 from ProgressHandle import ProgressHandle
554 self.__progressHandle = ProgressHandle(self, title, True) 547 self.__progressHandle = ProgressHandle(self, title, True)
555 try: 548 try:
549 renamer = rope.refactor.rename.Rename(
550 self.__project, resource, offset)
556 changes = renamer.get_changes( 551 changes = renamer.get_changes(
557 newName, 552 newName,
558 resources=resources, 553 resources=resources,
559 in_hierarchy=renameHierarchy, 554 in_hierarchy=renameHierarchy,
560 unsure=lambda o: self.__confirmUnsure(o, changeGroup), 555 unsure=lambda o: self.__confirmUnsure(o, changeGroup),
627 resource = rope.base.libutils.path_to_resource( 622 resource = rope.base.libutils.path_to_resource(
628 self.__project, filename) 623 self.__project, filename)
629 try: 624 try:
630 renamer = rope.refactor.rename.ChangeOccurrences( 625 renamer = rope.refactor.rename.ChangeOccurrences(
631 self.__project, resource, offset) 626 self.__project, resource, offset)
632 except Exception as err:
633 errorDict = self.__handleRopeError(err)
634 result.update(errorDict)
635 self.sendJson("Changes", result)
636 return
637
638 try:
639 changes = renamer.get_changes( 627 changes = renamer.get_changes(
640 newName, only_calls=onlyCalls, reads=reads, writes=writes) 628 newName, only_calls=onlyCalls, reads=reads, writes=writes)
641 except Exception as err: 629 except Exception as err:
642 errorDict = self.__handleRopeError(err) 630 errorDict = self.__handleRopeError(err)
643 631
684 elif kind == "method": 672 elif kind == "method":
685 extractor = rope.refactor.extract.ExtractMethod( 673 extractor = rope.refactor.extract.ExtractMethod(
686 self.__project, resource, startOffset, endOffset) 674 self.__project, resource, startOffset, endOffset)
687 else: 675 else:
688 raise Exception("Invalid extraction kind <{0}>.".format(kind)) 676 raise Exception("Invalid extraction kind <{0}>.".format(kind))
689 except Exception as err:
690 errorDict = self.__handleRopeError(err)
691 result.update(errorDict)
692 self.sendJson("Changes", result)
693 return
694
695 try:
696 changes = extractor.get_changes( 677 changes = extractor.get_changes(
697 newName, similar=similar, global_=global_) 678 newName, similar=similar, global_=global_)
698 except Exception as err: 679 except Exception as err:
699 errorDict = self.__handleRopeError(err) 680 errorDict = self.__handleRopeError(err)
681
682 self.__changes[changeGroup] = changes
683
684 result["Subcommand"] = "ChangesCalculated"
685 result.update(errorDict)
686
687 self.sendJson("Changes", result)
688
689 def __requestInlineType(self, params):
690 """
691 Private method to determine the 'Inline' changes type based on the
692 parameters sent by the server.
693
694 @param params dictionary containing the method parameters sent by
695 the server
696 @type dict
697 """
698 changeGroup = params["ChangeGroup"]
699 title = params["Title"]
700 filename = params["FileName"]
701 offset = params["Offset"]
702
703 errorDict = {}
704 result = {
705 "Subcommand": "InlineType",
706 "ChangeGroup": changeGroup,
707 "Title": title,
708 }
709
710 import rope.refactor.inline
711 resource = rope.base.libutils.path_to_resource(
712 self.__project, filename)
713 try:
714 inliner = rope.refactor.inline.create_inline(
715 self.__project, resource, offset)
716 result.update({
717 "Name": inliner.name,
718 "Kind": inliner.get_kind(),
719 })
720 except Exception as err:
721 errorDict = self.__handleRopeError(err)
722
723 result.update(errorDict)
724
725 self.sendJson("Changes", result)
726
727 def __calculateInlineChanges(self, params):
728 """
729 Private method to calculate the 'Extract' changes based on the
730 parameters sent by the server.
731
732 @param params dictionary containing the method parameters sent by
733 the server
734 @type dict
735 """
736 changeGroup = params["ChangeGroup"]
737 title = params["Title"]
738 filename = params["FileName"]
739 offset = params["Offset"]
740 kind = params["Kind"]
741
742 errorDict = {}
743 changes = []
744 result = {
745 "ChangeGroup": changeGroup,
746 "Title": title,
747 }
748
749 import rope.refactor.extract
750 resource = rope.base.libutils.path_to_resource(
751 self.__project, filename)
752 from ProgressHandle import ProgressHandle
753 self.__progressHandle = ProgressHandle(self, title, True)
754 try:
755 inliner = rope.refactor.inline.create_inline(
756 self.__project, resource, offset)
757 if kind == "parameter":
758 opts = {
759 "in_hierarchy": params["Hierarchy"],
760 }
761 else:
762 opts = {
763 "remove": params["Remove"],
764 "only_current": params["OnlyCurrent"],
765 }
766 changes = inliner.get_changes(
767 task_handle=self.__progressHandle, **opts)
768 except Exception as err:
769 errorDict = self.__handleRopeError(err)
770 self.__progressHandle.reset()
771 self.__progressHandle = None
700 772
701 self.__changes[changeGroup] = changes 773 self.__changes[changeGroup] = changes
702 774
703 result["Subcommand"] = "ChangesCalculated" 775 result["Subcommand"] = "ChangesCalculated"
704 result.update(errorDict) 776 result.update(errorDict)

eric ide

mercurial