[PATCH] templater: use "needle" and "haystack" as (meta-)variables for ifcontains()

Anton Shestakov av6 at dwimlabs.net
Fri Sep 30 22:00:45 EDT 2016


# HG changeset patch
# User Anton Shestakov <av6 at dwimlabs.net>
# Date 1475286932 -28800
#      Sat Oct 01 09:55:32 2016 +0800
# Node ID 3d02056ddf0cc2de8ab39bfcef4ca106d74e69f9
# Parent  3f4e1c033f40aaa8111de9b8212f05e8e09590aa
templater: use "needle" and "haystack" as (meta-)variables for ifcontains()

It wasn't immediately clear if it's supposed to look for "search" in "thing" or
"thing" in "search".

diff --git a/mercurial/templater.py b/mercurial/templater.py
--- a/mercurial/templater.py
+++ b/mercurial/templater.py
@@ -596,18 +596,18 @@ def if_(context, mapping, args):
     elif len(args) == 3:
         yield args[2][0](context, mapping, args[2][1])
 
- at templatefunc('ifcontains(search, thing, then[, else])')
+ at templatefunc('ifcontains(needle, haystack, then[, else])')
 def ifcontains(context, mapping, args):
     """Conditionally execute based
-    on whether the item "search" is in "thing"."""
+    on whether the item "needle" is in "haystack"."""
     if not (3 <= len(args) <= 4):
         # i18n: "ifcontains" is a keyword
         raise error.ParseError(_("ifcontains expects three or four arguments"))
 
-    item = evalstring(context, mapping, args[0])
-    items = evalfuncarg(context, mapping, args[1])
+    needle = evalstring(context, mapping, args[0])
+    haystack = evalfuncarg(context, mapping, args[1])
 
-    if item in items:
+    if needle in haystack:
         yield args[2][0](context, mapping, args[2][1])
     elif len(args) == 4:
         yield args[3][0](context, mapping, args[3][1])


More information about the Mercurial-devel mailing list