def extract_variable(_, multiproj, main_project, other_projects, file_path, cursor_position_start, cursor_position_end, replacement): """ Extract variable from selection """ try: main_project.validate() module = libutils.path_to_resource(main_project, file_path) if multiproj: # we need to rename cross project crossrename = multiproject.MultiProjectRefactoring( ExtractVariable, other_projects) extractor = crossrename(main_project, module, cursor_position_start, cursor_position_end) pending_changes = extractor.get_all_changes(replacement) else: extractor = ExtractVariable(main_project, module, cursor_position_start, cursor_position_end) pending_changes = extractor.get_changes(replacement, similar=True) return multiproj, pending_changes except RopeError as e: error = RefactoringError() error.exc = str(e) error.traceback = traceback.format_exc() error.critical = False return error except Exception as e: error = RefactoringError() error.exc = str(e) error.traceback = traceback.format_exc() error.critical = True return error
def extract_variable(_, multiproj, main_project, other_projects, file_path, cursor_position_start, cursor_position_end, replacement): """ Extract variable from selection """ try: main_project.validate() module = libutils.path_to_resource(main_project, file_path) if multiproj: # we need to rename cross project crossrename = multiproject.MultiProjectRefactoring( ExtractVariable, other_projects) extractor = crossrename( main_project, module, cursor_position_start, cursor_position_end) pending_changes = extractor.get_all_changes(replacement) else: extractor = ExtractVariable( main_project, module, cursor_position_start, cursor_position_end) pending_changes = extractor.get_changes(replacement, similar=True) return multiproj, pending_changes except RopeError as e: error = RefactoringError() error.exc = str(e) error.traceback = traceback.format_exc() error.critical = False return error except Exception as e: error = RefactoringError() error.exc = str(e) error.traceback = traceback.format_exc() error.critical = True return error
def extract_variable(source_string, start, end, new_name): if new_name == '': new_name = 'extracted_variable' project, resource = make_temporary_project_and_resource(source_string) extractor = ExtractVariable(project, resource, start, end) changes = extractor.get_changes(new_name, similar=True) return get_result(changes, project, resource)
def onRefactor(self): renamed = ExtractVariable( self.project, self.resource, self._startOffset, self._endOffset) changes = renamed.get_changes( self._newName, self._similar, self._global) for item in changes.changes: if isinstance(item, rope.base.change.ChangeContents): self.changes.append( Change(item.resource.real_path, ChangeType.EDIT, item.get_description())) else: raise Exception('Unknown Change')
def onRefactor(self): renamed = ExtractVariable( self.project, self.resource, self._startOffset, self._endOffset) changes = renamed.get_changes( self._newName, self._similar, self._global) for item in changes.changes: if isinstance(item, rope.base.change.ChangeContents): self.changes.append( Change(item.resource.real_path, ChangeType.EDIT, get_diff(item))) else: raise Exception('Unknown Change')
def extract_variable(self, action): "Extracts a variable from expression selected in a document" self.validate_project() doc = self.window.get_active_document() start, end = doc.get_selection_bounds() resource = libutils.path_to_resource(self.project, doc.get_uri_for_display()) extractor = ExtractVariable(self.project, resource, start.get_offset(), end.get_offset()) txt = dialogs.get_python_identifier() if txt: changes = extractor.get_changes(txt) self.apply_changes(changes)
def create_refactoring_operation(self, project, resource, start, end): return ExtractVariable(project, resource, start, end)
import argparse from rope.base import libutils, project from rope.refactor.extract import ExtractVariable parser = argparse.ArgumentParser() parser.add_argument('path', type=str) parser.add_argument('file', type=str) parser.add_argument('start', type=int) parser.add_argument('end', type=int) parser.add_argument('name', type=str) args = parser.parse_args() project_path = args.path base_project = project.Project(project_path) file_path = args.file resource = libutils.path_to_resource(base_project, file_path) start, end = args.start - 1, args.end extractor = ExtractVariable(base_project, resource, start, end) variable_name = args.name changes = extractor.get_changes(variable_name, similar=True) print(changes.get_description()) # base_project.do(changes)
import rope.base.project from rope.base import libutils from rope.refactor.extract import ExtractVariable project = rope.base.project.Project('../lib/ansible') resource = libutils.path_to_resource( project, '../lib/ansible/collections/list.py') extractor = ExtractVariable(project, resource, 1, 50) changes = extractor.get_changes('extracted_variable') project.do(changes)