Completed
Push — extensions ( 84a6ae )
by
unknown
22:00 queued 07:01
created

FoldersExtension::register()   B

Complexity

Conditions 3
Paths 1

Size

Total Lines 31
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 22
nc 1
nop 1
dl 0
loc 31
rs 8.8571
c 0
b 0
f 0
1
<?php
2
3
namespace League\Plates\Extension\Folders;
4
5
use League\Plates;
6
7
final class FoldersExtension implements Plates\Extension
8
{
9
    public function register(Plates\Engine $plates) {
10
        $c = $plates->getContainer();
11
        $c->merge('config', [
12
            'folder_separator' => '::',
13
        ]);
14
        $c->add('folders.folders', []);
15
        $c->wrap('path.resolvePath.stack', function($stack, $c) {
16
            $config = $c;
17
            return array_merge([
18
                'folders' => foldersResolvePath(
19
                    $c->get('folders.folders'),
20
                    $c->get('config')['folder_separator'],
21
                    $c->get('fileExists')
22
                )
23
            ], $stack);
24
        });
25
        $plates->addMethods([
26
            'addFolder' => function($plates, $folder, $prefixes, $fallback = false) {
27
                $prefixes = is_string($prefixes) ? [$prefixes] : $prefixes;
28
                if ($fallback) {
29
                    $prefixes[] = '';
30
                }
31
                $plates->getContainer()->merge('folders.folders', [
32
                    $folder => [
33
                        'folder' => $folder,
34
                        'prefixes' => $prefixes,
35
                    ]
36
                ]);
37
            },
38
        ]);
39
    }
40
}
41