Completed
Push — master ( 166bd7...2a4290 )
by Nico
01:28
created

JavaScript   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 0
dl 0
loc 61
ccs 34
cts 34
cp 1
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
B getDefinition() 0 34 1
A getInternalFunctions() 0 7 1
A getInternalMethods() 0 15 1
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * @license     http://opensource.org/licenses/mit-license.php MITnamespace nicoSWD\Rules\Grammar;
7
 * @link        https://github.com/nicoSWD
8
 * @author      Nicolas Oelgart <[email protected]>use nicoSWD\Rules\Tokenizer;
9
 */
10
namespace nicoSWD\Rules\Grammar\JavaScript;
11
12
use nicoSWD\Rules\Grammar;
13
use nicoSWD\Rules\Token;
14
15
class JavaScript implements Grammar
16
{
17 232
    public function getDefinition(): array
18
    {
19
        return [
20 232
            [Token::AND, '&&', 145],
21 232
            [Token::OR, '\|\|', 140],
22 232
            [Token::NOT_EQUAL_STRICT, '!==', 135],
23 232
            [Token::NOT_EQUAL, '<>|!=', 130],
24 232
            [Token::EQUAL_STRICT, '===', 125],
25 232
            [Token::EQUAL, '==', 120],
26 232
            [Token::IN, '\bin\b', 115],
27 232
            [Token::BOOL, '\b(?:true|false)\b', 110],
28 232
            [Token::NULL, '\bnull\b', 105],
29 232
            [Token::METHOD, '\.\s*[a-zA-Z_]\w*\s*\(', 100],
30 232
            [Token::FUNCTION, '[a-zA-Z_]\w*\s*\(', 95],
31 232
            [Token::FLOAT, '-?\d+(?:\.\d+)', 90],
32 232
            [Token::INTEGER, '-?\d+', 85],
33 232
            [Token::ENCAPSED_STRING, '"[^"]*"|\'[^\']*\'', 80],
34 232
            [Token::SMALLER_EQUAL, '<=', 75],
35 232
            [Token::GREATER_EQUAL, '>=', 70],
36 232
            [Token::SMALLER, '<', 65],
37 232
            [Token::GREATER, '>', 60],
38 232
            [Token::OPENING_PARENTHESIS, '\(', 55],
39 232
            [Token::CLOSING_PARENTHESIS, '\)', 50],
40 232
            [Token::OPENING_ARRAY, '\[', 45],
41 232
            [Token::CLOSING_ARRAY, '\]', 40],
42 232
            [Token::COMMA, ',', 35],
43 232
            [Token::REGEX, '/[^/\*].*/[igm]{0,3}', 30],
44 232
            [Token::COMMENT, '//[^\r\n]*|/\*.*?\*/', 25],
45 232
            [Token::NEWLINE, '\r?\n', 20],
46 232
            [Token::SPACE, '\s+', 15],
47 232
            [Token::TOKEN_VARIABLE, '[a-zA-Z_]\w*', 10],
48 232
            [Token::UNKNOWN, '.', 5],
49
        ];
50
    }
51
52 26
    public function getInternalFunctions(): array
53
    {
54
        return [
55 26
            Functions\ParseInt::class,
56
            Functions\ParseFloat::class,
57
        ];
58
    }
59
60 108
    public function getInternalMethods(): array
61
    {
62
        return [
63 108
            'charAt'      => Methods\CharAt::class,
64
            'concat'      => Methods\Concat::class,
65
            'indexOf'     => Methods\IndexOf::class,
66
            'join'        => Methods\Join::class,
67
            'replace'     => Methods\Replace::class,
68
            'split'       => Methods\Split::class,
69
            'substr'      => Methods\Substr::class,
70
            'test'        => Methods\Test::class,
71
            'toLowerCase' => Methods\ToLowerCase::class,
72
            'toUpperCase' => Methods\ToUpperCase::class,
73
        ];
74
    }
75
}