Mercurial > hg
comparison doc/docchecker @ 27730:ed86fb2a4187
docchecker: introduce a way to check for poor markup
Specifically, :hg:`foo 'bar baz'` when rendered by `hg help`
results in:
'hg foo 'bar baz''
... which is hard to read.
We encourage :hg:`foo "bar baz"` instead.
author | timeless <timeless@mozdev.org> |
---|---|
date | Wed, 06 Jan 2016 19:47:14 +0000 |
parents | |
children | 3d1baa702d1a |
comparison
equal
deleted
inserted
replaced
27729:58f8b29c37ff | 27730:ed86fb2a4187 |
---|---|
1 #!/usr/bin/env python | |
2 # | |
3 # docchecker - look for problematic markup | |
4 # | |
5 # Copyright 2016 timeless <timeless@mozdev.org> and others | |
6 # | |
7 # This software may be used and distributed according to the terms of the | |
8 # GNU General Public License version 2 or any later version. | |
9 import sys | |
10 import re | |
11 | |
12 leadingline = re.compile(r'(^\s*)(\S.*)$') | |
13 hg_backtick = re.compile(r""":hg:`[^`]*'[^`]*`""") | |
14 | |
15 def check(line): | |
16 if hg_backtick.search(line): | |
17 print(line) | |
18 print("""warning: please avoid nesting ' in :hg:`...`""") | |
19 | |
20 def work(file): | |
21 (llead, lline) = ('', '') | |
22 | |
23 for line in file: | |
24 # this section unwraps lines | |
25 match = leadingline.match(line) | |
26 if not match: | |
27 check(lline) | |
28 (llead, lline) = ('', '') | |
29 continue | |
30 | |
31 lead, line = match.group(1), match.group(2) | |
32 if (lead == llead): | |
33 if (lline != ''): | |
34 lline += ' ' + line | |
35 else: | |
36 lline = line | |
37 else: | |
38 check(lline) | |
39 (llead, lline) = (lead, line) | |
40 check(lline) | |
41 | |
42 def main(): | |
43 for f in sys.argv[1:]: | |
44 try: | |
45 with open(f) as file: | |
46 work(file) | |
47 except: | |
48 print("failed to process %s" % f) | |
49 | |
50 main() |