# HG changeset patch # User Martin Geisler # Date 1266081068 -3600 # Node ID e99e0e077bc47b9df35407ab162f9ec5c27905a9 # Parent 62d484a81dfedc83bd2819df4521224c1d115aed minirst: report pruned container types diff -r 62d484a81dfe -r e99e0e077bc4 mercurial/minirst.py --- a/mercurial/minirst.py Sun Oct 04 22:03:41 2009 +0200 +++ b/mercurial/minirst.py Sat Feb 13 18:11:08 2010 +0100 @@ -192,6 +192,7 @@ The blocks must have a 'type' field, i.e., they should have been run through findliteralblocks first. """ + pruned = [] i = 0 while i + 1 < len(blocks): # Searching for a block that looks like this: @@ -207,6 +208,8 @@ adjustment = blocks[i + 1]['indent'] - indent containertype = blocks[i]['lines'][0][15:] prune = containertype not in keep + if prune: + pruned.append(containertype) # Always delete "..container:: type" block del blocks[i] @@ -219,7 +222,7 @@ blocks[j]['indent'] -= adjustment j += 1 i += 1 - return blocks + return blocks, pruned def findsections(blocks): @@ -317,19 +320,23 @@ subsequent_indent=subindent) -def format(text, width, indent=0, keep=[]): +def format(text, width, indent=0, keep=None): """Parse and format the text according to width.""" blocks = findblocks(text) for b in blocks: b['indent'] += indent blocks = findliteralblocks(blocks) - blocks = prunecontainers(blocks, keep) + blocks, pruned = prunecontainers(blocks, keep or []) blocks = inlineliterals(blocks) blocks = splitparagraphs(blocks) blocks = updatefieldlists(blocks) blocks = findsections(blocks) blocks = addmargins(blocks) - return '\n'.join(formatblock(b, width) for b in blocks) + text = '\n'.join(formatblock(b, width) for b in blocks) + if keep is None: + return text + else: + return text, pruned if __name__ == "__main__": diff -r 62d484a81dfe -r e99e0e077bc4 tests/test-minirst.py --- a/tests/test-minirst.py Sun Oct 04 22:03:41 2009 +0200 +++ b/tests/test-minirst.py Sat Feb 13 18:11:08 2010 +0100 @@ -1,11 +1,18 @@ #!/usr/bin/env python +from pprint import pprint from mercurial import minirst def debugformat(title, text, width, **kwargs): print "%s formatted to fit within %d characters:" % (title, width) print "-" * 70 - print minirst.format(text, width, **kwargs) + formatted = minirst.format(text, width, **kwargs) + if type(formatted) == tuple: + print formatted[0] + print "-" * 70 + pprint(formatted[1]) + else: + print formatted print "-" * 70 print diff -r 62d484a81dfe -r e99e0e077bc4 tests/test-minirst.py.out --- a/tests/test-minirst.py.out Sun Oct 04 22:03:41 2009 +0200 +++ b/tests/test-minirst.py.out Sat Feb 13 18:11:08 2010 +0100 @@ -257,6 +257,8 @@ Verbose output. ---------------------------------------------------------------------- +['debug', 'debug'] +---------------------------------------------------------------------- containers (debug) formatted to fit within 60 characters: ---------------------------------------------------------------------- @@ -264,6 +266,8 @@ Initial debug output. ---------------------------------------------------------------------- +['verbose'] +---------------------------------------------------------------------- containers (verbose debug) formatted to fit within 60 characters: ---------------------------------------------------------------------- @@ -275,4 +279,6 @@ Debug output. ---------------------------------------------------------------------- +[] +----------------------------------------------------------------------