Fix template generator

This commit is contained in:
Romain Neutron
2012-04-13 16:33:51 +02:00
parent 45a4af8f1b
commit adddfa18c3

View File

@@ -25,97 +25,101 @@ use Symfony\Component\Console\Command\Command;
class module_console_systemTemplateGenerator extends Command class module_console_systemTemplateGenerator extends Command
{ {
public function __construct($name = null) public function __construct($name = null)
{ {
parent::__construct($name); parent::__construct($name);
$this->setDescription('Generate template files'); $this->setDescription('Generate template files');
return $this; return $this;
} }
public function execute(InputInterface $input, OutputInterface $output) public function execute(InputInterface $input, OutputInterface $output)
{ {
$tplDir = __DIR__ . '/../../../../templates/'; $tplDirs = array(
$tmpDir = __DIR__ . '/../../../../tmp/cache_twig/'; realpath(__DIR__ . '/../../../../templates/web/'),
realpath(__DIR__ . '/../../../../templates/mobile/')
$loader = new Twig_Loader_Filesystem($tplDir); );
$twig = new Twig_Environment($loader, array( $n_ok = $n_error = 0;
'cache' => $tmpDir,
foreach ($tplDirs as $tplDir)
{
$tmpDir = __DIR__ . '/../../../../tmp/cache_twig/';
$loader = new Twig_Loader_Filesystem($tplDir);
$twig = new Twig_Environment($loader, array(
'cache' => $tmpDir,
'auto_reload' => true 'auto_reload' => true
)); ));
$twig->addExtension(new Twig_Extensions_Extension_I18n());
/** $twig->addExtension(new Twig_Extensions_Extension_I18n());
* @todo clean all duplicate filters
*/ /**
$twig->addFilter('serialize', new Twig_Filter_Function('serialize')); * @todo clean all duplicate filters
$twig->addFilter('sbas_names', new Twig_Filter_Function('phrasea::sbas_names')); */
$twig->addFilter('sbas_name', new Twig_Filter_Function('phrasea::sbas_names')); $twig->addFilter('serialize', new Twig_Filter_Function('serialize'));
$twig->addFilter('unite', new Twig_Filter_Function('p4string::format_octets')); $twig->addFilter('sbas_names', new Twig_Filter_Function('phrasea::sbas_names'));
$twig->addFilter('stristr', new Twig_Filter_Function('stristr')); $twig->addFilter('sbas_name', new Twig_Filter_Function('phrasea::sbas_names'));
$twig->addFilter('implode', new Twig_Filter_Function('implode')); $twig->addFilter('unite', new Twig_Filter_Function('p4string::format_octets'));
$twig->addFilter('stripdoublequotes', new Twig_Filter_Function('stripdoublequotes')); $twig->addFilter('stristr', new Twig_Filter_Function('stristr'));
$twig->addFilter('phraseadate', new Twig_Filter_Function('phraseadate::getPrettyString')); $twig->addFilter('implode', new Twig_Filter_Function('implode'));
$twig->addFilter('format_octets', new Twig_Filter_Function('p4string::format_octets')); $twig->addFilter('stripdoublequotes', new Twig_Filter_Function('stripdoublequotes'));
$twig->addFilter('geoname_display', new Twig_Filter_Function('geonames::name_from_id')); $twig->addFilter('phraseadate', new Twig_Filter_Function('phraseadate::getPrettyString'));
$twig->addFilter('get_collection_logo', new Twig_Filter_Function('collection::getLogo')); $twig->addFilter('format_octets', new Twig_Filter_Function('p4string::format_octets'));
$twig->addFilter('nl2br', new Twig_Filter_Function('nl2br')); $twig->addFilter('geoname_display', new Twig_Filter_Function('geonames::name_from_id'));
$twig->addFilter('floor', new Twig_Filter_Function('floor')); $twig->addFilter('get_collection_logo', new Twig_Filter_Function('collection::getLogo'));
$twig->addFilter('bas_name', new Twig_Filter_Function('phrasea::bas_names')); $twig->addFilter('nl2br', new Twig_Filter_Function('nl2br'));
$twig->addFilter('bas_names', new Twig_Filter_Function('phrasea::bas_names')); $twig->addFilter('floor', new Twig_Filter_Function('floor'));
$twig->addFilter('basnames', new Twig_Filter_Function('phrasea::bas_names')); $twig->addFilter('bas_name', new Twig_Filter_Function('phrasea::bas_names'));
$twig->addFilter('urlencode', new Twig_Filter_Function('urlencode')); $twig->addFilter('bas_names', new Twig_Filter_Function('phrasea::bas_names'));
$twig->addFilter('sbasFromBas', new Twig_Filter_Function('phrasea::sbasFromBas')); $twig->addFilter('basnames', new Twig_Filter_Function('phrasea::bas_names'));
$twig->addFilter('str_replace', new Twig_Filter_Function('str_replace')); $twig->addFilter('urlencode', new Twig_Filter_Function('urlencode'));
$twig->addFilter('strval', new Twig_Filter_Function('strval')); $twig->addFilter('sbasFromBas', new Twig_Filter_Function('phrasea::sbasFromBas'));
$twig->addFilter('key_exists', new Twig_Filter_Function('array_key_exists')); $twig->addFilter('str_replace', new Twig_Filter_Function('str_replace'));
$twig->addFilter('array_keys', new Twig_Filter_Function('array_keys')); $twig->addFilter('strval', new Twig_Filter_Function('strval'));
$twig->addFilter('round', new Twig_Filter_Function('round')); $twig->addFilter('key_exists', new Twig_Filter_Function('array_key_exists'));
$twig->addFilter('get_class', new Twig_Filter_Function('get_class')); $twig->addFilter('array_keys', new Twig_Filter_Function('array_keys'));
$twig->addFilter('formatdate', new Twig_Filter_Function('phraseadate::getDate')); $twig->addFilter('round', new Twig_Filter_Function('round'));
$twig->addFilter('getPrettyDate', new Twig_Filter_Function('phraseadate::getPrettyString')); $twig->addFilter('get_class', new Twig_Filter_Function('get_class'));
$twig->addFilter('prettyDate', new Twig_Filter_Function('phraseadate::getPrettyString')); $twig->addFilter('formatdate', new Twig_Filter_Function('phraseadate::getDate'));
$twig->addFilter('prettyString', new Twig_Filter_Function('phraseadate::getPrettyString')); $twig->addFilter('getPrettyDate', new Twig_Filter_Function('phraseadate::getPrettyString'));
$twig->addFilter('formatoctet', new Twig_Filter_Function('p4string::format_octet')); $twig->addFilter('prettyDate', new Twig_Filter_Function('phraseadate::getPrettyString'));
$twig->addFilter('getDate', new Twig_Filter_Function('phraseadate::getDate')); $twig->addFilter('prettyString', new Twig_Filter_Function('phraseadate::getPrettyString'));
$twig->addFilter('geoname_name_from_id', new Twig_Filter_Function('geonames::name_from_id')); $twig->addFilter('formatoctet', new Twig_Filter_Function('p4string::format_octet'));
$twig->addFilter('getDate', new Twig_Filter_Function('phraseadate::getDate'));
$twig->addFilter('geoname_name_from_id', new Twig_Filter_Function('geonames::name_from_id'));
$n_ok = $n_error = 0; $finder = new Symfony\Component\Finder\Finder();
foreach ($finder->files()->in(array($tplDir)) as $file)
{
try
{
$twig->loadTemplate(str_replace($tplDir, '', $file->getPathname()));
$output->writeln('' . $file . '');
$n_ok ++;
}
catch (Exception $e)
{
$output->writeln('<error>' . $e->getMessage() . '</error>');
$n_error ++;
}
}
}
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($tplDir), RecursiveIteratorIterator::LEAVES_ONLY) as $file) $output->writeln("");
{ $output->write(sprintf('%d templates generated. ', $n_ok));
if (strpos($file, '/.svn/') !== false)
continue;
if (substr($file->getFilename(), 0, 1) === '.')
continue;
try if ($n_error > 0)
{ {
$twig->loadTemplate(str_replace($tplDir, '', $file)); $output->write(sprintf('<error>%d templates failed.</error>', $n_error));
$output->writeln('' . $file . ''); }
$n_ok++;
} $output->writeln("");
catch (Exception $e)
{ return $n_error;
$output->writeln('<error>' . $e->getMessage() . '</error>');
$n_error++;
}
} }
$output->writeln("");
$output->write(sprintf('%d templates generated. ', $n_ok));
if ($n_error > 0)
{
$output->write(sprintf('<error>%d templates failed.</error>', $n_error));
}
$output->writeln("");
return $n_error;
}
} }