]> granicus.if.org Git - python/commitdiff
Add verbose option for diagnostics
authorRaymond Hettinger <python@rcn.com>
Mon, 9 Jul 2012 08:17:22 +0000 (01:17 -0700)
committerRaymond Hettinger <python@rcn.com>
Mon, 9 Jul 2012 08:17:22 +0000 (01:17 -0700)
Tools/scripts/highlight.py

index ef010e8f31c33cd3b6fa16cbd49f7d20cb8c9ef0..ebf96b7f2a48c4466bc753364fe9572be4798019 100755 (executable)
@@ -10,7 +10,7 @@ import keyword, tokenize, cgi, functools
 
 def is_builtin(s):
     'Return True if s is the name of a builtin'
-    return s in vars(__builtins__)
+    return hasattr(__builtins__, s)
 
 def combine_range(lines, start, end):
     'Join content from a range of lines between start and end'
@@ -161,6 +161,8 @@ if __name__ == '__main__':
             help = 'build a complete html webpage')
     parser.add_argument('-s', '--section', action = 'store_true',
             help = 'show an HTML section rather than a complete webpage')
+    parser.add_argument('-v', '--verbose', action = 'store_true',
+            help = 'display categorized text to stderr')
     args = parser.parse_args()
 
     if args.section and (args.browser or args.complete):
@@ -172,6 +174,12 @@ if __name__ == '__main__':
         source = f.read()
     classified_text = analyze_python(source)
 
+    if args.verbose:
+        classified_text = list(classified_text)
+        for line_upto_token, kind, line_thru_token in classified_text:
+            sys.stderr.write('%15s:  %r\n' % ('leadin', line_upto_token))
+            sys.stderr.write('%15s:  %r\n\n' % (kind, line_thru_token))
+
     if args.complete or args.browser:
         encoded = build_html_page(classified_text, title=sourcefile)
     elif args.section: