revolution icon indicating copy to clipboard operation
revolution copied to clipboard

Fix non-existent snippet tags being broken up by an @ tag

Open Mark-H opened this issue 3 years ago • 1 comments

What does it do?

Described in #16318, if a non-existent snippet tag is found within an output filter, an @ tag inside the filter can cause the output to break.

The provided example where xxx doesn't exist:

[[+xyz:empty=`
aaa
[[xxx? &x=`bbb@ccc`]]
ddd
`]]
eee

is getting broken up by modTag/modElement::getPropertySet on the @, treating the part in front of it as the name of the tag/element, including half the snippet tag.

This fix makes sure that it only considers the bit up to the first :.

To ensure property sets continue to work, I wanted to add some property set tests but I can't get this structure:

[[!Snippet@PropSet:default=`foo`]]

to return anything when the snippet returns an empty value. If someone can figure out why that's not working (in either the test or real world cases!) that would be great.

Why is it needed?

Make parser more resilient.

How to test

Unit tests or create your own similar test cases with snippets on a resource.

Related issue(s)/PR(s)

Fixes #16318

Mark-H avatar Dec 03 '22 18:12 Mark-H

@Mark-H is this still in a draft state?

theboxer avatar Aug 30 '24 15:08 theboxer

Yes, I was hoping for some help trying to figure out the failing test but didn't get any.

Mark-H avatar Dec 03 '24 18:12 Mark-H