doc/docchecker
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Wed, 10 Feb 2016 22:44:29 +0900
changeset 28048 72b02b498b35
parent 27733 3d1baa702d1a
child 28049 c00f67c15c5a
permissions -rwxr-xr-x
docchecker: remove naked except clause This is fixing for 'naked except clause' check-code rule. check-code has overlooked this, because a file isn't recognized as one to be checked (this problem is fixed by subsequent patch).

#!/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 BaseException as e:
      print("failed to process %s: %s" % (f, e))

main()