Mercurial > hg > isophonics-drupal-site
view vendor/consolidation/output-formatters/src/Formatters/StringFormatter.php @ 9:1fc0ff908d1f
Add another data file
author | Chris Cannam |
---|---|
date | Mon, 05 Feb 2018 12:34:32 +0000 |
parents | 4c8ae668cc8c |
children | 129ea1e6d783 |
line wrap: on
line source
<?php namespace Consolidation\OutputFormatters\Formatters; use Consolidation\OutputFormatters\Validate\ValidationInterface; use Consolidation\OutputFormatters\Options\OverrideOptionsInterface; use Consolidation\OutputFormatters\Options\FormatterOptions; use Consolidation\OutputFormatters\Validate\ValidDataTypesTrait; use Symfony\Component\Console\Output\OutputInterface; use Consolidation\OutputFormatters\StructuredData\RestructureInterface; /** * String formatter * * This formatter is used as the default action when no * particular formatter is requested. It will print the * provided data only if it is a string; if any other * type is given, then nothing is printed. */ class StringFormatter implements FormatterInterface, ValidationInterface, OverrideOptionsInterface { /** * All data types are acceptable. */ public function isValidDataType(\ReflectionClass $dataType) { return true; } /** * @inheritdoc */ public function write(OutputInterface $output, $data, FormatterOptions $options) { if (is_string($data)) { return $output->writeln($data); } return $this->reduceToSigleFieldAndWrite($output, $data, $options); } /** * @inheritdoc */ public function overrideOptions($structuredOutput, FormatterOptions $options) { $defaultField = $options->get(FormatterOptions::DEFAULT_STRING_FIELD, [], ''); $userFields = $options->get(FormatterOptions::FIELDS, [FormatterOptions::FIELDS => $options->get(FormatterOptions::FIELD)]); $optionsOverride = $options->override([]); if (empty($userFields) && !empty($defaultField)) { $optionsOverride->setOption(FormatterOptions::FIELDS, $defaultField); } return $optionsOverride; } /** * If the data provided to a 'string' formatter is a table, then try * to emit it as a TSV value. * * @param OutputInterface $output * @param mixed $data * @param FormatterOptions $options */ protected function reduceToSigleFieldAndWrite(OutputInterface $output, $data, FormatterOptions $options) { $alternateFormatter = new TsvFormatter(); try { $data = $alternateFormatter->validate($data); $alternateFormatter->write($output, $data, $options); } catch (\Exception $e) { } } /** * Always validate any data, though. This format will never * cause an error if it is selected for an incompatible data type; at * worse, it simply does not print any data. */ public function validate($structuredData) { return $structuredData; } }