Completed
Push — master ( 4b5f07...957ab2 )
by Kacper
03:07
created

Language::byMime()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
ccs 0
cts 2
cp 0
rs 10
cc 1
eloc 2
nc 1
nop 2
crap 2
1
<?php
2
/**
3
 * Highlighter
4
 *
5
 * Copyright (C) 2016, Some right reserved.
6
 *
7
 * @author Kacper "Kadet" Donat <[email protected]>
8
 *
9
 * Contact with author:
10
 * Xmpp: [email protected]
11
 * E-mail: [email protected]
12
 *
13
 * From Kadet with love.
14
 */
15
namespace Kadet\Highlighter\Language;
16
17
use Kadet\Highlighter\KeyLighter;
18
use Kadet\Highlighter\Parser\Rule;
19
use Kadet\Highlighter\Parser\TokenIterator;
20
use Kadet\Highlighter\Parser\Tokens;
21
22
23
/**
24
 * Class Language
25
 *
26
 * @package Kadet\Highlighter\Language
27
 */
28
abstract class Language
29
{
30
    const EMBEDDED_BY_PARENT = 2;
31
    const EMBEDDED           = true;
32
    const NOT_EMBEDDED       = false;
33
    
34
    /**
35
     * Parses source and removes wrong tokens.
36
     *
37
     * @param TokenIterator|string $tokens
38
     *
39
     * @param array                $additional
40
     * @param bool                 $embedded
41
     *
42
     * @return Tokens
43
     */
44
    public abstract function parse($tokens = null, $additional = [], $embedded = false);
45
46
    public abstract function tokenize($source, $additional = [], $offset = 0, $embedded = false);
47
48
    /**
49
     * Unique language identifier, for example 'php'
50
     *
51
     * @return string
52
     */
53
    public abstract function getIdentifier();
54
55
    /**
56
     * Language range Rule(s)
57
     *
58
     * @param $embedded
59
     *
60
     * @return Rule|\Kadet\Highlighter\Parser\Rule[]
61
     */
62
    public abstract function getEnds($embedded = false);
63
64
    /**
65
     * @return Language[]
66
     */
67
    public abstract function getEmbedded();
68
69
    /**
70
     * @param Language $lang
71
     */
72
    public abstract function embed(Language $lang);
73
74
    public static function byName($name, $params)
75
    {
76
        return KeyLighter::get()->languageByName($name, $params);
77
    }
78
79
    public static function byMime($mime, $params)
80
    {
81
        return KeyLighter::get()->languageByMime($mime, $params);
82
    }
83
84
    public static function byFileName($filename, $params)
85
    {
86
        return KeyLighter::get()->languageByExt($filename, $params);
87
    }
88
}
89