<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services
        http://symfony.com/schema/dic/services/services-1.0.xsd">

    <services>
        <defaults autowire="true" autoconfigure="true" public="false" />

        <!-- Adapters -->
        <service id="Omines\DataTablesBundle\Adapter\ArrayAdapter" />
        <service id="Omines\DataTablesBundle\Adapter\Doctrine\ORMAdapter">
            <argument type="service" id="doctrine" on-invalid="null" />
        </service>
        <service id="Omines\DataTablesBundle\Adapter\Doctrine\FetchJoinORMAdapter">
            <argument type="service" id="doctrine" on-invalid="null" />
        </service>

        <!-- Columns -->
        <service id="Omines\DataTablesBundle\Column\TwigColumn">
            <argument type="service" id="twig" on-invalid="null" />
        </service>
        <service id="Omines\DataTablesBundle\Column\TwigStringColumn">
            <argument type="service" id="twig" on-invalid="null" />
        </service>

        <!-- Exporters -->
        <service id="Omines\DataTablesBundle\Exporter\DataTableExporterCollection">
            <argument type="tagged" tag="datatables.exporter"/>
        </service>

        <service id="Omines\DataTablesBundle\Exporter\DataTableExporterManager">
            <argument type="service" id="Omines\DataTablesBundle\Exporter\DataTableExporterCollection"/>
            <argument type="service" id="translator"/>
        </service>

        <service id="Omines\DataTablesBundle\Exporter\Excel\ExcelExporter">
            <tag name="datatables.exporter"/>
        </service>

        <service id="Omines\DataTablesBundle\Exporter\Csv\CsvExporter">
            <tag name="datatables.exporter"/>
        </service>

        <!-- Factory -->
        <service id="Omines\DataTablesBundle\DataTableFactory" public="true">
            <argument>%datatables.config%</argument>
            <argument type="service" id="datatables.renderer" />
            <argument type="service" id="Omines\DataTablesBundle\DependencyInjection\Instantiator" />
            <argument type="service" id="event_dispatcher" />
        </service>

        <!-- Support services -->
        <service id="Omines\DataTablesBundle\DependencyInjection\Instantiator" />
        <service id="Omines\DataTablesBundle\Twig\DataTablesExtension" />
        <service id="Omines\DataTablesBundle\Twig\TwigRenderer">
            <argument type="service" id="twig" on-invalid="null" />
        </service>
    </services>
</container>
