public function parseIdentifier($url)
    {
        $engines = $this->getObject('template.engine.factory')->getFileTypes();

        //Set defaults
        $path   = null;
        $file   = null;
        $format = null;
        $type   = null;

        //Qualify partial templates.
        if(strpos($url, ':') === false)
        {
            /**
             * Parse identifiers in following formats :
             *
             * - '[file.[format].[type]';
             * - '[file].[format];
             */

            $parts = explode('.', $url);

            if(in_array(end($parts), $engines)) {
                $type = array_pop($parts);
            }

            $format = array_pop($parts);
            $file   = array_pop($parts);

            $info = array(
                'package' => '',
                'path'    => '',
                'file'   => $file,
                'format' => $format,
                'type'   => $type,
            );
        }
        else
        {
            /**
             * Parse identifiers in following formats :
             *
             * - '[package].[path].[file].[format].[type]';
             * - '[package].[path].[file].[format];
             */

            $parts = explode('.', $url);

            if(in_array(end($parts), $engines))
            {
                $type  =  array_pop($parts);
                $format = array_pop($parts);
                $file   = array_pop($parts);
            }
            else
            {
                $format = array_pop($parts);
                $file   = array_pop($parts);
            }

            $info = array(
                'package' => array_shift($parts),
                'path'    => implode('.', $parts),
                'file'   => $file,
                'format' => $format,
                'type'   => $type,
            );
        }

        return $info;
    }