Completed
Push — 183-default-layout-ext ( a97107 )
by
unknown
10:37
created

FoldersExtension::hydrate()   A

Complexity

Conditions 2
Paths 1

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 8
nc 1
nop 0
dl 0
loc 15
rs 9.4285
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