Completed
Push — master ( 069124...27e495 )
by Edson
02:00
created

Loop::repeat1()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1.4218

Importance

Changes 0
Metric Value
cc 1
eloc 8
nc 1
nop 0
dl 0
loc 15
ccs 2
cts 8
cp 0.25
crap 1.4218
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Sketch\Tpl\Tag;
4
5
class Loop extends Tag
6
{
7 2
    public function __construct()
8
    {
9 2
        $this->for1();
10 2
        $this->for2();
11
12 2
        $this->repeat1();
13 2
        $this->repeat2();
14 2
    }
15
16 2
    private function for1()
17
    {
18 2
        $search = "/{(\s?)+for(\s?)+([\w]+)(\s?)+:(\s?)+([\w\.]+)(\s?)+}(.*?){(\s?)+\/for(\s?)+}/is";
19
20
        Tag::match($search, function($right, $left, $content = "") {
21
            
22
            $left = str_replace('.', '->', $left);
23
24
            $res  = "<?php foreach ($$left as $$right) { ?>";
25
            $res .= $content;
26
            $res .= "<?php } ?>";
27
28
            Tag::replace($res);
29
30
            $this->for1();
31 2
        });
32 2
    }
33
34 2
    private function for2()
35
    {
36 2
        $search = "/{(\s?)+for(\s?)+([\$\w]+)(\s?)+=>(\s?)+([\$\w]+)(\s?)+:(\s?)+([\$\w]+)(\s?)+}(.*?){(\s?)+\/for(\s?)+}/is";
37
38
        Tag::match($search, function($key, $value, $left, $content = "") {
39
            
40
            $res  = "<?php foreach ($left as $key => $value) { ?>";
41
            $res .= $content;
42
            $res .= "<?php } ?>";
43
44
            Tag::replace($res);
45
46
            $this->for2();
47 2
        });
48 2
    }
49
50 2
    private function repeat1(): void
51
    {
52 2
        $search = "/{(\s?)+repeat (\s?)+([\d]+)(\s?)+}(.*?){(\s?)+\/repeat(\s?)+}/is";
53
54
        Tag::match($search, function($times, $content) {
55
56
            $var = "v".md5(microtime());
57
58
            $replace  = "<?php for (\$$var = 0; \$$var < $times; \$$var++) { ?>";
59
            $replace .= $content;
60
            $replace .= "<?php } ?>";
61
            
62
            Tag::replace($replace);
63
64
            $this->repeat1();
65 2
        });
66 2
    }
67
68 2
    private function repeat2(): void
69
    {
70 2
        $search = "/{(\s?)+repeat (\s?)+([\d]+)(\s?)+:(\s?)+([\w]+)(\s?)+}(.*?){(\s?)+\/repeat(\s?)+}/is";
71
72
        Tag::match($search, function($times, $var, $content) {
73
            
74
            $replace  = "<?php for (\$$var = 0; \$$var < $times; \$$var++) { ?>";
75
            $replace .= $content;
76
            $replace .= "<?php } ?>";
77
            
78
            Tag::replace($replace);
79
80
            $this->repeat2();
81 2
        });
82 2
    }
83
}
84