def _markastrelated(self, node): for child in node.values(): if IDocstring.providedBy(child) \ or IImport.providedBy(child) \ or IAttribute.providedBy(child) \ or IDecorator.providedBy(child): self._marklines(*range(child.bufstart, child.bufend)) else: self._marklines(*range(child.bufstart, child.defendlineno)) self._markastrelated(child)
def _findnodeposition(self, startlineno, endlineno, indent): values = [v for v in self.model.values() \ if not IDecorator.providedBy(v)] if not values: return self.model, POSITION_INSERT last = None for child in values: # inrange case if child.startlineno <= startlineno \ and child.endlineno >= endlineno: return child.parser._findnodeposition(startlineno, endlineno, indent) # before case if endlineno < child.startlineno: return child, POSITION_BEFORE last = child # after case - indent check if last.indent == indent: return last, POSITION_AFTER return self.model, POSITION_AFTER