Mercurial > kallithea
view scripts/docs-headings.py @ 6201:d55ff973d01f
lib: simplify version; drop get_current_revision - it was run every time on import time - we don't want that
This functionality was already not in use with the version numbers we use. I
also doubt it is possible to have version numbers where it worked - it seems
like there might have been some regression that nobody noticed. Dropping it
will thus not really lose any actual functionality.
If we want to include the revision number in the version (for browser cache
invalidation) then we should do it in a different way. Perhaps writing it to
some file from setup.py .
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Mon, 12 Sep 2016 17:41:19 +0200 |
parents | ed2fb6e84a02 |
children | 665dfa112f2c |
line wrap: on
line source
#!/usr/bin/env python2 """ Consistent formatting of rst section titles """ import re import subprocess spaces = [ (0, 1), # we assume this is a over-and-underlined header (2, 1), (1, 1), (1, 0), (1, 0), ] # http://sphinx-doc.org/rest.html : # for the Python documentation, this convention is used which you may follow: # # with overline, for parts # * with overline, for chapters # =, for sections # -, for subsections # ^, for subsubsections # ", for paragraphs pystyles = ['#', '*', '=', '-', '^', '"'] # match on a header line underlined with one of the valid characters headermatch = re.compile(r'''\n*(.+)\n([][!"#$%&'()*+,./:;<=>?@\\^_`{|}~-])\2{2,}\n+''', flags=re.MULTILINE) def main(): for fn in subprocess.check_output(['hg', 'loc', 'set:**.rst+kallithea/i18n/how_to']).splitlines(): print 'processing %s:' % fn s = file(fn).read() # find levels and their styles lastpos = 0 styles = [] for markup in headermatch.findall(s): style = markup[1] if style in styles: stylepos = styles.index(style) if stylepos > lastpos + 1: print 'bad style %r with level %s - was at %s' % (style, stylepos, lastpos) else: stylepos = len(styles) if stylepos > lastpos + 1: print 'bad new style %r - expected %r' % (style, styles[lastpos + 1]) else: styles.append(style) lastpos = stylepos # remove superfluous spacing (may however be restored by header spacing) s = re.sub(r'''(\n\n)\n*''', r'\1', s, flags=re.MULTILINE) if styles: newstyles = pystyles[pystyles.index(styles[0]):] def subf(m): title, style = m.groups() level = styles.index(style) before, after = spaces[level] newstyle = newstyles[level] return '\n' * (before + 1) + title + '\n' + newstyle * len(title) + '\n' * (after + 1) s = headermatch.sub(subf, s) # remove superfluous spacing when headers are adjacent s = re.sub(r'''(\n.+\n([][!"#$%&'()*+,./:;<=>?@\\^_`{|}~-])\2{2,}\n\n\n)\n*''', r'\1', s, flags=re.MULTILINE) # fix trailing space and spacing before link sections s = s.strip() + '\n' s = re.sub(r'''\n+((?:\.\. _[^\n]*\n)+)$''', r'\n\n\n\1', s) file(fn, 'w').write(s) print subprocess.check_output(['hg', 'diff', fn]) print if __name__ == '__main__': main()