diff options
author | Martin von Gagern <gagern@google.com> | 2019-07-04 09:37:20 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2019-07-08 11:25:00 -0400 |
commit | c0697963498a934a6323b8e04adf1a92aad25620 (patch) | |
tree | cadae59d2d6cd85d2bd2d9709f3c4a44977d8330 /mako | |
parent | 8648759895b8778f06528ecebf5170f67a0dc65e (diff) | |
download | mako-c0697963498a934a6323b8e04adf1a92aad25620.tar.gz |
Support n filter in the page tag
In some situations, it is inconvenient to pass default_filters in the
Template constructor depending on the template in question. It might be
easier in such situations to express page filters in the template itself.
However, dropping the existing default_filters (either explicitly set or the
default of ["str"] resp. ["unicode"]) might break existing templates.
The code change here comes to the rescue in such situations. Existing
templates keep working as they are, but editors of templates get a tool to
replace the default filters for specific templates. They do take on the
responsibility of turning all encountered inputs into strings, lest they
fail along the lines of https://github.com/sqlalchemy/mako/issues/272.
This change should be sufficiently backwards compatible to not cause any
concerns. Sure, technically a "n" filter at page tag level was treated as a
no-op so far. So theoretically existing templates could break. But there
was no incentive to have such an "n" filter at the page tag level, and the
expressed semantics of the "n" filter is to suppress default filters, so
semantically anyone relying on it being a no-op in that situation was using
unsupported hacks anyway.
Closes: #299
Pull-request: https://github.com/sqlalchemy/mako/pull/299
Pull-request-sha: f8d5a22db3230634d2b42c59909985f31875a9f5
Change-Id: Ide030975229c1df7c0cef534976f740a03c17ca6
Diffstat (limited to 'mako')
-rw-r--r-- | mako/codegen.py | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mako/codegen.py b/mako/codegen.py index 1acc5e6..5ca7b04 100644 --- a/mako/codegen.py +++ b/mako/codegen.py @@ -802,7 +802,7 @@ class _GenerateRenderMethod(object): if is_expression: if self.compiler.pagetag: args = self.compiler.pagetag.filter_args.args + args - if self.compiler.default_filters: + if self.compiler.default_filters and "n" not in args: args = self.compiler.default_filters + args for e in args: # if filter given as a function, get just the identifier portion |