Mercurial > hg
view doc/docchecker @ 42366:21e77ede77ab
narrow: factor out logic to build ellipses related b2parts in separate fn
This will help us switch more cleanly to using wireprotocol commands instead of
using exchange.pull() which exchanges more things then required.
Differential Revision: https://phab.mercurial-scm.org/D6435
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Tue, 21 May 2019 05:32:14 +0530 |
parents | 9bfbb9fc5871 |
children | 47ef023d0165 |
line wrap: on
line source
#!/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. from __future__ import absolute_import, print_function import os import re import sys try: import msvcrt msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY) except ImportError: pass stdout = getattr(sys.stdout, 'buffer', sys.stdout) leadingline = re.compile(br'(^\s*)(\S.*)$') checks = [ (br""":hg:`[^`]*'[^`]*`""", b"""warning: please avoid nesting ' in :hg:`...`"""), (br'\w:hg:`', b'warning: please have a space before :hg:'), (br"""(?:[^a-z][^'.])hg ([^,;"`]*'(?!hg)){2}""", b'''warning: please use " instead of ' for hg ... "..."'''), ] def check(line): messages = [] for match, msg in checks: if re.search(match, line): messages.append(msg) if messages: stdout.write(b'%s\n' % line) for msg in messages: stdout.write(b'%s\n' % msg) def work(file): (llead, lline) = (b'', b'') for line in file: # this section unwraps lines match = leadingline.match(line) if not match: check(lline) (llead, lline) = (b'', b'') continue lead, line = match.group(1), match.group(2) if (lead == llead): if (lline != b''): lline += b' ' + 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, 'rb') as file: work(file) except BaseException as e: sys.stdout.write(r"failed to process %s: %s\n" % (f, e)) main()