Krita Source Code Documentation
Loading...
Searching...
No Matches
krita.sceditor.indenter._StatementRangeFinder Class Reference
+ Inheritance diagram for krita.sceditor.indenter._StatementRangeFinder:

Public Member Functions

 __init__ (self, lines, lineno)
 
 get_line_indents (self, line_number)
 
 get_statement_start (self)
 
 is_line_continued (self)
 
 last_open_parens (self)
 

Public Attributes

 explicit_continuation
 
 in_string
 
 lineno
 
 lines
 
 open_count
 
 open_parens
 
 statement_start
 

Protected Member Functions

 _analyze (self)
 
 _analyze_line (self, lineno)
 

Detailed Description

A method object for finding the range of a statement

Definition at line 185 of file indenter.py.

Constructor & Destructor Documentation

◆ __init__()

krita.sceditor.indenter._StatementRangeFinder.__init__ ( self,
lines,
lineno )

Definition at line 189 of file indenter.py.

189 def __init__(self, lines, lineno):
190 self.lines = lines
191 self.lineno = lineno
192 self.in_string = ''
193 self.open_count = 0
194 self.explicit_continuation = False
195 self.open_parens = []
196 self._analyze()
197

Member Function Documentation

◆ _analyze()

krita.sceditor.indenter._StatementRangeFinder._analyze ( self)
protected

Definition at line 226 of file indenter.py.

226 def _analyze(self):
227 last_statement = 1
228 block_start = codeanalyze.get_block_start(self.lines, self.lineno)
229 for current_line_number in range(block_start, self.lineno + 1):
230 if not self.explicit_continuation and \
231 self.open_count == 0 and self.in_string == '':
232 last_statement = current_line_number
233 self._analyze_line(current_line_number)
234 self.statement_start = last_statement
235

References krita.sceditor.indenter._StatementRangeFinder._analyze_line(), krita.sceditor.indenter._StatementRangeFinder.explicit_continuation, krita.sceditor.indenter._StatementRangeFinder.in_string, krita.sceditor.indenter._StatementRangeFinder.lineno, krita.sceditor.console.PythonInterpreter.lines, krita.sceditor.indenter._StatementRangeFinder.lines, and krita.sceditor.indenter._StatementRangeFinder.open_count.

◆ _analyze_line()

krita.sceditor.indenter._StatementRangeFinder._analyze_line ( self,
lineno )
protected

Definition at line 198 of file indenter.py.

198 def _analyze_line(self, lineno):
199 current_line = self.lines.get_line(lineno)
200 for i, char in enumerate(current_line):
201 if char in '\'"':
202 if self.in_string == '':
203 self.in_string = char
204 if char * 3 == current_line[i:i + 3]:
205 self.in_string = char * 3
206 elif self.in_string == current_line[i:i + len(self.in_string)] and \
207 not (i > 0 and current_line[i - 1] == '\\' and
208 not (i > 1 and current_line[i - 2:i] == '\\\\')):
209 self.in_string = ''
210 if self.in_string != '':
211 continue
212 if char == '#':
213 break
214 if char in '([{':
215 self.open_count += 1
216 self.open_parens.append((lineno, i))
217 if char in ')]}':
218 self.open_count -= 1
219 if self.open_parens:
220 self.open_parens.pop()
221 if current_line and char != '#' and current_line.endswith('\\'):
222 self.explicit_continuation = True
223 else:
224 self.explicit_continuation = False
225

References krita.sceditor.indenter._StatementRangeFinder.explicit_continuation, krita.sceditor.indenter._StatementRangeFinder.in_string, krita.sceditor.console.PythonInterpreter.lines, krita.sceditor.indenter._StatementRangeFinder.lines, krita.sceditor.indenter._StatementRangeFinder.open_count, and krita.sceditor.indenter._StatementRangeFinder.open_parens.

◆ get_line_indents()

krita.sceditor.indenter._StatementRangeFinder.get_line_indents ( self,
line_number )

Definition at line 247 of file indenter.py.

247 def get_line_indents(self, line_number):
248 return self._count_line_indents(self.lines.get_line(line_number))

References krita.sceditor.indenter.TextIndenter._count_line_indents(), krita.sceditor.console.PythonInterpreter.lines, and krita.sceditor.indenter._StatementRangeFinder.lines.

◆ get_statement_start()

krita.sceditor.indenter._StatementRangeFinder.get_statement_start ( self)

Definition at line 236 of file indenter.py.

236 def get_statement_start(self):
237 return self.statement_start
238

References krita.sceditor.indenter._StatementRangeFinder.statement_start.

◆ is_line_continued()

krita.sceditor.indenter._StatementRangeFinder.is_line_continued ( self)

Definition at line 244 of file indenter.py.

244 def is_line_continued(self):
245 return self.open_count != 0 or self.explicit_continuation
246

References krita.sceditor.indenter._StatementRangeFinder.explicit_continuation, and krita.sceditor.indenter._StatementRangeFinder.open_count.

◆ last_open_parens()

krita.sceditor.indenter._StatementRangeFinder.last_open_parens ( self)

Definition at line 239 of file indenter.py.

239 def last_open_parens(self):
240 if not self.open_parens:
241 return None
242 return self.open_parens[-1]
243

References krita.sceditor.indenter._StatementRangeFinder.open_parens.

Member Data Documentation

◆ explicit_continuation

krita.sceditor.indenter._StatementRangeFinder.explicit_continuation

Definition at line 194 of file indenter.py.

◆ in_string

krita.sceditor.indenter._StatementRangeFinder.in_string

Definition at line 192 of file indenter.py.

◆ lineno

krita.sceditor.indenter._StatementRangeFinder.lineno

Definition at line 191 of file indenter.py.

◆ lines

krita.sceditor.indenter._StatementRangeFinder.lines

Definition at line 190 of file indenter.py.

◆ open_count

krita.sceditor.indenter._StatementRangeFinder.open_count

Definition at line 193 of file indenter.py.

◆ open_parens

krita.sceditor.indenter._StatementRangeFinder.open_parens

Definition at line 195 of file indenter.py.

◆ statement_start

krita.sceditor.indenter._StatementRangeFinder.statement_start

Definition at line 234 of file indenter.py.


The documentation for this class was generated from the following file: