[PATCH 2 of 2] templater: add indentation arguments to the fill function
Sean Farley
sean.michael.farley at gmail.com
Mon May 20 16:45:02 CDT 2013
# HG changeset patch
# User Sean Farley <sean.michael.farley at gmail.com>
# Date 1366318102 18000
# Thu Apr 18 15:48:22 2013 -0500
# Node ID 2697c2a7b9403576e6cb11c3391d7e072f61a692
# Parent 4edf5b7dddd1a3ab5350590256f5145b54ea1e30
templater: add indentation arguments to the fill function
diff --git a/mercurial/templatefilters.py b/mercurial/templatefilters.py
--- a/mercurial/templatefilters.py
+++ b/mercurial/templatefilters.py
@@ -97,12 +97,12 @@
return cgi.escape(text.replace('\0', ''), True)
para_re = None
space_re = None
-def fill(text, width):
- '''fill many paragraphs.'''
+def fill(text, width, initindent = '', hangindent = ''):
+ '''fill many paragraphs with optional indentation.'''
global para_re, space_re
if para_re is None:
para_re = re.compile('(\n\n|\n\\s*[-*]\\s*)', re.M)
space_re = re.compile(r' +')
@@ -119,11 +119,12 @@
uctext[w:].encode(encoding.encoding))
break
yield text[start:m.start(0)], m.group(1)
start = m.end(1)
- return "".join([space_re.sub(' ', util.wrap(para, width=width)) + rest
+ return "".join([util.wrap(space_re.sub(' ', util.wrap(para, width)),
+ width, initindent, hangindent) + rest
for para, rest in findparas()])
def fill68(text):
""":fill68: Any text. Wraps the text to fit in 68 columns."""
return fill(text, 68)
diff --git a/mercurial/templater.py b/mercurial/templater.py
--- a/mercurial/templater.py
+++ b/mercurial/templater.py
@@ -297,22 +297,33 @@
style = stringify(args[1][0](context, mapping, args[1][1]))
return minirst.format(text, style=style, keep=['verbose'])
def fill(context, mapping, args):
- if not (1 <= len(args) <= 2):
- raise error.ParseError(_("fill expects one or two arguments"))
+ if not (1 <= len(args) <= 4):
+ raise error.ParseError(_("fill expects one to four arguments"))
text = stringify(args[0][0](context, mapping, args[0][1]))
width = 76
- if len(args) == 2:
+ initindent = ''
+ hangindent = ''
+ if 2 <= len(args) <= 4:
try:
width = int(stringify(args[1][0](context, mapping, args[1][1])))
except ValueError:
raise error.ParseError(_("fill expects an integer width"))
+ try:
+ initindent = stringify(args[2][0](context, mapping, args[2][1]))
+ initindent = stringify(runtemplate(context, mapping,
+ compiletemplate(initindent, context)))
+ hangindent = stringify(args[3][0](context, mapping, args[3][1]))
+ hangindent = stringify(runtemplate(context, mapping,
+ compiletemplate(hangindent, context)))
+ except IndexError:
+ pass
- return templatefilters.fill(text, width)
+ return templatefilters.fill(text, width, initindent, hangindent)
def date(context, mapping, args):
if not (1 <= len(args) <= 2):
raise error.ParseError(_("date expects one or two arguments"))
More information about the Mercurial-devel
mailing list