Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
Re: Poll: useful 'escape' transforms
etc wrote #308326:
Don’t think
raw
or<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.
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 assemble
d and indent it only on a further textile
, unless it’s trim
med in between.
Alternatively (or additionally), as this is specific to Textile, introduce a dedicated transform
escape="textile_unwrap"
(ortextile_clean
or 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, ltrim
too.
True.
FWIW, it’s called
normalize-space
in XPath, so finding a good name seems difficult.
Yes.
We could also test if the string has been
assemble
d and indent it only on a furthertextile
, unless it’strim
med 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.
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_clean
or 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 …
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.
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.
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 cantidy
after 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.
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
Re: Poll: useful 'escape' transforms
philwareham wrote #308335:
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.
Hi Phil! I’m slowly documenting what I can, but find it waaay harder than coding or answering questions. Stef has nicely outlined the escape
usage (see also these examples), the fastest way would be to compile them and extend later. But I’m not sure where should this go: tags cross-reference? A separate topic?
Offline
Re: Poll: useful 'escape' transforms
Great job guys, that will open great possibilities for outputting things without a lot of txp:php.
Offline
Re: Poll: useful 'escape' transforms
etc wrote #308336:
…but find it waaay harder than coding or answering questions.
You’re doing great with the documentation additions. I just step in and do some minimal editorial work on your text and it’s looking ace. Thanks, I know documentation isn’t easy.
Stef has nicely outlined the
escape
usage (see also these examples), the fastest way would be to compile them and extend later. But I’m not sure where should this go: tags cross-reference? A separate topic?
Hmmm, I’ll think about it. It’d probably be wise to have a section at the top of tag attribute cross-reference to list all the global attributes first (just checking: these attributes can be used on any tag, yes?). I’d also be keen to have the global attributes at least mentioned on the attributes section of tag docs (not necessarily listed, but mentioned). It may even be good to have another page on tag basics explaining global attributes too (as I assume this list of globals will only get bigger in future releases). Same for escape
– it probably merits another page on tag basics and mentions on tag doc pages.
Offline