JavaScript::getInternalMethods()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 13
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 15
rs 9.8333
ccs 1
cts 1
cp 1
crap 1
1
<?php declare(strict_types=1);
2
3
/**
4
 * @license     http://opensource.org/licenses/mit-license.php MIT
5
 * @link        https://github.com/nicoSWD
6
 * @author      Nicolas Oelgart <[email protected]>
7
 */
8
namespace nicoSWD\Rule\Grammar\JavaScript;
9
10
use nicoSWD\Rule\Grammar\Grammar;
11
use nicoSWD\Rule\TokenStream\Token\Token;
12
13
final class JavaScript extends Grammar
14
{
15 10
    public function getDefinition(): array
16
    {
17
        return [
18 10
            [Token::AND, '&&', 145],
19 10
            [Token::OR, '\|\|', 140],
20 10
            [Token::NOT_EQUAL_STRICT, '!==', 135],
21 10
            [Token::NOT_EQUAL, '<>|!=', 130],
22 10
            [Token::EQUAL_STRICT, '===', 125],
23 10
            [Token::EQUAL, '==', 120],
24 10
            [Token::IN, '\bin\b', 115],
25 10
            [Token::NOT_IN, '\bnot\s+in\b', 116],
26 10
            [Token::BOOL_TRUE, '\btrue\b', 110],
27 10
            [Token::BOOL_FALSE, '\bfalse\b', 111],
28 10
            [Token::NULL, '\bnull\b', 105],
29
            [Token::METHOD, '\.\s*[a-zA-Z_]\w*\s*\(', 100],
30 10
            [Token::FUNCTION, '[a-zA-Z_]\w*\s*\(', 95],
31 10
            [Token::FLOAT, '-?\d+(?:\.\d+)', 90],
32 10
            [Token::INTEGER, '-?\d+', 85],
33 10
            [Token::ENCAPSED_STRING, '"[^"]*"|\'[^\']*\'', 80],
34 10
            [Token::SMALLER_EQUAL, '<=', 75],
35 10
            [Token::GREATER_EQUAL, '>=', 70],
36 10
            [Token::SMALLER, '<', 65],
37 10
            [Token::GREATER, '>', 60],
38 10
            [Token::OPENING_PARENTHESIS, '\(', 55],
39 10
            [Token::CLOSING_PARENTHESIS, '\)', 50],
40 10
            [Token::OPENING_ARRAY, '\[', 45],
41 10
            [Token::CLOSING_ARRAY, '\]', 40],
42 10
            [Token::COMMA, ',', 35],
43 10
            [Token::REGEX, '/[^/\*].*/[igm]{0,3}', 30],
44 10
            [Token::COMMENT, '//[^\r\n]*|/\*.*?\*/', 25],
45 10
            [Token::NEWLINE, '\r?\n', 20],
46 10
            [Token::SPACE, '\s+', 15],
47 10
            [Token::VARIABLE, '[a-zA-Z_]\w*', 10],
48
            [Token::UNKNOWN, '.', 5],
49
        ];
50
    }
51 26
52
    public function getInternalFunctions(): array
53
    {
54 26
        return [
55
            'parseInt' => Functions\ParseInt::class,
56
            'parseFloat' => Functions\ParseFloat::class,
57
        ];
58
    }
59 122
60
    public function getInternalMethods(): array
61
    {
62 122
        return [
63
            '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
            'startsWith' => Methods\StartsWith::class,
74
            'endsWith' => Methods\EndsWith::class,
75
        ];
76
    }
77
}
78