Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#37 2017-12-18 14:27:44

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 11,269
Website GitHub

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 /> with escape="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

#38 2017-12-18 14:44:59

etc
Developer
Registered: 2010-11-11
Posts: 5,053
Website GitHub

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" (or textile_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

#39 2017-12-18 15:29:35

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 11,269
Website GitHub

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 assembled and indent it only on a further textile, unless it’s trimmed 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

#40 2017-12-18 16:35:22

jakob
Admin
From: Germany
Registered: 2005-01-20
Posts: 4,595
Website

Re: Poll: useful 'escape' transforms

Bloke wrote #308327:

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.

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

#41 2017-12-18 16:52:45

etc
Developer
Registered: 2010-11-11
Posts: 5,053
Website GitHub

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

#42 2017-12-18 16:54:27

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 11,269
Website GitHub

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

#43 2017-12-18 17:07:42

etc
Developer
Registered: 2010-11-11
Posts: 5,053
Website GitHub

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

#44 2017-12-18 17:11:53

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 11,269
Website GitHub

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 can tidy 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

#45 2017-12-18 17:43:47

philwareham
Core designer
From: Haslemere, Surrey, UK
Registered: 2009-06-11
Posts: 3,564
Website GitHub Mastodon

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

#46 2017-12-18 22:45:30

etc
Developer
Registered: 2010-11-11
Posts: 5,053
Website GitHub

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

#47 2017-12-19 06:52:07

Dragondz
Moderator
From: Algérie
Registered: 2005-06-12
Posts: 1,529
Website GitHub Twitter

Re: Poll: useful 'escape' transforms

Great job guys, that will open great possibilities for outputting things without a lot of txp:php.

Offline

#48 2017-12-19 08:56:56

philwareham
Core designer
From: Haslemere, Surrey, UK
Registered: 2009-06-11
Posts: 3,564
Website GitHub Mastodon

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

Board footer

Powered by FluxBB