QRString::dump()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 14
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 9
nc 3
nop 1
dl 0
loc 14
rs 9.9666
c 0
b 0
f 0
1
<?php
2
/**
3
 * Class QRString
4
 *
5
 * @created      05.12.2015
6
 * @author       Smiley <[email protected]>
7
 * @copyright    2015 Smiley
8
 * @license      MIT
9
 *
10
 * @noinspection PhpUnusedParameterInspection
11
 * @noinspection PhpComposerExtensionStubsInspection
12
 */
13
14
namespace chillerlan\QRCode\Output;
15
16
use function implode, is_string, json_encode;
17
18
/**
19
 * Converts the matrix data into string types
20
 */
21
class QRString extends QROutputAbstract{
22
23
	/**
24
	 * @inheritDoc
25
	 */
26
	public static function moduleValueIsValid($value):bool{
27
		return is_string($value);
28
	}
29
30
	/**
31
	 * @inheritDoc
32
	 */
33
	protected function prepareModuleValue($value):string{
34
		return $value;
35
	}
36
37
	/**
38
	 * @inheritDoc
39
	 */
40
	protected function getDefaultModuleValue(bool $isDark):string{
41
		return ($isDark) ? $this->options->textDark : $this->options->textLight;
42
	}
43
44
	/**
45
	 * @inheritDoc
46
	 */
47
	public function dump(string $file = null):string{
48
49
		switch($this->options->outputType){
50
			case QROutputInterface::STRING_TEXT:
51
				$data = $this->text();
52
				break;
53
			case QROutputInterface::STRING_JSON:
54
			default:
55
				$data = $this->json();
56
		}
57
58
		$this->saveToFile($data, $file);
59
60
		return $data;
61
	}
62
63
	/**
64
	 * string output
65
	 */
66
	protected function text():string{
67
		$str = [];
68
69
		for($y = 0; $y < $this->moduleCount; $y++){
70
			$r = [];
71
72
			for($x = 0; $x < $this->moduleCount; $x++){
73
				$r[] = $this->getModuleValueAt($x, $y);
74
			}
75
76
			$str[] = implode('', $r);
77
		}
78
79
		return implode($this->options->eol, $str);
0 ignored issues
show
Bug introduced by
It seems like $this->options->eol can also be of type null; however, parameter $glue of implode() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

79
		return implode(/** @scrutinizer ignore-type */ $this->options->eol, $str);
Loading history...
80
	}
81
82
	/**
83
	 * JSON output
84
	 */
85
	protected function json():string{
86
		return json_encode($this->matrix->getMatrix());
87
	}
88
89
}
90