コード例 #1
0
ファイル: inline.py プロジェクト: calpe20/PYTHONIZANDO
 def occurred_outside_skip(self, change_collector, occurrence):
     start, end = occurrence.get_primary_range()
     # we remove out of date imports later
     if occurrence.is_in_import_statement():
         return
     # the function is referenced outside an import statement
     if not occurrence.is_called():
         raise rope.base.exceptions.RefactoringError(
             'Reference to inlining function other than function call'
             ' in <file: %s, offset: %d>' % (self.resource.path, start))
     if self.aim is not None and (self.aim < start or self.aim > end):
         return
     end_parens = self._find_end_parens(self.source, end - 1)
     lineno = self.lines.get_line_number(start)
     start_line, end_line = self.pymodule.logical_lines.\
                            logical_line_in(lineno)
     line_start = self.lines.get_line_start(start_line)
     line_end = self.lines.get_line_end(end_line)
     returns = self.source[line_start:start].strip() != '' or \
               self.source[end_parens:line_end].strip() != ''
     indents = sourceutils.get_indents(self.lines, start_line)
     primary, pyname = occurrence.get_primary_and_pyname()
     definition, returned = self.generator.get_definition(
         primary, pyname, self.source[start:end_parens], returns=returns)
     end = min(line_end + 1, len(self.source))
     change_collector.add_change(
         line_start, end, sourceutils.fix_indentation(definition, indents))
     if returns:
         name = returned
         if name is None:
             name = 'None'
         change_collector.add_change(
             line_end, end, self.source[line_start:start] + name +
             self.source[end_parens:end])
コード例 #2
0
ファイル: generate.py プロジェクト: 0Chuzz/python-mode
 def get_insertion_lineno(self):
     lines = self.goal_pymodule.lines
     if self.goal_scope == self.source_scope:
         line_finder = self.goal_pymodule.logical_lines
         lineno = lines.get_line_number(self.offset)
         lineno = line_finder.logical_line_in(lineno)[0]
         root = suites.ast_suite_tree(self.goal_scope.pyobject.get_ast())
         suite = root.find_suite(lineno)
         indents = sourceutils.get_indents(lines, lineno)
         while self.get_scope_indents() < indents:
             lineno = suite.get_start()
             indents = sourceutils.get_indents(lines, lineno)
             suite = suite.parent
         return lineno
     else:
         return min(self.goal_scope.get_end() + 1, lines.length())
コード例 #3
0
 def get_changes(self, classname=None, new_class_name=None):
     if new_class_name is not None:
         warnings.warn(
             "new_class_name parameter is deprecated; use classname",
             DeprecationWarning,
             stacklevel=2,
         )
         classname = new_class_name
     collector = codeanalyze.ChangeCollector(self.pymodule.source_code)
     start, end = sourceutils.get_body_region(self.pyfunction)
     indents = sourceutils.get_indents(
         self.pymodule.lines,
         self.pyfunction.get_scope().get_start()) + sourceutils.get_indent(
             self.project)
     new_contents = " " * indents + "return %s(%s)()\n" % (
         classname,
         ", ".join(self._get_parameter_names()),
     )
     collector.add_change(start, end, new_contents)
     insertion = self._get_class_insertion_point()
     collector.add_change(insertion, insertion,
                          "\n\n" + self.get_new_class(classname))
     changes = change.ChangeSet(
         "Replace method with method object refactoring")
     changes.add_change(
         change.ChangeContents(self.resource, collector.get_changed()))
     return changes
コード例 #4
0
ファイル: generate.py プロジェクト: climbus/rope
 def get_insertion_lineno(self):
     lines = self.goal_pymodule.lines
     if self.goal_scope == self.source_scope:
         line_finder = self.goal_pymodule.logical_lines
         lineno = lines.get_line_number(self.offset)
         lineno = line_finder.logical_line_in(lineno)[0]
         root = suites.ast_suite_tree(self.goal_scope.pyobject.get_ast())
         suite = root.find_suite(lineno)
         indents = sourceutils.get_indents(lines, lineno)
         while self.get_scope_indents() < indents:
             lineno = suite.get_start()
             indents = sourceutils.get_indents(lines, lineno)
             suite = suite.parent
         return lineno
     else:
         return min(self.goal_scope.get_end() + 1, lines.length())
