Tocantins   A
last analyzed

Complexity

Total Complexity 12

Size/Duplication

Total Lines 102
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 18
dl 0
loc 102
ccs 25
cts 25
cp 1
rs 10
c 1
b 0
f 1
wmc 12

11 Methods

Rating   Name   Duplication   Size   Complexity  
A extractCheckerDigit() 0 3 1
A extractBaseNumber() 0 3 1
A getRegex() 0 3 1
A defineStrategy() 0 5 2
A calculateDigit() 0 3 1
A __construct() 0 3 1
A normalizeNumber() 0 5 1
A getState() 0 3 1
A getLength() 0 3 1
A getFormat() 0 3 1
A getNumberOfDigits() 0 3 1
1
<?php
2
3
namespace Brazanation\Documents\StateRegistration;
4
5
use Brazanation\Documents\StateRegistration\Tocantins\Eleven;
6
use Brazanation\Documents\StateRegistration\Tocantins\Nine;
7
8
class Tocantins implements StateInterface
9
{
10
    const LONG_NAME = 'Tocantins';
11
12
    const SHORT_NAME = 'TO';
13
14
    /**
15
     * @var State
16
     */
17
    private $calculation;
18
19 18
    public function __construct()
20
    {
21 18
        $this->calculation = new Eleven();
22
    }
23
24
    /**
25
     * {@inheritdoc}
26
     */
27 18
    public function getState() : string
28
    {
29 18
        return $this->calculation->getState();
30
    }
31
32
    /**
33
     * {@inheritdoc}
34
     */
35 18
    public function getLength() : int
36
    {
37 18
        return $this->calculation->getLength();
38
    }
39
40
    /**
41
     * {@inheritdoc}
42
     */
43 2
    public function getRegex() : string
44
    {
45 2
        return $this->calculation->getRegex();
46
    }
47
48
    /**
49
     * {@inheritdoc}
50
     */
51 2
    public function getFormat() : string
52
    {
53 2
        return $this->calculation->getFormat();
54
    }
55
56
    /**
57
     * {@inheritdoc}
58
     */
59 18
    public function getNumberOfDigits() : int
60
    {
61 18
        return $this->calculation->getNumberOfDigits();
62
    }
63
64
    /**
65
     * {@inheritdoc}
66
     */
67 18
    public function normalizeNumber(string $number) : string
68
    {
69 18
        $this->defineStrategy($number);
70
71 18
        return $this->calculation->normalizeNumber($number);
72
    }
73
74
    /**
75
     * {@inheritdoc}
76
     */
77 18
    public function extractBaseNumber(string $number) : string
78
    {
79 18
        return $this->calculation->extractBaseNumber($number);
80
    }
81
82
    /**
83
     * {@inheritdoc}
84
     */
85 18
    public function extractCheckerDigit(string $number) : string
86
    {
87 18
        return $this->calculation->extractCheckerDigit($number);
88
    }
89
90
    /**
91
     * {@inheritdoc}
92
     *
93
     * @see http://www.sintegra.gov.br/Cad_Estados/cad_TO.html
94
     */
95 16
    public function calculateDigit(string $baseNumber) : string
96
    {
97 16
        return $this->calculation->calculateDigit($baseNumber);
98
    }
99
100
    /**
101
     * It will load calculation strategy based on number format.
102
     *
103
     * @param string $number Number of document.
104
     */
105 18
    private function defineStrategy(string $number)
106
    {
107 18
        $number = preg_replace('/\D/', '', $number);
108 18
        if (strlen($number) == 9) {
109 10
            $this->calculation = new Nine();
110
        }
111
    }
112
}
113