Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Side by Side Diff: tools/gn/bin/help_as_html.py

Issue 232703004: gn docs generator: Don't get confused by ansi escape codes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2014 The Chromium Authors. All rights reserved. 2 # Copyright 2014 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 # Runs 'gn help' and various subhelps, and spits out html. 6 # Runs 'gn help' and various subhelps, and spits out html.
7 # TODO: 7 # TODO:
8 # - Handle numbered and dashed lists -> <ol> <ul>. (See "os" and "toolchain"). 8 # - Handle numbered and dashed lists -> <ol> <ul>. (See "os" and "toolchain").
9 # - Handle "Arguments:" blocks a bit better (the argument names could be 9 # - Handle "Arguments:" blocks a bit better (the argument names could be
10 # distinguished). 10 # distinguished).
11 # - Convert "|blahblah|" to <code>. 11 # - Convert "|blahblah|" to <code>.
12 # - Spit out other similar formats like wiki, markdown, whatever. 12 # - Spit out other similar formats like wiki, markdown, whatever.
13 13
14 import cgi 14 import cgi
15 import re
15 import subprocess 16 import subprocess
16 import sys 17 import sys
17 18
18 19
19 def GetOutput(*args): 20 def GetOutput(*args):
20 try: 21 try:
21 return subprocess.check_output([sys.argv[1]] + list(args)) 22 # TODO: Remove ansi escape code stripping if crbug.com/362239 gets fixed.
23 ansi_escape = re.compile(r'\x1b[^m]*m')
24 return ansi_escape.sub(
25 '', subprocess.check_output([sys.argv[1]] + list(args)))
22 except subprocess.CalledProcessError: 26 except subprocess.CalledProcessError:
23 return '' 27 return ''
24 28
25 29
26 def ParseTopLevel(out): 30 def ParseTopLevel(out):
27 commands = [] 31 commands = []
28 output = [] 32 output = []
29 for line in out.splitlines(): 33 for line in out.splitlines():
30 if line.startswith(' '): 34 if line.startswith(' '):
31 command, sep, rest = line.partition(':') 35 command, sep, rest = line.partition(':')
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 footer = '</div></body></html>' 100 footer = '</div></body></html>'
97 commands, output = ParseTopLevel(GetOutput('help')) 101 commands, output = ParseTopLevel(GetOutput('help'))
98 for command in commands: 102 for command in commands:
99 output += ParseCommand(command, GetOutput('help', command)) 103 output += ParseCommand(command, GetOutput('help', command))
100 print header + '\n'.join(output) + footer 104 print header + '\n'.join(output) + footer
101 return 0 105 return 0
102 106
103 107
104 if __name__ == '__main__': 108 if __name__ == '__main__':
105 sys.exit(main()) 109 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698