Cloning   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 12
dl 0
loc 26
rs 10
c 0
b 0
f 0
wmc 4

1 Method

Rating   Name   Duplication   Size   Complexity  
A from() 0 19 4
1
<?php
2
/**
3
 * Valid clone
4
 * User: moyo
5
 * Date: 2018/6/4
6
 * Time: 3:26 PM
7
 */
8
9
namespace Carno\Validator\Valid;
10
11
class Cloning
12
{
13
    /**
14
     * @param string $expr
15
     * @param Executor $to
16
     * @param Named $repo
17
     */
18
    public function from(string $expr, Executor $to, Named $repo) : void
19
    {
20
        $named = trim(substr($expr, 0, $fwp = strpos($expr, ' ')));
21
        $expr = trim(substr($expr, $fwp + 1));
22
23
        // named field [expr]
24
        if ($swp = strpos($expr, ' ')) {
25
            $field = trim(substr($expr, 0, $swp));
26
        } else {
27
            $field = $expr;
28
            $expr = '';
29
        }
30
31
        $fn = function (Rule $rule) use ($to, $field, $expr) {
32
            $to->import(new Rule($field, $rule->v(), $rule->e()));
33
            $expr && $to->analyzing($expr);
34
        };
35
36
        $repo->has($named) ? $fn($repo->get($named)) : $repo->wait($named, $fn);
37
    }
38
}
39