Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/SubContainer/ApiDocs.php
<?php

namespace XF\SubContainer;

use
XF\Container;

class
ApiDocs extends AbstractSubContainer
{
    public function
initialize()
    {
       
$container = $this->container;

       
$container['parser.annotations'] = function(Container $c)
        {
           
$class = $this->extendClass('XF\Api\Docs\AnnotationParser');
            return new
$class();
        };
       
$container['parser.class'] = function(Container $c)
        {
           
$class = $this->extendClass('XF\Api\Docs\ClassParser');
            return new
$class($c['parser.annotations']);
        };
       
$container['compiler'] = function(Container $c)
        {
           
$class = $this->extendClass('XF\Api\Docs\Compiler');
            return new
$class($c['parser.annotations'], $c['parser.class']);
        };

       
$container->factory('renderer', function($type, array $params, Container $c)
        {
           
$map = $c['rendererMap'];
            if (isset(
$map[$type]))
            {
               
$type = $map[$type];
            }

           
$class = \XF::stringToClass($type, '%s\Api\Docs\Renderer\%s');
           
$class = $this->extendClass($class);

            if (!
class_exists($class))
            {
                throw new \
InvalidArgumentException("Unknown renderer class '$class'");
            }

            return new
$class();
        },
false);

       
$container['rendererMap'] = function(Container $c)
        {
            return [
               
'simpleHtml' => 'XF:SimpleHtml',
               
'xf2Html' => 'XF:Xf2Html'
           
];
        };
    }

   
/**
     * @return \XF\Api\Docs\AnnotationParser
     */
   
public function annotationParser()
    {
        return
$this->container['parser.annotations'];
    }

   
/**
     * @return \XF\Api\Docs\ClassParser
     */
   
public function classParser()
    {
        return
$this->container['parser.class'];
    }

   
/**
     * @return \XF\Api\Docs\Compiler
     */
   
public function compiler()
    {
        return
$this->container['compiler'];
    }

   
/**
     * @param string $type
     *
     * @return \XF\Api\Docs\Renderer\RendererInterface
     */
   
public function renderer($type)
    {
        return
$this->container->create('renderer', $type);
    }
}