Author: fabien
Date: 2010-01-14 18:34:51 +0100 (Thu, 14 Jan 2010)
New Revision: 26643
Added:
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/Extension/SymfonyTemplatingExtension.php
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/Extension/xml/symfony/
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/Extension/xml/symfony/templating-1.0.xml
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/schema/symfony/
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/schema/symfony/symfony-1.0.xsd
Modified:
branches/2.0/src/Symfony/Components/DependencyInjection/BuilderConfiguration.php
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/Extension/xml/doctrine/dbal-1.0.xml
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/XmlFileLoader.php
Log:
Merge branch 'master' of git://github.com/symfony/symfony
Modified:
branches/2.0/src/Symfony/Components/DependencyInjection/BuilderConfiguration.php
===================================================================
---
branches/2.0/src/Symfony/Components/DependencyInjection/BuilderConfiguration.php
2010-01-14 16:41:04 UTC (rev 26642)
+++
branches/2.0/src/Symfony/Components/DependencyInjection/BuilderConfiguration.php
2010-01-14 17:34:51 UTC (rev 26643)
@@ -158,6 +158,37 @@
}
/**
+ * Returns true if a service alias exists.
+ *
+ * @param string $alias The alias
+ *
+ * @return Boolean true if the alias exists, false otherwise
+ */
+ public function hasAlias($alias)
+ {
+ return array_key_exists($alias, $this->aliases);
+ }
+
+ /**
+ * Gets the service id for a given alias.
+ *
+ * @param string $alias The alias
+ *
+ * @return string The aliased id
+ *
+ * @throws \InvalidArgumentException if the service alias does not exist
+ */
+ public function getAlias($alias)
+ {
+ if (!$this->hasAlias($alias))
+ {
+ throw new \InvalidArgumentException(sprintf('The service alias "%s" does
not exist.', $alias));
+ }
+
+ return $this->aliases[$alias];
+ }
+
+ /**
* Sets a definition.
*
* @param string $id The identifier
Added:
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/Extension/SymfonyTemplatingExtension.php
===================================================================
---
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/Extension/SymfonyTemplatingExtension.php
(rev 0)
+++
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/Extension/SymfonyTemplatingExtension.php
2010-01-14 17:34:51 UTC (rev 26643)
@@ -0,0 +1,121 @@
+<?php
+
+namespace Symfony\Components\DependencyInjection\Loader\Extension;
+
+use Symfony\Components\DependencyInjection\Loader\LoaderExtension;
+use Symfony\Components\DependencyInjection\Loader\XmlFileLoader;
+use Symfony\Components\DependencyInjection\BuilderConfiguration;
+use Symfony\Components\DependencyInjection\Reference;
+
+/*
+ * This file is part of the symfony framework.
+ *
+ * (c) Fabien Potencier <[email protected]>
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+/**
+ * SymfonyTemplatingExtension is an extension for the Symfony Templating
Component.
+ *
+ * @package symfony
+ * @subpackage dependency_injection
+ * @author Fabien Potencier <[email protected]>
+ */
+class SymfonyTemplatingExtension extends LoaderExtension
+{
+ /**
+ * Loads the template configuration.
+ *
+ * @param array $config A configuration array
+ *
+ * @return BuilderConfiguration A BuilderConfiguration instance
+ */
+ public function templatingLoad($config)
+ {
+ $configuration = new BuilderConfiguration();
+
+ $loader = new XmlFileLoader(__DIR__.'/xml/symfony');
+ $configuration->merge($loader->load('templating-1.0.xml'));
+
+ // path for the filesystem loader
+ if (isset($config['path']))
+ {
+
$configuration->setParameter('symfony.templating.loader.filesystem.path',
$config['path']);
+ }
+
+ // loaders
+ if (isset($config['loader']))
+ {
+ $loaders = array();
+ $ids = is_array($config['loader']) ? $config['loader'] :
array($config['loader']);
+ foreach ($ids as $id)
+ {
+ $loaders[] = new Reference($id);
+ }
+ }
+ else
+ {
+ $loaders = array(
+ new Reference('symfony.templating.loader.filesystem'),
+ );
+ }
+
+ $configuration->setParameter('symfony.templating.loader.chain.loaders',
$loaders);
+ $configuration->setAlias('symfony.templating.loader',
'symfony.templating.loader.chain');
+
+ // helpers
+ if (isset($config['helper']))
+ {
+ $helpers = array();
+ $ids = is_array($config['helper']) ? $config['helper'] :
array($config['helper']);
+ foreach ($ids as $id)
+ {
+ $helpers[] = new Reference($id);
+ }
+ }
+ else
+ {
+ $helpers = array(
+ new Reference('symfony.templating.helper.javascripts'),
+ new Reference('symfony.templating.helper.stylesheets'),
+ );
+ }
+
+ $configuration->setParameter('symfony.templating.helpers', $helpers);
+
+ // cache?
+ if (isset($config['cache']))
+ {
+ // wrap the loader with some cache
+ $configuration->setAlias('symfony.templating.loader.wrapped',
$configuration->getAlias('symfony.templating.loader'));
+ $configuration->setAlias('symfony.templating.loader',
'symfony.templating.loader.cache');
+ $configuration->setParameter('symfony.templating.loader.cache.path',
$config['cache']);
+ }
+
+ return $configuration;
+ }
+
+ /**
+ * Returns the namespace to be used for this extension (XML namespace).
+ *
+ * @return string The XML namespace
+ */
+ public function getNamespace()
+ {
+ return 'http://www.symfony-project.org/schema/symfony';
+ }
+
+ /**
+ * Returns the recommanded alias to use in XML.
+ *
+ * This alias is also the mandatory prefix to use when using YAML.
+ *
+ * @return string The alias
+ */
+ public function getAlias()
+ {
+ return 'symfony';
+ }
+}
Modified:
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/Extension/xml/doctrine/dbal-1.0.xml
===================================================================
---
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/Extension/xml/doctrine/dbal-1.0.xml
2010-01-14 16:41:04 UTC (rev 26642)
+++
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/Extension/xml/doctrine/dbal-1.0.xml
2010-01-14 17:34:51 UTC (rev 26643)
@@ -8,10 +8,10 @@
<parameter key="doctrine.dbal.user">root</parameter>
<parameter key="doctrine.dbal.password"></parameter>
<parameter key="doctrine.dbal.host">localhost</parameter>
- <parameter
key="doctrine.dbal.driver_class">Doctrine\DBAL\Driver\PDOMySql\Driver</parameter>
- <parameter
key="doctrine.dbal.wrapper_class">Doctrine\DBAL\Connection</parameter>
- <parameter
key="doctrine.dbal.configuration_class">Doctrine\DBAL\Configuration</parameter>
- <parameter
key="doctrine.dbal.event_manager_class">Doctrine\Common\EventManager</parameter>
+ <parameter
key="doctrine.dbal.driver.class">Doctrine\DBAL\Driver\PDOMySql\Driver</parameter>
+ <parameter
key="doctrine.dbal.wrapper.class">Doctrine\DBAL\Connection</parameter>
+ <parameter
key="doctrine.dbal.configuration.class">Doctrine\DBAL\Configuration</parameter>
+ <parameter
key="doctrine.dbal.event_manager.class">Doctrine\Common\EventManager</parameter>
</parameters>
<services>
@@ -21,15 +21,15 @@
<argument key="user">%doctrine.dbal.user%</argument>
<argument key="password">%doctrine.dbal.password%</argument>
<argument key="host">%doctrine.dbal.host%</argument>
- <argument key="driverClass">%doctrine.dbal.driver_class%</argument>
- <argument key="wrapperClass">%doctrine.dbal.wrapper_class%</argument>
+ <argument key="driverClass">%doctrine.dbal.driver.class%</argument>
+ <argument key="wrapperClass">%doctrine.dbal.wrapper.class%</argument>
</argument>
<argument type="service" id="doctrine.dbal.configuration" />
<argument type="service" id="doctrine.dbal.event_manager" />
</service>
- <service id="doctrine.dbal.configuration"
class="%doctrine.dbal.configuration_class%" />
+ <service id="doctrine.dbal.configuration"
class="%doctrine.dbal.configuration.class%" />
- <service id="doctrine.dbal.event_manager"
class="%doctrine.dbal.event_manager_class%" />
+ <service id="doctrine.dbal.event_manager"
class="%doctrine.dbal.event_manager.class%" />
</services>
</container>
Added:
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/Extension/xml/symfony/templating-1.0.xml
===================================================================
---
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/Extension/xml/symfony/templating-1.0.xml
(rev 0)
+++
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/Extension/xml/symfony/templating-1.0.xml
2010-01-14 17:34:51 UTC (rev 26643)
@@ -0,0 +1,46 @@
+<?xml version="1.0" ?>
+
+<container xmlns="http://www.symfony-project.org/schema/services"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.symfony-project.org/schema/services
http://www.symfony-project.org/schema/services/services-1.0.xsd">
+
+ <parameters>
+ <parameter
key="symfony.templating.engine.class">Symfony\Components\Templating\Engine</parameter>
+ <parameter
key="symfony.templating.helperset.class">Symfony\Components\Templating\Helper\HelperSet</parameter>
+ <parameter
key="symfony.templating.loader.filesystem.class">Symfony\Components\Templating\Loader\FilesystemLoader</parameter>
+ <parameter
key="symfony.templating.loader.cache.class">Symfony\Components\Templating\Loader\CacheLoader</parameter>
+ <parameter
key="symfony.templating.loader.Chain.class">Symfony\Components\Templating\Loader\ChainLoader</parameter>
+ <parameter
key="symfony.templating.helper.javascripts.class">Symfony\Components\Templating\Helper\JavascriptsHelper</parameter>
+ <parameter
key="symfony.templating.helper.stylesheets.class">Symfony\Components\Templating\Helper\StylesheetsHelper</parameter>
+ </parameters>
+
+ <services>
+ <service id="symfony.templating.engine"
class="%symfony.templating.engine.class%">
+ <argument type="service" id="symfony.templating.loader" />
+ <argument type="collection"></argument>
+ <argument type="service" id="symfony.templating.helperset" />
+ </service>
+
+ <service id="symfony.templating.helperset"
class="%symfony.templating.helperset.class%">
+ <argument>%symfony.templating.helpers%</argument>
+ </service>
+
+ <service id="symfony.templating.loader.filesystem"
class="%symfony.templating.loader.filesystem.class%">
+ <argument>%symfony.templating.loader.filesystem.path%</argument>
+ </service>
+
+ <service id="symfony.templating.loader.cache"
class="%symfony.templating.loader.cache.class%">
+ <argument type="service" id="symfony.templating.loader.wrapped" />
+ <argument>%symfony.templating.loader.cache.path%</argument>
+ </service>
+
+ <service id="symfony.templating.loader.chain"
class="%symfony.templating.loader.chain.class%">
+ <argument>%symfony.templating.loader.chain.loaders%</argument>
+ </service>
+
+ <service id="symfony.templating.helper.javascripts"
class="%symfony.templating.helper.javascripts.class%" />
+ <service id="symfony.templating.helper.stylesheets"
class="%symfony.templating.helper.stylesheets.class%" />
+
+ <service id="symfony.templating.loader"
alias="symfony.templating.loader.filesystem" />
+ </services>
+</container>
Modified:
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/XmlFileLoader.php
===================================================================
---
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/XmlFileLoader.php
2010-01-14 16:41:04 UTC (rev 26642)
+++
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/XmlFileLoader.php
2010-01-14 17:34:51 UTC (rev 26643)
@@ -382,7 +382,19 @@
}
elseif (!$node instanceof \DOMComment)
{
- $config[$node->localName] = static::convertDomElementToArray($node);
+ if (isset($config[$node->localName]))
+ {
+ if (!is_array($config[$node->localName]))
+ {
+ $config[$node->localName] = array($config[$node->localName]);
+ }
+ $config[$node->localName][] =
static::convertDomElementToArray($node);
+ }
+ else
+ {
+ $config[$node->localName] = static::convertDomElementToArray($node);
+ }
+
$empty = false;
}
}
Added:
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/schema/symfony/symfony-1.0.xsd
===================================================================
---
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/schema/symfony/symfony-1.0.xsd
(rev 0)
+++
branches/2.0/src/Symfony/Components/DependencyInjection/Loader/schema/symfony/symfony-1.0.xsd
2010-01-14 17:34:51 UTC (rev 26643)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<xsd:schema xmlns="http://www.symfony-project.org/schema/symfony"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.symfony-project.org/schema/symfony"
+ elementFormDefault="qualified">
+
+ <xsd:element name="templating" type="templating" />
+
+ <xsd:complexType name="templating">
+ <xsd:sequence>
+ <xsd:element name="loader" type="xsd:string" minOccurs="0"
maxOccurs="unbounded" />
+ <xsd:element name="helper" type="xsd:string" minOccurs="0"
maxOccurs="unbounded" />
+ </xsd:sequence>
+
+ <xsd:attribute name="path" type="xsd:string" />
+ <xsd:attribute name="cache" type="xsd:string" />
+ </xsd:complexType>
+</xsd:schema>
--
You received this message because you are subscribed to the Google Groups
"symfony SVN" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/symfony-svn?hl=en.