eric6/Utilities/ClassBrowsers/pyclbr.py

changeset 8087
db518728761c
parent 7973
e836d196e888
child 8131
f2129bb79269
equal deleted inserted replaced
8086:eff504bb6dec 8087:db518728761c
434 434
435 classstack = [] # stack of (class, indent) pairs 435 classstack = [] # stack of (class, indent) pairs
436 conditionalsstack = [] # stack of indents of conditional defines 436 conditionalsstack = [] # stack of indents of conditional defines
437 deltastack = [] 437 deltastack = []
438 deltaindent = 0 438 deltaindent = 0
439 deltaindentcalculated = 0 439 deltaindentcalculated = False
440 440
441 lineno, last_lineno_pos = 1, 0 441 lineno, last_lineno_pos = 1, 0
442 i = 0 442 i = 0
443 modifierType = ClbrBaseClasses.Function.General 443 modifierType = ClbrBaseClasses.Function.General
444 modifierIndent = -1 444 modifierIndent = -1
477 if conditionalsstack: 477 if conditionalsstack:
478 if thisindent > conditionalsstack[-1]: 478 if thisindent > conditionalsstack[-1]:
479 if not deltaindentcalculated: 479 if not deltaindentcalculated:
480 deltastack.append(thisindent - conditionalsstack[-1]) 480 deltastack.append(thisindent - conditionalsstack[-1])
481 deltaindent = reduce(lambda x, y: x + y, deltastack) 481 deltaindent = reduce(lambda x, y: x + y, deltastack)
482 deltaindentcalculated = 1 482 deltaindentcalculated = True
483 thisindent -= deltaindent 483 thisindent -= deltaindent
484 else: 484 else:
485 while ( 485 while (
486 conditionalsstack and 486 conditionalsstack and
487 conditionalsstack[-1] >= thisindent 487 conditionalsstack[-1] >= thisindent
488 ): 488 ):
489 del conditionalsstack[-1] 489 del conditionalsstack[-1]
490 if deltastack: 490 if deltastack:
491 del deltastack[-1] 491 del deltastack[-1]
492 deltaindentcalculated = 0 492 deltaindentcalculated = False
493 # close all classes indented at least as much 493 # close all classes indented at least as much
494 while classstack and classstack[-1][1] >= thisindent: 494 while classstack and classstack[-1][1] >= thisindent:
495 del classstack[-1] 495 del classstack[-1]
496 if classstack: 496 if classstack:
497 # it's a class method 497 # it's a class method
562 d = _modules[m] 562 d = _modules[m]
563 if c in d: 563 if c in d:
564 n = d[c] 564 n = d[c]
565 names.append(n) 565 names.append(n)
566 inherit = names 566 inherit = names
567 # modify indentation level for conditional defines
568 if conditionalsstack:
569 if thisindent > conditionalsstack[-1]:
570 if not deltaindentcalculated:
571 deltastack.append(thisindent - conditionalsstack[-1])
572 deltaindent = reduce(lambda x, y: x + y, deltastack)
573 deltaindentcalculated = True
574 thisindent -= deltaindent
575 else:
576 while (
577 conditionalsstack and
578 conditionalsstack[-1] >= thisindent
579 ):
580 del conditionalsstack[-1]
581 if deltastack:
582 del deltastack[-1]
583 deltaindentcalculated = False
567 # remember this class 584 # remember this class
568 cur_class = Class(module, class_name, inherit, 585 cur_class = Class(module, class_name, inherit,
569 file, lineno) 586 file, lineno)
570 endlineno = calculateEndline(lineno, srcLines, thisindent) 587 endlineno = calculateEndline(lineno, srcLines, thisindent)
571 cur_class.setEndLine(endlineno) 588 cur_class.setEndLine(endlineno)
671 while conditionalsstack and conditionalsstack[-1] >= thisindent: 688 while conditionalsstack and conditionalsstack[-1] >= thisindent:
672 del conditionalsstack[-1] 689 del conditionalsstack[-1]
673 if deltastack: 690 if deltastack:
674 del deltastack[-1] 691 del deltastack[-1]
675 conditionalsstack.append(thisindent) 692 conditionalsstack.append(thisindent)
676 deltaindentcalculated = 0 693 deltaindentcalculated = False
677 694
678 elif m.start("CodingLine") >= 0: 695 elif m.start("CodingLine") >= 0:
679 # a coding statement 696 # a coding statement
680 coding = m.group("Coding") 697 coding = m.group("Coding")
681 lineno = lineno + src.count('\n', last_lineno_pos, start) 698 lineno = lineno + src.count('\n', last_lineno_pos, start)

eric ide

mercurial