コード例 #5
0
ファイル: inline.py プロジェクト: Even8090/hrv_features
 def _get_method_replacement(self):
     if self._is_the_last_method_of_a_class():
         indents = sourceutils.get_indents(
             self.pymodule.lines,
             self.pyfunction.get_scope().get_start())
         return ' ' * indents + 'pass\n'
     return ''
コード例 #6
0
ファイル: inline.py プロジェクト: FredSanders/emacs.d
 def occurred_outside_skip(self, change_collector, occurrence):
     start, end = occurrence.get_primary_range()
     if not occurrence.is_called():
         raise rope.base.exceptions.RefactoringError(
             'Reference to inlining function other than function call'
             ' in <file: %s, offset: %d>' % (self.resource.path, start))
     if self.aim is not None and (self.aim < start or self.aim > end):
         return
     end_parens = self._find_end_parens(self.source, end - 1)
     lineno = self.lines.get_line_number(start)
     start_line, end_line = self.pymodule.logical_lines.\
                            logical_line_in(lineno)
     line_start = self.lines.get_line_start(start_line)
     line_end = self.lines.get_line_end(end_line)
     returns = self.source[line_start:start].strip() != '' or \
               self.source[end_parens:line_end].strip() != ''
     indents = sourceutils.get_indents(self.lines, start_line)
     primary, pyname = occurrence.get_primary_and_pyname()
     definition, returned = self.generator.get_definition(
         primary, pyname, self.source[start:end_parens], returns=returns)
     end = min(line_end + 1, len(self.source))
     change_collector.add_change(
         line_start, end, sourceutils.fix_indentation(definition, indents))
     if returns:
         name = returned
         if name is None:
             name = 'None'
         change_collector.add_change(
             line_end, end, self.source[line_start:start] + name +
             self.source[end_parens:end])
コード例 #7
0
 def find_indents(self):
     if self.info.variable and not self.info.make_global:
         return sourceutils.get_indents(self.info.lines,
                                        self._get_before_line())
     else:
         if self.info.global_ or self.info.make_global:
             return 0
     return self.info.scope_indents
コード例 #8
0
 def _auto_indent(self, offset, text):
     lineno = self.lines.get_line_number(offset)
     indents = sourceutils.get_indents(self.lines, lineno)
     result = []
     for index, line in enumerate(text.splitlines(True)):
         if index != 0 and line.strip():
             result.append(' ' * indents)
         result.append(line)
     return ''.join(result)
コード例 #9
0
 def _auto_indent(self, offset, text):
     lineno = self.lines.get_line_number(offset)
     indents = sourceutils.get_indents(self.lines, lineno)
     result = []
     for index, line in enumerate(text.splitlines(True)):
         if index != 0 and line.strip():
             result.append(' ' * indents)
         result.append(line)
     return ''.join(result)
コード例 #10
0
ファイル: method_object.py プロジェクト: FredSanders/emacs.d
 def get_changes(self, classname=None, new_class_name=None):
     if new_class_name is not None:
         warnings.warn(
             'new_class_name parameter is deprecated; use classname',
             DeprecationWarning, stacklevel=2)
         classname = new_class_name
     collector = codeanalyze.ChangeCollector(self.pymodule.source_code)
     start, end = sourceutils.get_body_region(self.pyfunction)
     indents = sourceutils.get_indents(
         self.pymodule.lines, self.pyfunction.get_scope().get_start()) + \
         sourceutils.get_indent(self.pycore)
     new_contents = ' ' * indents + 'return %s(%s)()\n' % \
                    (classname, ', '.join(self._get_parameter_names()))
     collector.add_change(start, end, new_contents)
     insertion = self._get_class_insertion_point()
     collector.add_change(insertion, insertion,
                          '\n\n' + self.get_new_class(classname))
     changes = change.ChangeSet('Replace method with method object refactoring')
     changes.add_change(change.ChangeContents(self.resource,
                                              collector.get_changed()))
     return changes
