ContainerConfig   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 146
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

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

4 Methods

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