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