# HG changeset patch # User Gregory Szorc # Date 1487188152 28800 # Node ID bbdd712e9adb2affe5a065dda8f5e6433ebac6d1 # Parent 50a49ead4db476cc7d497f2ac1f198154afb6d4d minirst: support passing admonitions into findadmonitions() and parse() This will allow consumers to declare a custom list of admonitions to parse. Without this patch, custom admonitions would get removed when prunecomments() is run. We could add an argument controlling whether prunecomments() is run. However, it is better to convert the "paragraph" block to an "admonition" block so consumers don't have to parse for custom admonitions. diff -r 50a49ead4db4 -r bbdd712e9adb mercurial/minirst.py --- a/mercurial/minirst.py Wed Feb 15 11:47:14 2017 -0800 +++ b/mercurial/minirst.py Wed Feb 15 11:49:12 2017 -0800 @@ -425,12 +425,14 @@ 'warning', ]) -def findadmonitions(blocks): +def findadmonitions(blocks, admonitions=None): """ Makes the type of the block an admonition block if the first line is an admonition directive """ - admonitionre = re.compile(r'\.\. (%s)::' % '|'.join(sorted(_admonitions)), + admonitions = admonitions or _admonitions + + admonitionre = re.compile(r'\.\. (%s)::' % '|'.join(sorted(admonitions)), flags=re.IGNORECASE) i = 0 @@ -642,7 +644,7 @@ return ''.join(out) -def parse(text, indent=0, keep=None): +def parse(text, indent=0, keep=None, admonitions=None): """Parse text into a list of blocks""" pruned = [] blocks = findblocks(text) @@ -657,7 +659,7 @@ blocks = splitparagraphs(blocks) blocks = updatefieldlists(blocks) blocks = updateoptionlists(blocks) - blocks = findadmonitions(blocks) + blocks = findadmonitions(blocks, admonitions=admonitions) blocks = addmargins(blocks) blocks = prunecomments(blocks) return blocks, pruned