#551: Minimal implementation of a Tidy HTML filter
--------------------------------------------------------------------------------+
 Reporter:  [EMAIL PROTECTED]                                                   
  |        Owner:  david    
     Type:  defect                                                              
|       Status:  new      
 Priority:  lowest                                                              
|    Milestone:  1.0      
Component:  filter                                                              
|      Version:  0.11.0RC5
 Severity:  trivial                                                             
|   Resolution:           
 Keywords:  html validation cleanup tidy global filter content output response  
|  
--------------------------------------------------------------------------------+
Old description:

> This is a minimal implementation of a Tidy-based HTML filter. It requires
> the Tidy extension to be installed. It does not do extensive error
> checking and it does not have parameters. With current settings, the HTML
> is cleaned, repaired and indented to 132 characters.
>
> <?php
>
> /**
>  * HtmlTidyFilter is a primitive filter that uses Tidy to clean up your
> HTML output.
>  *
>  * @author     Mike Seth <[EMAIL PROTECTED]>
>  * @copyright  Mike Seth <[EMAIL PROTECTED]>
>  * @version    $Id$
>  */
>
> class HtmlTidyFilter extends AgaviFilter implements AgaviIGlobalFilter
> {
>         public function executeOnce(AgaviFilterChain $filterChain,
> AgaviExecutionContainer $container)
>         {
>
>                 $filterChain->execute($container);
>
>                 $response = $container->getResponse();
>
>                 if(!$response->isContentMutable() || !($output =
> $response->getContent()) || !class_exists('Tidy')) {
>                     return;
>                 }
>
>                 $html = $output;
>
>                 $config = array('indent' => true, 'output-xhtml' => true,
> 'wrap' => 132);
>
>                 $tidy = new Tidy;
>
>                 if (! $tidy->parseString($output, $config, 'utf8'))
>                         throw new AgaviException("Tidy parsing failed.");
>
>                 if (! $tidy->cleanRepair())
>                         throw new AgaviException("Tidy cleanup failed.");
>

>                 $response->setContent((string) $tidy);
>         }
> }

New description:

 This is a minimal implementation of a Tidy-based HTML filter. It requires
 the Tidy extension to be installed. It does not do extensive error
 checking and it does not have parameters. With current settings, the HTML
 is cleaned, repaired and indented to 132 characters.

 {{{
 <?php

 /**
  * HtmlTidyFilter is a primitive filter that uses Tidy to clean up your
 HTML output.
  *
  * @author     Mike Seth <[EMAIL PROTECTED]>
  * @copyright  Mike Seth <[EMAIL PROTECTED]>
  * @version    $Id$
  */

 class HtmlTidyFilter extends AgaviFilter implements AgaviIGlobalFilter
 {
         public function executeOnce(AgaviFilterChain $filterChain,
 AgaviExecutionContainer $container)
         {

                 $filterChain->execute($container);

                 $response = $container->getResponse();

                 if(!$response->isContentMutable() || !($output =
 $response->getContent()) || !class_exists('Tidy')) {
                     return;
                 }

                 $html = $output;

                 $config = array('indent' => true, 'output-xhtml' => true,
 'wrap' => 132);

                 $tidy = new Tidy;

                 if (! $tidy->parseString($output, $config, 'utf8'))
                         throw new AgaviException("Tidy parsing failed.");

                 if (! $tidy->cleanRepair())
                         throw new AgaviException("Tidy cleanup failed.");


                 $response->setContent((string) $tidy);
         }
 }

 ?>
 }}}

-- 
Ticket URL: <http://trac.agavi.org/ticket/551#comment:1>
Agavi <http://www.agavi.org/>
An MVC Framework for PHP5


_______________________________________________
Agavi Tickets Mailing List
[email protected]
http://lists.agavi.org/mailman/listinfo/tickets

Reply via email to