Exemple #1
0
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
Exemple #3
0
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)
Exemple #4
0
 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')
Exemple #5
0
 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)
Exemple #8
0
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)
Exemple #9
0
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)