[Updated] D8845: templatespec: create a factory function for each type there is
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Sun Aug 2 16:35:06 UTC 2020
Closed by commit rHG8cce9f77ca73: templatespec: create a factory function for each type there is (authored by martinvonz).
This revision was automatically updated to reflect the committed changes.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D8845?vs=22149&id=22186
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D8845/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D8845
AFFECTED FILES
hgext/patchbomb.py
mercurial/cmdutil.py
mercurial/formatter.py
CHANGE DETAILS
diff --git a/mercurial/formatter.py b/mercurial/formatter.py
--- a/mercurial/formatter.py
+++ b/mercurial/formatter.py
@@ -542,6 +542,22 @@
refargs = attr.ib(default=None)
+def empty_templatespec():
+ return templatespec(None, None, None)
+
+
+def reference_templatespec(ref, refargs=None):
+ return templatespec(ref, None, None, refargs)
+
+
+def literal_templatespec(tmpl):
+ return templatespec(b'', tmpl, None)
+
+
+def mapfile_templatespec(topic, mapfile):
+ return templatespec(topic, None, mapfile)
+
+
def lookuptemplate(ui, topic, tmpl):
"""Find the template matching the given -T/--template spec 'tmpl'
@@ -563,21 +579,21 @@
"""
if not tmpl:
- return templatespec(None, None, None)
+ return empty_templatespec()
# looks like a literal template?
if b'{' in tmpl:
- return templatespec(b'', tmpl, None)
+ return literal_templatespec(tmpl)
# a reference to built-in (formatter) template
if tmpl in {b'cbor', b'json', b'pickle', b'debug'}:
- return templatespec(tmpl, None, None)
+ return reference_templatespec(tmpl)
# a function-style reference to built-in template
func, fsep, ftail = tmpl.partition(b'(')
if func in {b'cbor', b'json'} and fsep and ftail.endswith(b')'):
templater.parseexpr(tmpl) # make sure syntax errors are confined
- return templatespec(func, None, None, refargs=ftail[:-1])
+ return reference_templatespec(func, refargs=ftail[:-1])
# perhaps a stock style?
if not os.path.split(tmpl)[0]:
@@ -585,11 +601,11 @@
b'map-cmdline.' + tmpl
) or templater.templatepath(tmpl)
if mapname:
- return templatespec(topic, None, mapname)
+ return mapfile_templatespec(topic, mapname)
# perhaps it's a reference to [templates]
if ui.config(b'templates', tmpl):
- return templatespec(tmpl, None, None)
+ return reference_templatespec(tmpl)
if tmpl == b'list':
ui.write(_(b"available styles: %s\n") % templater.stylelist())
@@ -599,13 +615,13 @@
if (b'/' in tmpl or b'\\' in tmpl) and os.path.isfile(tmpl):
# is it a mapfile for a style?
if os.path.basename(tmpl).startswith(b"map-"):
- return templatespec(topic, None, os.path.realpath(tmpl))
+ return mapfile_templatespec(topic, os.path.realpath(tmpl))
with util.posixfile(tmpl, b'rb') as f:
tmpl = f.read()
- return templatespec(b'', tmpl, None)
+ return literal_templatespec(tmpl)
# constant string?
- return templatespec(b'', tmpl, None)
+ return literal_templatespec(tmpl)
def templatepartsmap(spec, t, partnames):
diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -3375,7 +3375,7 @@
def buildcommittemplate(repo, ctx, subs, extramsg, ref):
ui = repo.ui
- spec = formatter.templatespec(ref, None, None)
+ spec = formatter.reference_templatespec(ref)
t = logcmdutil.changesettemplater(ui, repo, spec)
t.t.cache.update(
(k, templater.unquotestring(v))
diff --git a/hgext/patchbomb.py b/hgext/patchbomb.py
--- a/hgext/patchbomb.py
+++ b/hgext/patchbomb.py
@@ -207,7 +207,7 @@
if not tmpl:
return b' '.join(flags)
out = util.stringio()
- spec = formatter.templatespec(b'', templater.unquotestring(tmpl), None)
+ spec = formatter.literal_templatespec(templater.unquotestring(tmpl))
with formatter.templateformatter(ui, out, b'patchbombflag', {}, spec) as fm:
fm.startitem()
fm.context(ctx=repo[rev])
To: martinvonz, #hg-reviewers, indygreg
Cc: indygreg, mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-patches/attachments/20200802/1216ecdd/attachment-0002.html>
More information about the Mercurial-patches
mailing list