mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-15 20:06:31 +00:00
Refactor namespace/shortname parsing into own method
Allows you to more easily create a custom file loader with a custom namespace syntax.
This commit is contained in:
@@ -176,16 +176,7 @@ class Twig_Loader_Filesystem implements Twig_LoaderInterface, Twig_ExistsLoaderI
|
|||||||
|
|
||||||
$this->validateName($name);
|
$this->validateName($name);
|
||||||
|
|
||||||
$namespace = self::MAIN_NAMESPACE;
|
list($namespace, $shortname) = $this->parseName($name);
|
||||||
$shortname = $name;
|
|
||||||
if (isset($name[0]) && '@' == $name[0]) {
|
|
||||||
if (false === $pos = strpos($name, '/')) {
|
|
||||||
throw new Twig_Error_Loader(sprintf('Malformed namespaced template name "%s" (expecting "@namespace/template_name").', $name));
|
|
||||||
}
|
|
||||||
|
|
||||||
$namespace = substr($name, 1, $pos - 1);
|
|
||||||
$shortname = substr($name, $pos + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isset($this->paths[$namespace])) {
|
if (!isset($this->paths[$namespace])) {
|
||||||
throw new Twig_Error_Loader(sprintf('There are no registered paths for namespace "%s".', $namespace));
|
throw new Twig_Error_Loader(sprintf('There are no registered paths for namespace "%s".', $namespace));
|
||||||
@@ -200,6 +191,22 @@ class Twig_Loader_Filesystem implements Twig_LoaderInterface, Twig_ExistsLoaderI
|
|||||||
throw new Twig_Error_Loader(sprintf('Unable to find template "%s" (looked into: %s).', $name, implode(', ', $this->paths[$namespace])));
|
throw new Twig_Error_Loader(sprintf('Unable to find template "%s" (looked into: %s).', $name, implode(', ', $this->paths[$namespace])));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function parseName($name, $default = self::MAIN_NAMESPACE)
|
||||||
|
{
|
||||||
|
if (isset($name[0]) && '@' == $name[0]) {
|
||||||
|
if (false === $pos = strpos($name, '/')) {
|
||||||
|
throw new Twig_Error_Loader(sprintf('Malformed namespaced template name "%s" (expecting "@namespace/template_name").', $name));
|
||||||
|
}
|
||||||
|
|
||||||
|
$namespace = substr($name, 1, $pos - 1);
|
||||||
|
$shortname = substr($name, $pos + 1);
|
||||||
|
|
||||||
|
return array($namespace, $shortname);
|
||||||
|
}
|
||||||
|
|
||||||
|
return array($default, $name);
|
||||||
|
}
|
||||||
|
|
||||||
protected function normalizeName($name)
|
protected function normalizeName($name)
|
||||||
{
|
{
|
||||||
return preg_replace('#/{2,}#', '/', strtr((string) $name, '\\', '/'));
|
return preg_replace('#/{2,}#', '/', strtr((string) $name, '\\', '/'));
|
||||||
|
|||||||
Reference in New Issue
Block a user