setDecorated(false); parent::__construct($input, $output); } /** * @param string|iterable $messages */ #[\Override] public function write(string|iterable $messages, bool $newline = false, int $options = 0): void { parent::write($this->clean($messages), $newline, $options); } /** * @param string|iterable $messages */ #[\Override] public function writeln(string|iterable $messages, int $type = self::OUTPUT_NORMAL): void { parent::writeln($this->clean($messages), $type); } /** * @param string|iterable $messages * @return string|list */ private function clean(string|iterable $messages): string|array { $formatter = self::$formatter ??= new OutputFormatter(false); $strip = fn (string $m): string => OutputCleaner::clean((string) $formatter->format($m)); if (is_string($messages)) { return $strip($messages); } return array_values(array_map($strip, [...$messages])); } }