Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
Re: Poll: useful 'escape' transforms
etc wrote #308320:
I think, e.g. for “inline” Textile. I have added
implodevalue (the name to debate)
Nice, that’ll be handy. I made a note on the commit about the name of the transform before I saw this post. You’re right, we need to think of something less geeky for it. No inspiration right now, sorry.
The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.
Hire Txp Builders – finely-crafted code, design and Txp
Offline
Re: Poll: useful 'escape' transforms
Bloke wrote #308321:
we need to think of something less geeky for it.
That’s also the purpose of this thread, including other values too. Is excerpt="tags" less geeky than excerpt="strip" for strip_tags()? I’d better finish it now, not sure to have an internet connection the next week.
Offline
Re: Poll: useful 'escape' transforms
etc wrote #308322:
That’s also the purpose of this thread, including other values too. Is
excerpt="tags"less geeky thanexcerpt="strip"forstrip_tags()?
You mean escape, right? But probably yes, escape=tags is less programmer lingo. implode … hold on I need to consult my dictionaries here ;-)
Where is that emoji for a solar powered submarine when you need it ?
Sand space – admin theme for Textpattern
phiw13 on Codeberg
Offline
Offline
Re: Poll: useful 'escape' transforms
etc wrote #308318:
Another possibility is to consider any undocumented
escapevaluexyzas “unwrap<xyz />tag”.
That has merit. I don’t think it’s confusing insofar as we’ve already introduced a “processing chain” in the escape attribute, so the stuff is processed in order of value anyway. Thus being able to strip specific tags from the content (in addition to being able to do the global ‘strip all’) – before or after some other built-in transforms – would be remarkably powerful.
Just bear in mind that I think we’ve sometimes advocated escape="raw" in place of escape="" (though I can’t find an example of course!) which would try to remove any <raw /> tags under the proposed patch.
How about: escape=...
tagsforstrip_tags().integerforintval().spacesfor this particular implementation ofimplode().
?
In that last one, we’re not exactly ‘escaping’ spaces but we are gobbling them up. Dunno.
The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.
Hire Txp Builders – finely-crafted code, design and Txp
Offline
Re: Poll: useful 'escape' transforms
Don’t think raw or <raw /> is used anywhere, so nothing bad should happen. Note that only self-closed tags are removed, <p>content</p> will be unwrapped as content. Well, it’s already committed, so the time will see. :-)
I’m fine with tags and integer, not sure for spaces. The most noticeable effect of this transform is removing the line breaks and indenting, to prevent Textile from wrapping the string in <p />. We could even drop it, in favor of unwrapping <p /> with escape="p", but this yields more processing.
Offline
Re: Poll: useful 'escape' transforms
etc wrote #308326:
Don’t think
rawor<raw />is used anywhere, so nothing bad should happen.
Yeah, I don’t think it’s used in the code, but I think it’s mentioned in the tag docs somewhere. Maybe.
The most noticeable effect of this transform is removing the line breaks and indenting… We could even drop it, in favor of unwrapping
<p />withescape="p", but this yields more processing.
Hmm, yeah. The trouble is it’s doing two things. escape="newlines" seems to cover half of the functionality. Maybe that’s the best course of action? Single transforms that users can combine if they want, even though it’s extra proccessing: escape="newlines, textile, p". Then we gain the option of stripping newlines alone, if required.
Alternatively (or additionally), as this is specific to Textile, introduce a dedicated transform escape="textile_unwrap" (or textile_clean or something) that does the combined preparing, textiling and stripping in one attribute value.
The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.
Hire Txp Builders – finely-crafted code, design and Txp
Offline
Re: Poll: useful 'escape' transforms
Bloke wrote #308327:
Yeah, I don’t think it’s used in the code, but I think it’s mentioned in the tag docs somewhere. Maybe.
If it is mentioned somewhere, we’d better remove the mention. Anyway, at worst it will only try to remove <raw /> tags, not find any and keep quiet.
we gain the option of stripping newlines alone, if required.
It’s possible with the current implode, ltrim too. FWIW, it’s called normalize-space in XPath, so finding a good name seems difficult. assemble, assemble, trim, assemble, textile..? Or tidy? We could also test if the string has been assembled and indent it only on a further textile, unless it’s trimmed in between.
Alternatively (or additionally), as this is specific to Textile, introduce a dedicated transform
escape="textile_unwrap"(ortextile_cleanor something) that does the combined preparing, textiling and stripping in one attribute value.
Why not, but then we need one more name. :-|
Offline
Re: Poll: useful 'escape' transforms
etc wrote #308328:
It’s possible with the current
implode, ltrimtoo.
True.
FWIW, it’s called
normalize-spacein XPath, so finding a good name seems difficult.
Yes.
We could also test if the string has been
assembled and indent it only on a furthertextile, unless it’strimmed in between.
If there’s the possiblity of interplay between transforms, we could certainly use that to our advantage so any step that occurs immediately prior to another could modify its behaviour. It does come with the baggage of making it more difficult to understand and document.
And, fwiw, I’m not sure assemble is the right word either. It needs to work on its own, so what exactly does escape="assemble" mean? tidy is a good name, though. It’s generic enough that we could apply it to ‘prepare’ other transforms in future or it could just tidy spaces up if used on its own.
The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.
Hire Txp Builders – finely-crafted code, design and Txp
Offline
Re: Poll: useful 'escape' transforms
Bloke wrote #308327:
Alternatively (or additionally), as this is specific to Textile, introduce a dedicated transform
escape="textile_unwrap"(ortextile_cleanor something) that does the combined preparing, textiling and stripping in one attribute value.
I like that.
Alternatively something like clean, tidy_text, scrub / scrub_spaces, strip_newlines, linearize, inline_text / inlinerize …
TXP Builders – finely-crafted code, design and txp
Offline
Re: Poll: useful 'escape' transforms
Bloke wrote #308329:
If there’s the possiblity of interplay between transforms, we could certainly use that to our advantage …
tidyis a good name, though. It’s generic enough that we could apply it to ‘prepare’ other transforms in future or it could just tidy spaces up if used on its own.
Agreed. Now tidy tidies spaces and modifies the action of number, integer and textile:
<txp:variable name="amount" value="Price: £1 234.78" />
<txp:variable name="amount" escape="tidy, number" />
Outputs 1234.78 (and 0 without tidy).
<txp:variable name="test" value="*This* is a _test_" />
<txp:variable name="test" escape="tidy, textile" />
Outputs <strong>This</strong> is a <em>test</em> (wrapped in <p /> without tidy).
Offline
Re: Poll: useful 'escape' transforms
Looks like tidy is the winner which is great as it means it’s also been applied as follows:
escape="tidy": remove spaces/newlines from the content.escape="number": format the content as a number.escape="tidy, number": remove spaces/newlines and format the content as a stricter number (force to float or fraction first).escape="integer": format the content as an int.escape="tidy, integer": remove spaces/newlines and format the content as a stricter int: ensure it adheres to an integer first.escape="textile": Textile the content.escape="tidy, textile": remove spaces/newlines, prepend a single space to remove the surrounding ‘p’ tag, then Textile the content.escape="some-tag": strip any self-closing<some-tag />, or unwrap any container<some-tag>...</some-tag>in the content.escape="tidy, some-tag": remove spaces/newlines, escape any regex characters, then strip any self-closing<some-tag />, or unwrap any container<some-tag>...</some-tag>in the content.
Winner!
EDIT: And what Oleg said above :-)
Last edited by Bloke (2017-12-18 17:01:02)
The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.
Hire Txp Builders – finely-crafted code, design and Txp
Offline
Re: Poll: useful 'escape' transforms
Bloke wrote #308332:
Looks like tidy is the winner which is great
Thanks, have fun! :-)
escape="tidy, number": remove spaces and format the content as a stricter number (force to float, fraction, or scientific first).escape="tidy, some-tag": remove spaces, escape any regex characters, then strip any self-closing<some-tag />, or unwrap any container<some-tag>...</some-tag>in the content.
I have removed scientific, it converts Price: £1 234.78 to a meaningless e1234.78, sorry.
If you need regex characters, e.g. \w+ to unwrap all top-level tags first, then you can tidy after it: escape="\w+, tidy".
Offline
Re: Poll: useful 'escape' transforms
etc wrote #308333:
I have removed scientific
Yep, I edited my post after I saw your following commit… but not quick enough!
If you need regex characters, e.g.
\w+to unwrap all top-level tags first, then you cantidyafter it:escape="\w+, tidy".
Great tip. This escape feature is a fabulous addition to Txp’s processing arsenal.
The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.
Hire Txp Builders – finely-crafted code, design and Txp
Offline
Re: Poll: useful 'escape' transforms
As per txp:evaluate this will need thorough documentation. I have no idea what it this right now but I’m sure it’ll be good when I do know. Cheers!
Offline