[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [PATCH] option mapping in mailer.py

From: C. Michael Pilato <cmpilato_at_collab.net>
Date: 2006-05-30 15:32:57 CEST

Mathias Weinert wrote:
> Hi there,
>
> I am still hoping that some will commit the following patch to mailer.py
> so please let my wishes get true...
>
> This patch allows users to use capital letters for map substitution
> names. If you use a map substitution name with capital letters in the
> current release of mailer.py it won't work as all option names are
> converted to lower case but not the name of the value.
>
> So I changed this to a way that the value is also converted to lower
> case and added some hints to the config examples file.
>
> Mathias
>
> [[[
> * tools/hook-scripts/mailer/mailer.py
> - it's now possible to use capital letters in option values which will be passed through a map
>
> * tools/hook-scripts/mailer/mailer.conf.example
> - added a hint to the description of the mapping process
> ]]]
>
> --- mailer.py.orig 2006-05-23 02:17:16.000000000 +0200
> +++ mailer.py 2006-05-30 08:55:36.726937900 +0200
> @@ -1108,7 +1108,8 @@
> # then just return the value unchanged.
> setattr(self.maps, optname,
> lambda value,
> - sect=getattr(self, sectname): getattr(sect, value,
> + sect=getattr(self, sectname): getattr(sect,
> + value.lower(),
> value))
> # mark for removal when all optnames are done
> if sectname not in mapsections:
> --- mailer.conf.example.orig 2005-04-15 16:37:19.000000000 +0200
> +++ mailer.conf.example 2006-05-30 08:58:15.360520500 +0200
> @@ -240,9 +240,18 @@
> # are made here in the [maps] section.
> #
> # When an option is accessed, the value is loaded from the configuration
> -# file and all %(NAME)s substitutions are performed. The resulting value
> -# is then passed through the map. If a map entry is not available for
> -# the value, then it will be used unchanged.
> +# file and all %(NAME)s substitutions are performed. The resulting
> +# value(*) is then passed through the map. If a map entry is not available
> +# for the value, then it will be used unchanged(**).
> +#
> +# (*) In fact the value passing and comparing is done case insensitive so
> +# don't use values which only differ in case.
> +#
> +# (**) unchanged means the original value, i. e. no case change is done.

These additiona; notes are tipping your hand regarding implementation
details a user doesn't care about it. It should be sufficient to say:

   # When an option is accessed, the value is loaded from the configuration
   # file and all %(NAME)s substitutions are performed. The resulting value
   # is then passed through the map. If a map entry is not available for
   # the value, then it will be used unchanged.
   #
   # NOTE: Avoid using multiple map substitution names which differ only
   # in case. Unexpected results may occur.

> +# Please note that a colon ':' is also considered as separator between
> +# option and value (keep this in mind when trying to map a file path under
> +# windows).

Mm... nice warning!

-- 
C. Michael Pilato <cmpilato@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand

Received on Tue May 30 15:33:38 2006

This is an archived mail posted to the Subversion Dev mailing list.