392 |
392 |
393 @return string to be used for an indentation (string) |
393 @return string to be used for an indentation (string) |
394 """ |
394 """ |
395 sio = StringIO("".join(self.__source)) |
395 sio = StringIO("".join(self.__source)) |
396 indentWord = " " # default in case of failure |
396 indentWord = " " # default in case of failure |
397 try: |
397 with contextlib.suppress(SyntaxError, tokenize.TokenError): |
398 for token in tokenize.generate_tokens(sio.readline): |
398 for token in tokenize.generate_tokens(sio.readline): |
399 if token[0] == tokenize.INDENT: |
399 if token[0] == tokenize.INDENT: |
400 indentWord = token[1] |
400 indentWord = token[1] |
401 break |
401 break |
402 except (SyntaxError, tokenize.TokenError): |
|
403 pass |
|
404 return indentWord |
402 return indentWord |
405 |
403 |
406 def __getIndent(self, line): |
404 def __getIndent(self, line): |
407 """ |
405 """ |
408 Private method to get the indentation string. |
406 Private method to get the indentation string. |
425 source = "".join(self.__source) |
423 source = "".join(self.__source) |
426 sio = StringIO(source) |
424 sio = StringIO(source) |
427 self.__multiLineNumbers = set() |
425 self.__multiLineNumbers = set() |
428 self.__docLineNumbers = set() |
426 self.__docLineNumbers = set() |
429 previousTokenType = '' |
427 previousTokenType = '' |
430 try: |
428 with contextlib.suppress(SyntaxError, tokenize.TokenError): |
431 for t in tokenize.generate_tokens(sio.readline): |
429 for t in tokenize.generate_tokens(sio.readline): |
432 tokenType = t[0] |
430 tokenType = t[0] |
433 startRow = t[2][0] |
431 startRow = t[2][0] |
434 endRow = t[3][0] |
432 endRow = t[3][0] |
435 |
433 |
440 else: |
438 else: |
441 self.__docLineNumbers |= set( |
439 self.__docLineNumbers |= set( |
442 range(startRow, 1 + endRow)) |
440 range(startRow, 1 + endRow)) |
443 |
441 |
444 previousTokenType = tokenType |
442 previousTokenType = tokenType |
445 except (SyntaxError, tokenize.TokenError): |
|
446 pass |
|
447 |
443 |
448 return self.__multiLineNumbers, self.__docLineNumbers |
444 return self.__multiLineNumbers, self.__docLineNumbers |
449 |
445 |
450 def __fixReindent(self, line, pos, logical): |
446 def __fixReindent(self, line, pos, logical): |
451 """ |
447 """ |