2011-05-24 11:38:05 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Propel\PropelBundle\Twig\Extension;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* SyntaxExtension class
|
|
|
|
*
|
|
|
|
* @package PropelBundle
|
|
|
|
* @subpackage Extension
|
|
|
|
* @author William DURAND <william.durand1@gmail.com>
|
|
|
|
*/
|
|
|
|
class SyntaxExtension extends \Twig_Extension
|
|
|
|
{
|
|
|
|
public function getFilters()
|
|
|
|
{
|
|
|
|
return array(
|
|
|
|
'formatSQL' => new \Twig_Filter_Method($this, 'formatSQL', array('is_safe' => array('html'))),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getName()
|
|
|
|
{
|
|
|
|
return 'propel_syntax_extension';
|
|
|
|
}
|
|
|
|
|
|
|
|
public function formatSQL($sql)
|
|
|
|
{
|
2011-05-24 11:52:35 +02:00
|
|
|
$sql = preg_replace('/\b(UPDATE|SET|SELECT|FROM|AS|LIMIT|ASC|COUNT|DESC|WHERE|LEFT JOIN|INNER JOIN|RIGHT JOIN|ORDER BY|GROUP BY|IN|LIKE|DISTINCT|DELETE|INSERT|INTO|VALUES|ON|AND|OR)\b/', '<span class="SQLKeyword">\\1</span>', $sql);
|
|
|
|
|
2011-05-24 13:17:36 +02:00
|
|
|
$sql = preg_replace('/\b(FROM|WHERE|INNER JOIN|LEFT JOIN|RIGHT JOIN|ORDER BY|GROUP BY)\b/', '<br />\\1', $sql);
|
2011-05-24 11:52:35 +02:00
|
|
|
|
|
|
|
return $sql;
|
2011-05-24 11:38:05 +02:00
|
|
|
}
|
|
|
|
}
|