コード例 #11
0
ファイル: inline.py プロジェクト: JacekPliszka/rope
    def occurred_outside_skip(self, change_collector, occurrence):
        start, end = occurrence.get_primary_range()
        # we remove out of date imports later
        if occurrence.is_in_import_statement():
            return
        # the function is referenced outside an import statement
        if not occurrence.is_called():
            raise rope.base.exceptions.RefactoringError(
                "Reference to inlining function other than function call"
                " in <file: %s, offset: %d>" % (self.resource.path, start)
            )
        if self.aim is not None and (self.aim < start or self.aim > end):
            return
        end_parens = self._find_end_parens(self.source, end - 1)
        lineno = self.lines.get_line_number(start)
        start_line, end_line = self.pymodule.logical_lines.logical_line_in(lineno)
        line_start = self.lines.get_line_start(start_line)
        line_end = self.lines.get_line_end(end_line)

        returns = self.source[line_start:start].strip() != "" or self.source[end_parens:line_end].strip() != ""
        indents = sourceutils.get_indents(self.lines, start_line)
        primary, pyname = occurrence.get_primary_and_pyname()

        host = self.pymodule
        scope = host.scope.get_inner_scope_for_line(lineno)
        definition, returned = self.generator.get_definition(
            primary, pyname, self.source[start:end_parens], scope.get_names(), returns=returns
        )

        end = min(line_end + 1, len(self.source))
        change_collector.add_change(line_start, end, sourceutils.fix_indentation(definition, indents))
        if returns:
            name = returned
            if name is None:
                name = "None"
            change_collector.add_change(
                line_end, end, self.source[line_start:start] + name + self.source[end_parens:end]
            )
コード例 #12
0
 def indents(self):
     return sourceutils.get_indents(self.pymodule.lines,
                                    self.region_lines[0])
コード例 #13
0
 def _get_scope_indents(self, lines, scope):
     return sourceutils.get_indents(lines, scope.get_start())
コード例 #14
0
ファイル: generate.py プロジェクト: climbus/rope
 def get_scope_indents(self):
     if self.goal_scope.get_kind() == "Module":
         return 0
     return (sourceutils.get_indents(self.goal_pymodule.lines,
                                     self.goal_scope.get_start()) + 4)
コード例 #15
0
 def _get_scope_indents(self, pyobject):
     pymodule = pyobject.get_module()
     return sourceutils.get_indents(
         pymodule.lines, pyobject.get_scope().get_start()) + \
         sourceutils.get_indent(self.project)
コード例 #16
0
ファイル: inline.py プロジェクト: FredSanders/emacs.d
 def _get_method_replacement(self):
     if self._is_the_last_method_of_a_class():
         indents = sourceutils.get_indents(
             self.pymodule.lines, self.pyfunction.get_scope().get_start())
         return ' ' * indents + 'pass\n'
     return ''
コード例 #17
0
ファイル: move.py プロジェクト: DonJayamanne/pythonVSCode
 def _get_scope_indents(self, pyobject):
     pymodule = pyobject.get_module()
     return sourceutils.get_indents(pymodule.lines, pyobject.get_scope().get_start()) + sourceutils.get_indent(
         self.project
     )
コード例 #18
0
 def scope_indents(self):
     if self.global_:
         return 0
     return sourceutils.get_indents(self.pymodule.lines,
                                    self.scope.get_start())
コード例 #19
0
ファイル: generate.py プロジェクト: 0Chuzz/python-mode
 def get_scope_indents(self):
     if self.goal_scope.get_kind() == 'Module':
         return 0
     return sourceutils.get_indents(self.goal_pymodule.lines,
                                    self.goal_scope.get_start()) + 4
コード例 #20
0
 def _get_scope_indents(self, lines, scope):
     return sourceutils.get_indents(lines, scope.get_start())