Completed
Push — master ( cf0606...512c88 )
by Jan-Petter
04:57
created

RequestRate::add()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 17
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 17
rs 9.2
cc 4
eloc 12
nc 3
nop 1
1
<?php
2
namespace vipnytt\RobotsTxtParser\Parser\Directives;
3
4
use vipnytt\RobotsTxtParser\Parser\RobotsTxtInterface;
5
use vipnytt\RobotsTxtParser\Parser\Toolbox;
6
7
/**
8
 * Class RequestRate
9
 *
10
 * @package vipnytt\RobotsTxtParser\Parser\Directives
11
 */
12
class RequestRate implements DirectiveInterface, RobotsTxtInterface
13
{
14
    use Toolbox;
15
16
    /**
17
     * Directive
18
     */
19
    const DIRECTIVE = self::DIRECTIVE_VISIT_TIME;
20
21
    /**
22
     * RequestRate array
23
     * @var array
24
     */
25
    protected $array = [];
26
27
    /**
28
     * RequestRate constructor.
29
     */
30
    public function __construct()
31
    {
32
    }
33
34
    /**
35
     * Add
36
     *
37
     * @param string $line
38
     * @return bool
39
     */
40
    public function add($line)
41
    {
42
        $array = preg_split('/\s+/', $line, 2);
43
        $result = [
44
            'rate' => $this->draftParseRate($array[0]),
45
        ];
46
        if ($result['rate'] === false) {
47
            return false;
48
        } elseif (
49
            !empty($array[1]) &&
50
            ($times = $this->draftParseTime($array[1])) !== false
51
        ) {
52
            $result = array_merge($result, $times);
53
        }
54
        $this->array[] = $result;
55
        return true;
56
    }
57
58
    /**
59
     * Export
60
     *
61
     * @return array
62
     */
63
    public function export()
64
    {
65
        return empty($this->array) ? [] : [self::DIRECTIVE => $this->array];
66
    }
67
}
68