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.


Reply via email to