* @copyright 2015 Smiley * @license MIT * * @noinspection PhpUnusedParameterInspection * @noinspection PhpComposerExtensionStubsInspection */ namespace chillerlan\QRCode\Output; use function implode, is_string, json_encode; /** * Converts the matrix data into string types */ class QRString extends QROutputAbstract{ /** * @inheritDoc */ public static function moduleValueIsValid($value):bool{ return is_string($value); } /** * @inheritDoc */ protected function prepareModuleValue($value):string{ return $value; } /** * @inheritDoc */ protected function getDefaultModuleValue(bool $isDark):string{ return ($isDark) ? $this->options->textDark : $this->options->textLight; } /** * @inheritDoc */ public function dump(string $file = null):string{ switch($this->options->outputType){ case QROutputInterface::STRING_TEXT: $data = $this->text(); break; case QROutputInterface::STRING_JSON: default: $data = $this->json(); } $this->saveToFile($data, $file); return $data; } /** * string output */ protected function text():string{ $str = []; foreach($this->matrix->getMatrix() as $row){ $r = []; foreach($row as $M_TYPE){ $r[] = $this->moduleValues[$M_TYPE]; } $str[] = implode('', $r); } return implode($this->options->eol, $str); } /** * JSON output */ protected function json():string{ return json_encode($this->matrix->getMatrix()); } }