pallets/jinja

filters.map: apply filter to attribute ("mapattr")

VannTen opened this issue · 0 comments

Hello,

Could the map filter be able to combine both of its functionality, and apply a filter to an attribute before returning the whole structure ?

I'm often trying to use map in the following manner:
data | map(attribute='sub.key', 'somefilter', filter_args)
With data being:

data:
- key1: value
  key2: value
  sub:
    key: some_value
- key1: value
  key2: value
  sub:
    key: some_value

and expecting the result of 'somefilter' in sub.key in each element of the newly produced array.

I haven't found an easy way to achieve this with existing filters (but I might have missed something).

Obviously, this can be implemented in an extension, (I'd call that mapattr, I guess ?), but since this would be backward compatible with map (it would merely transform what is now an invalid call into a valid one : map(attribute='someattr', 'somefilter')

What do you think ? If the jinja project deems this a good idea, I can do the PR.