On Mar 19, 2008, at 11:38 AM, Robin Smidsrød wrote:

> Sean Allen wrote:
>> anyone done anything about getting html tidy to play nice with   
>> template toolkit syntax?
>>
>> don't want to redo what is already done, google isn't helping then  
>> again
>>
>> template toolkit tidy html
>>
>> in any combo bring up a ton of stuff isn't relevant so maybe its  
>> out  there just lost in the noise.
>>
> If I understand your question right I've been doing something like  
> this in an application of mine:
>
> sub tidy_html_string {
> my $content=shift @_;
>
> use Regexp::Common qw( balanced );
> use MIME::Base64 ();
> use Encode ();
> use HTML::Tidy ();
>
> my $tidy=HTML::Tidy->new();
>
> # Obfuscate TT markup
> # MIME::Base64 must be done on bytes, not perl character strings
> $content=~s/$RE{balanced}{-begin => "[%"}{-end => "%]"}{- 
> keep}/'tt_begin:'
>   . MIME::Base64::encode($1,'')
>   . ':tt_end'/ge;
>
> # HTML::Tidy wants to work on perl character data
> $content=Encode::decode_utf8($content);
> $content=$tidy->clean($content);
> $content=Encode::encode_utf8($content);
>
> # Get back obfuscated TT markup
> $content=~s/$RE{balanced}{-begin => "tt_begin:"}{-end => ":tt_end"}{- 
> keep}/
>   my $var=$1;
>   my $len=length($var);
>   MIME::Base64::decode(substr($var, 9, $len-16 ));
> /ge if $content;
>
> return $content;
>
> }
>
> If your input string is not binary UTF-8 text, some twiddling with  
> the encode/decode functions will be needed. Just remember that  
> MIME::Base64 works on bytes, but HTML::Tidy likes to work on perl  
> character strings.
>
> If your input is plain 7-bit ASCII the encoding/decoding is a non- 
> issue and can be ignored.
>

Thanks for the help. It got me a long way towards realizing that a  
with our templates, we just arent going to make it all the way.
hmmm.. basic to square one on figuring out a way to mass clean them up.



_______________________________________________
templates mailing list
[email protected]
http://mail.template-toolkit.org/mailman/listinfo/templates

Reply via email to