Completed
Push — master ( d7e590...c64771 )
by Johannes
02:22
created

ContainerConfig   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 101
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 3
c 1
b 0
f 1
lcom 1
cbo 1
dl 0
loc 101
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
B define() 0 77 1
A modify() 0 3 1
1
<?php
2
/**
3
 * Lichtenwallner  (https://lichtenwallner.at)
4
 *
5
 * @see https://github.com/jolicht/markdown-cms for the canonical source repository
6
 * @license https://github.com/jolicht/markdown-cms/blob/master/LICENSE MIT
7
 * @copyright Copyright (c) Johannes Lichtenwallner
8
 */
9
declare(strict_types = 1);
10
namespace Jolicht\MarkdownCms;
11
12
use Aura\Di\ContainerConfigInterface;
13
use Aura\Di\Container;
14
use Jolicht\MarkdownCms\Action\BlogOverviewAction;
15
use Zend\Expressive\Template\TemplateRendererInterface;
16
use Jolicht\MarkdownCms\ContentType\ContentCreator;
17
use Jolicht\MarkdownCms\Markdown\MarkdownDocumentParser;
18
use Jolicht\MarkdownCms\Action\SingleBlogEntryAction;
19
use Mni\FrontYAML\Parser;
20
use Jolicht\MarkdownCms\Parser\ContentParser;
21
use Jolicht\MarkdownCms\Iterator\MarkdownFileIterator;
22
use Mni\FrontYAML\Bridge\CommonMark\CommonMarkParser;
23
use League\CommonMark\CommonMarkConverter;
24
use Jolicht\MarkdownCms\Command\ParseContentCommand;
25
use Jolicht\MarkdownCms\Parser\ParseContentExecutor;
26
use Jolicht\MarkdownCms\Parser\Observer\SaveContentConfigObserver;
27
use Zend\Config\Writer\PhpArray;
28
use Jolicht\MarkdownCms\Parser\Observer\SitemapObserver;
29
30
class ContainerConfig implements ContainerConfigInterface
31
{
32
    private $config;
33
34
    public function __construct($config)
35
    {
36
        $this->config = $config;
37
    }
38
39
    /**
40
     * Define
41
     * {@inheritDoc}
42
     * @see \Aura\Di\ContainerConfigInterface::define()
43
     */
44
    public function define(Container $di)
45
    {
46
        $di->set(\Sabre\Xml\Writer::class, $di->lazyNew(\Sabre\Xml\Writer::class));
47
48
        $di->set(BlogOverviewAction::class, $di->lazyNew(BlogOverviewAction::class));
49
        $di->params[BlogOverviewAction::class] = [
50
            'templateRenderer' => $di->lazyGet(TemplateRendererInterface::class),
51
            'contentCreator' => $di->lazyGet(ContentCreator::class),
52
            'markdownDocumentParser' => $di->lazyGet(MarkdownDocumentParser::class),
53
            'markdownCmsConfig' => $this->config['markdown_cms'],
54
        ];
55
56
        $di->set(SingleBlogEntryAction::class, $di->lazyNew(SingleBlogEntryAction::class));
57
        $di->params[SingleBlogEntryAction::class] = [
58
            'templateRenderer' => $di->lazyGet(TemplateRendererInterface::class),
59
            'contentCreator' => $di->lazyGet(ContentCreator::class),
60
            'markdownDocumentParser' => $di->lazyGet(MarkdownDocumentParser::class),
61
            'markdownCmsConfig' => $this->config['markdown_cms'],
62
        ];
63
64
        $di->set(ContentCreator::class, $di->lazyNew(ContentCreator::class));
65
        $di->params[ContentCreator::class] = [
66
            'options' => $this->config['markdown_cms']['options']
67
        ];
68
69
        $di->set(ContentParser::class, $di->lazyNew(ContentParser::class));
70
        $di->params[ContentParser::class] = [
71
            'markdownFileIterator' => $di->lazyGet(MarkdownFileIterator::class),
72
            'contentCreator' => $di->lazyGet(ContentCreator::class),
73
            'markdownDocumentParser' => $di->lazyGet(MarkdownDocumentParser::class),
74
            'markdownOptions' => $this->config['markdown_cms']['options'],
75
76
        ];
77
78
        $di->set(MarkdownDocumentParser::class, $di->lazyNew(MarkdownDocumentParser::class));
79
        $di->params[MarkdownDocumentParser::class] = [
80
            'frontYamlParser' => $di->lazyGet(Parser::class)
81
        ];
82
83
        $di->set(MarkdownFileIterator::class, $di->lazyNew(MarkdownFileIterator::class, [
84
            'iterator' => $di->lazyNew(\RecursiveIteratorIterator::class, [
85
                'iterator' => $di->lazyNew(\RecursiveDirectoryIterator::class, [
86
                    'path' => $this->config['markdown_cms']['options']['content_dir'],
87
                    'flags' => null
88
                ]),
89
                'mode' => null,
90
                'flags' => null,
91
            ]),
92
            'regex' => '/^.+\.md$/i',
93
            'mode' => \RecursiveRegexIterator::MATCH,
94
            'flags' => null,
95
            'preg_flags'=> null
96
        ]));
97
98
        $di->set(Parser::class, $di->lazyNew(Parser::class, [
99
            'yamlParser' => null,
100
            'markdownParser' => $di->lazyNew(CommonMarkParser::class, [
101
                'commonMarkConverter' => $di->lazyNew(CommonMarkConverter::class)
102
            ])
103
        ]));
104
105
        $di->set(ParseContentCommand::class, $di->lazyNew(ParseContentCommand::class));
106
        $di->setters[ParseContentCommand::class] = [
107
            'setParseContentExecutor' => $di->lazyGet(ParseContentExecutor::class)
108
        ];
109
110
        $di->set(SaveContentConfigObserver::class, $di->lazyNew(SaveContentConfigObserver::class, [
111
            'configWriter' => $di->lazyNew(PhpArray::class),
112
            'targetPath' => $this->config['markdown_cms']['options']['content_config_path']
113
        ]));
114
115
        $di->set(SitemapObserver::class, $di->lazyNew(SitemapObserver::class, [
116
            'xmlWriter' => $di->lazyNew(\Sabre\Xml\Writer::class),
117
            'sitemapPath' => $this->config['markdown_cms']['options']['sitemap_path'],
118
            'baseUrl' => $this->config['markdown_cms']['options']['base_url']
119
        ]));
120
    }
121
122
    /**
123
     * Modify
124
     * {@inheritDoc}
125
     * @see \Aura\Di\ContainerConfigInterface::modify()
126
     */
127
    public function modify(Container $di)
128
    {
129
    }
130
}