Code Duplication    Length = 90-90 lines in 2 locations

src/Parser/Directives/CleanParamParser.php 1 location

@@ 12-101 (lines=90) @@
9
 *
10
 * @package vipnytt\RobotsTxtParser\Parser\Directives
11
 */
12
class CleanParamParser implements ParserInterface, RobotsTxtInterface
13
{
14
    use DirectiveParserCommons;
15
    use UrlParser;
16
17
    /**
18
     * Directive
19
     */
20
    const DIRECTIVE = self::DIRECTIVE_CLEAN_PARAM;
21
22
    /**
23
     * Clean-param array
24
     * @var array
25
     */
26
    private $array = [];
27
28
    /**
29
     * CleanParam constructor.
30
     */
31
    public function __construct()
32
    {
33
    }
34
35
    /**
36
     * Add
37
     *
38
     * @param string $line
39
     * @return bool
40
     */
41
    public function add($line)
42
    {
43
        // split into parameter and path
44
        $array = array_map('trim', mb_split('\s+', $line, 2));
45
        // strip any invalid characters from path prefix
46
        $path = isset($array[1]) ? $this->urlEncode(preg_replace('/[^A-Za-z0-9\.-\/\*\_]/', '', $array[1])) : "/";
47
        $param = array_map('trim', mb_split('&', $array[0]));
48
        foreach ($param as $key) {
49
            $this->array[$key][] = $path;
50
        }
51
        return true;
52
    }
53
54
    /**
55
     * Check
56
     *
57
     * @param  string $path
58
     * @return bool
59
     */
60
    public function check($path)
61
    {
62
        foreach ($this->array as $param => $paths) {
63
            if (
64
                (
65
                    mb_stripos($path, "?$param=") ||
66
                    mb_stripos($path, "&$param=")
67
                ) &&
68
                $this->checkPath($path, $paths)
69
            ) {
70
                return true;
71
            }
72
        }
73
        return false;
74
    }
75
76
    /**
77
     * Export rules
78
     *
79
     * @return string[][][]
80
     */
81
    public function export()
82
    {
83
        return empty($this->array) ? [] : [self::DIRECTIVE => $this->array];
84
    }
85
86
    /**
87
     * Render
88
     *
89
     * @return string[]
90
     */
91
    public function render()
92
    {
93
        $result = [];
94
        foreach ($this->array as $param => $paths) {
95
            foreach ($paths as $path) {
96
                $result[] = self::DIRECTIVE . ':' . $param . ' ' . $path;
97
            }
98
        }
99
        return $result;
100
    }
101
}
102

src/RobotsTxtParser/Core/Directives/CleanParam.php 1 location

@@ 13-102 (lines=90) @@
10
 *
11
 * @package vipnytt\RobotsTxtParser\Core\Directives
12
 */
13
class CleanParam implements DirectiveInterface, RobotsTxtInterface
14
{
15
    use Toolbox;
16
    use UrlParser;
17
18
    /**
19
     * Directive
20
     */
21
    const DIRECTIVE = self::DIRECTIVE_CLEAN_PARAM;
22
23
    /**
24
     * Clean-param array
25
     * @var array
26
     */
27
    protected $array = [];
28
29
    /**
30
     * CleanParam constructor.
31
     */
32
    public function __construct()
33
    {
34
    }
35
36
    /**
37
     * Add
38
     *
39
     * @param string $line
40
     * @return bool
41
     */
42
    public function add($line)
43
    {
44
        // split into parameter and path
45
        $array = array_map('trim', mb_split('\s+', $line, 2));
46
        // strip any invalid characters from path prefix
47
        $path = isset($array[1]) ? $this->urlEncode(preg_replace('/[^A-Za-z0-9\.-\/\*\_]/', '', $array[1])) : "/";
48
        $param = array_map('trim', mb_split('&', $array[0]));
49
        foreach ($param as $key) {
50
            $this->array[$key][] = $path;
51
        }
52
        return true;
53
    }
54
55
    /**
56
     * Check
57
     *
58
     * @param  string $path
59
     * @return bool
60
     */
61
    public function check($path)
62
    {
63
        foreach ($this->array as $param => $paths) {
64
            if (
65
                (
66
                    mb_stripos($path, "?$param=") ||
67
                    mb_stripos($path, "&$param=")
68
                ) &&
69
                $this->checkPath($path, $paths)
70
            ) {
71
                return true;
72
            }
73
        }
74
        return false;
75
    }
76
77
    /**
78
     * Export rules
79
     *
80
     * @return string[][][]
81
     */
82
    public function export()
83
    {
84
        return empty($this->array) ? [] : [self::DIRECTIVE => $this->array];
85
    }
86
87
    /**
88
     * Render
89
     *
90
     * @return string[]
91
     */
92
    public function render()
93
    {
94
        $result = [];
95
        foreach ($this->array as $param => $paths) {
96
            foreach ($paths as $path) {
97
                $result[] = self::DIRECTIVE . ':' . $param . ' ' . $path;
98
            }
99
        }
100
        return $result;
101
    }
102
}
103