Completed
Branch TemplateInspector (5726eb)
by Josh
09:25
created

Parser::isAllowed()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 0
cts 2
cp 0
rs 10
c 0
b 0
f 0
cc 2
eloc 2
nc 2
nop 1
crap 6
1
<?php
2
3
/**
4
* @package   s9e\TextFormatter
5
* @copyright Copyright (c) 2010-2017 The s9e Authors
6
* @license   http://www.opensource.org/licenses/mit-license.php The MIT License
7
*/
8
namespace s9e\TextFormatter\Plugins\Censor;
9
10
use s9e\TextFormatter\Plugins\ParserBase;
11
12
class Parser extends ParserBase
13
{
14
	/**
15
	* {@inheritdoc}
16
	*/
17
	public function parse($text, array $matches)
18
	{
19
		$tagName      = $this->config['tagName'];
20
		$attrName     = $this->config['attrName'];
21
		$replacements = (isset($this->config['replacements'])) ? $this->config['replacements'] : [];
22
		foreach ($matches as $m)
23
		{
24
			if ($this->isAllowed($m[0][0]))
25
			{
26
				continue;
27
			}
28
29
			$tag = $this->parser->addSelfClosingTag($tagName, $m[0][1], strlen($m[0][0]));
30
			foreach ($replacements as list($regexp, $replacement))
31
			{
32
				if (preg_match($regexp, $m[0][0]))
33
				{
34
					$tag->setAttribute($attrName, $replacement);
35
					break;
36
				}
37
			}
38
		}
39
	}
40
41
	/**
42
	* Test whether given word is allowed
43
	*
44
	* @param  string $word
45
	* @return bool
46
	*/
47
	protected function isAllowed($word)
48
	{
49
		return (isset($this->config['allowed']) && preg_match($this->config['allowed'], $word));
50
	}
51
}