Completed
Push — master ( 55fdf1...0c48af )
by Johannes
02:35
created

ContainerConfig::modify()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 3
rs 10
cc 1
eloc 1
nc 1
nop 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
use Jolicht\MarkdownCms\Action\TagArchiveAction;
30
use Jolicht\MarkdownCms\ContentType\EntryParser;
31
use League\CommonMark\Environment;
32
use Jolicht\MarkdownCms\CommonMark\EnvironmentFactory;
33
use Jolicht\MarkdownCms\Markdown\Renderer\ImageRenderer;
34
35
class ContainerConfig implements ContainerConfigInterface
36
{
37
    /**
38
     * Config
39
     *
40
     * @var array
41
     */
42
    private $config;
43
44
    /**
45
     * Constructor
46
     *
47
     * @param array $config
48
     */
49
    public function __construct(array $config)
50
    {
51
        $this->config = $config;
52
    }
53
54
    /**
55
     * Get config
56
     *
57
     * @return array
58
     */
59
    public function getConfig() : array
60
    {
61
        return $this->config;
62
    }
63
64
    /**
65
     * Define
66
     * {@inheritDoc}
67
     * @see \Aura\Di\ContainerConfigInterface::define()
68
     */
69
    public function define(Container $di)
70
    {
71
        $di->set(\Sabre\Xml\Writer::class, $di->lazyNew(\Sabre\Xml\Writer::class));
72
73
        $di->set(BlogOverviewAction::class, $di->lazyNew(BlogOverviewAction::class, [
74
            'templateRenderer' => $di->lazyGet(TemplateRendererInterface::class),
75
            'entryParser' => $di->lazyGet(EntryParser::class),
76
            'markdownCmsConfig' => $this->config['markdown_cms'],
77
        ]));
78
79
        $di->set(SingleBlogEntryAction::class, $di->lazyNew(SingleBlogEntryAction::class, [
80
            'templateRenderer' => $di->lazyGet(TemplateRendererInterface::class),
81
            'entryParser' => $di->lazyGet(EntryParser::class),
82
            'markdownCmsConfig' => $this->config['markdown_cms'],
83
        ]));
84
85
        $di->set(TagArchiveAction::class, $di->lazyNew(TagArchiveAction::class, [
86
            'templateRenderer' => $di->lazyGet(TemplateRendererInterface::class),
87
            'entryParser' => $di->lazyGet(EntryParser::class),
88
            'markdownCmsConfig' => $this->config['markdown_cms'],
89
        ]));
90
91
        $di->set(ContentCreator::class, $di->lazyNew(ContentCreator::class, [
92
            'options' => $this->config['markdown_cms']['options']
93
        ]));
94
95
        $di->set(ContentParser::class, $di->lazyNew(ContentParser::class, [
96
            'markdownFileIterator' => $di->lazyGet(MarkdownFileIterator::class),
97
            'contentCreator' => $di->lazyGet(ContentCreator::class),
98
            'mdDocumentParser' => $di->lazyGet(MarkdownDocumentParser::class),
99
            'markdownOptions' => $this->config['markdown_cms']['options'],
100
        ]));
101
102
        $di->set(MarkdownDocumentParser::class, $di->lazyNew(MarkdownDocumentParser::class, [
103
            'frontYamlParser' => $di->lazyGet(Parser::class)
104
        ]));
105
106
        $di->set(MarkdownFileIterator::class, $di->lazyNew(MarkdownFileIterator::class, [
107
            'iterator' => $di->lazyNew(\RecursiveIteratorIterator::class, [
108
                'iterator' => $di->lazyNew(\RecursiveDirectoryIterator::class, [
109
                    'path' => $this->config['markdown_cms']['options']['content_dir'],
110
                    'flags' => null
111
                ]),
112
                'mode' => null,
113
                'flags' => null,
114
            ]),
115
            'regex' => '/^.+\.md$/i',
116
            'mode' => \RecursiveRegexIterator::MATCH,
117
            'flags' => null,
118
            'preg_flags'=> null
119
        ]));
120
121
        $di->set(ImageRenderer::class, $di->lazyNew(ImageRenderer::class, [
122
            'urlTranslation' => $this->config['markdown_cms']['options']['url_translation']
123
        ]));
124
125
126
        $di->set(EnvironmentFactory::class, $di->lazyNew(EnvironmentFactory::class));
127
        $di->set(Environment::class, $di->lazyGetCall(EnvironmentFactory::class, '__invoke', $di));
128
129
        $di->set(Parser::class, $di->lazyNew(Parser::class, [
130
            'yamlParser' => null,
131
            'markdownParser' => $di->lazyNew(CommonMarkParser::class, [
132
                'commonMarkConverter' => $di->lazyNew(CommonMarkConverter::class, [
133
                    'environment' => $di->lazyGet(Environment::class)
134
                ])
135
            ])
136
        ]));
137
138
        $di->set(ParseContentCommand::class, $di->lazyNew(ParseContentCommand::class));
139
        $di->setters[ParseContentCommand::class] = [
140
            'setParseContentExecutor' => $di->lazyGet(ParseContentExecutor::class)
141
        ];
142
143
        $di->set(SaveContentConfigObserver::class, $di->lazyNew(SaveContentConfigObserver::class, [
144
            'configWriter' => $di->lazyNew(PhpArray::class),
145
            'targetPath' => $this->config['markdown_cms']['options']['content_config_path']
146
        ]));
147
148
        $di->set(SitemapObserver::class, $di->lazyNew(SitemapObserver::class, [
149
            'xmlWriter' => $di->lazyNew(\Sabre\Xml\Writer::class),
150
            'sitemapPath' => $this->config['markdown_cms']['options']['sitemap_path'],
151
            'baseUrl' => $this->config['markdown_cms']['options']['base_url']
152
        ]));
153
154
        $di->set(EntryParser::class, $di->lazyNew(EntryParser::class, [
155
            'contentCreator' => $di->lazyGet(ContentCreator::class),
156
            'mdDocumentParser' => $di->lazyGet(MarkdownDocumentParser::class),
157
            'config' => $this->config['markdown_cms']['content']['all'],
158
            'contentDir' => $this->config['markdown_cms']['options']['content_dir']
159
        ]));
160
    }
161
162
    /**
163
     * Modify
164
     * {@inheritDoc}
165
     * @see \Aura\Di\ContainerConfigInterface::modify()
166
     */
167
    public function modify(Container $di)
168
    {
169
    }
170
}