Utilities/ClassBrowsers/rbclbr.py

changeset 12
1d8dd9706f46
parent 0
de9c2efb9d02
child 13
1af94a91f439
equal deleted inserted replaced
11:b0996e4a289e 12:1d8dd9706f46
16 import os 16 import os
17 import re 17 import re
18 18
19 import Utilities 19 import Utilities
20 import Utilities.ClassBrowsers as ClassBrowsers 20 import Utilities.ClassBrowsers as ClassBrowsers
21 import ClbrBaseClasses 21 from . import ClbrBaseClasses
22 22
23 SUPPORTED_TYPES = [ClassBrowsers.RB_SOURCE] 23 SUPPORTED_TYPES = [ClassBrowsers.RB_SOURCE]
24 24
25 _getnext = re.compile(r""" 25 _getnext = re.compile(r"""
26 (?P<String> 26 (?P<String>
265 265
266 _modules[module] = dict 266 _modules[module] = dict
267 classstack = [] # stack of (class, indent) pairs 267 classstack = [] # stack of (class, indent) pairs
268 acstack = [] # stack of (access control, indent) pairs 268 acstack = [] # stack of (access control, indent) pairs
269 indent = 0 269 indent = 0
270 src = Utilities.decode(f.read())[0] 270 src = f.read()
271 f.close() 271 f.close()
272 272
273 lineno, last_lineno_pos = 1, 0 273 lineno, last_lineno_pos = 1, 0
274 i = 0 274 i = 0
275 while 1: 275 while True:
276 m = _getnext(src, i) 276 m = _getnext(src, i)
277 if not m: 277 if not m:
278 break 278 break
279 start, i = m.span() 279 start, i = m.span()
280 280
323 # else it's a nested def 323 # else it's a nested def
324 else: 324 else:
325 # it's a function 325 # it's a function
326 f = Function(module, meth_name, 326 f = Function(module, meth_name,
327 file, lineno, meth_sig) 327 file, lineno, meth_sig)
328 if dict_counts.has_key(meth_name): 328 if meth_name in dict_counts:
329 dict_counts[meth_name] += 1 329 dict_counts[meth_name] += 1
330 meth_name = "%s_%d" % (meth_name, dict_counts[meth_name]) 330 meth_name = "%s_%d" % (meth_name, dict_counts[meth_name])
331 else: 331 else:
332 dict_counts[meth_name] = 0 332 dict_counts[meth_name] = 0
333 dict[meth_name] = f 333 dict[meth_name] = f
360 inherit = [_commentsub('', inherit)] 360 inherit = [_commentsub('', inherit)]
361 # remember this class 361 # remember this class
362 cur_class = Class(module, class_name, inherit, 362 cur_class = Class(module, class_name, inherit,
363 file, lineno) 363 file, lineno)
364 if not classstack: 364 if not classstack:
365 if dict.has_key(class_name): 365 if class_name in dict:
366 cur_class = dict[class_name] 366 cur_class = dict[class_name]
367 else: 367 else:
368 dict[class_name] = cur_class 368 dict[class_name] = cur_class
369 else: 369 else:
370 cls = classstack[-1][0] 370 cls = classstack[-1][0]
371 if cls.classes.has_key(class_name): 371 if class_name in cls.classes:
372 cur_class = cls.classes[class_name] 372 cur_class = cls.classes[class_name]
373 elif cls.name == class_name or class_name == "self": 373 elif cls.name == class_name or class_name == "self":
374 cur_class = cls 374 cur_class = cls
375 else: 375 else:
376 cls._addclass(class_name, cur_class) 376 cls._addclass(class_name, cur_class)
392 last_lineno_pos = start 392 last_lineno_pos = start
393 module_name = m.group("ModuleName") 393 module_name = m.group("ModuleName")
394 # remember this class 394 # remember this class
395 cur_class = Module(module, module_name, file, lineno) 395 cur_class = Module(module, module_name, file, lineno)
396 if not classstack: 396 if not classstack:
397 if dict.has_key(module_name): 397 if module_name in dict:
398 cur_class = dict[module_name] 398 cur_class = dict[module_name]
399 else: 399 else:
400 dict[module_name] = cur_class 400 dict[module_name] = cur_class
401 else: 401 else:
402 cls = classstack[-1][0] 402 cls = classstack[-1][0]
403 if cls.classes.has_key(module_name): 403 if module_name in cls.classes:
404 cur_class = cls.classes[module_name] 404 cur_class = cls.classes[module_name]
405 elif cls.name == module_name: 405 elif cls.name == module_name:
406 cur_class = cls 406 cur_class = cls
407 else: 407 else:
408 cls._addclass(module_name, cur_class) 408 cls._addclass(module_name, cur_class)
525 elif m.start("CodingLine") >= 0: 525 elif m.start("CodingLine") >= 0:
526 # a coding statement 526 # a coding statement
527 coding = m.group("Coding") 527 coding = m.group("Coding")
528 lineno = lineno + src.count('\n', last_lineno_pos, start) 528 lineno = lineno + src.count('\n', last_lineno_pos, start)
529 last_lineno_pos = start 529 last_lineno_pos = start
530 if not dict.has_key("@@Coding@@"): 530 if "@@Coding@@" not in dict:
531 dict["@@Coding@@"] = ClbrBaseClasses.Coding(module, file, lineno, coding) 531 dict["@@Coding@@"] = ClbrBaseClasses.Coding(module, file, lineno, coding)
532 532
533 else: 533 else:
534 assert 0, "regexp _getnext found something unexpected" 534 assert 0, "regexp _getnext found something unexpected"
535 535

eric ide

mercurial