doc/docchecker
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Tue, 01 Mar 2016 03:28:46 +0900
branchstable
changeset 28288 e417e4512b0f
parent 27733 3d1baa702d1a
child 28048 72b02b498b35
permissions -rwxr-xr-x
doc: remove deprecated option from synopsis of command help Before this patch, deprecated options below are used in synopsis of command help, even though they aren't listed up as available options by default. These might confuse readers. - -n (no-op, now) of strip - -a/--active of branches - -f/--force of merge

#!/usr/bin/env python
#
# docchecker - look for problematic markup
#
# Copyright 2016 timeless <timeless@mozdev.org> and others
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
import sys
import re

leadingline = re.compile(r'(^\s*)(\S.*)$')
hg_backtick = re.compile(r""":hg:`[^`]*'[^`]*`""")
hg_cramped = re.compile(r'\w:hg:`')

def check(line):
  if hg_backtick.search(line):
    print(line)
    print("""warning: please avoid nesting ' in :hg:`...`""")
  if hg_cramped.search(line):
    print(line)
    print('warning: please have a space before :hg:')

def work(file):
  (llead, lline) = ('', '')

  for line in file:
    # this section unwraps lines
    match = leadingline.match(line)
    if not match:
      check(lline)
      (llead, lline) = ('', '')
      continue

    lead, line = match.group(1), match.group(2)
    if (lead == llead):
      if (lline != ''):
        lline += ' ' + line
      else:
        lline = line
    else:
      check(lline)
      (llead, lline) = (lead, line)
  check(lline)

def main():
  for f in sys.argv[1:]:
    try:
      with open(f) as file:
        work(file)
    except:
      print("failed to process %s" % f)

main()