Version 1
[yaffs-website] / vendor / drupal / console-core / src / Style / DrupalStyle.php
diff --git a/vendor/drupal/console-core/src/Style/DrupalStyle.php b/vendor/drupal/console-core/src/Style/DrupalStyle.php
new file mode 100644 (file)
index 0000000..636b3e8
--- /dev/null
@@ -0,0 +1,269 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\Console\Core\Style\DrupalStyle.
+ */
+
+namespace Drupal\Console\Core\Style;
+
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Question\ChoiceQuestion;
+use Symfony\Component\Console\Question\Question;
+use Symfony\Component\Console\Style\SymfonyStyle;
+use Symfony\Component\Console\Helper\Table;
+use Drupal\Console\Core\Helper\DrupalChoiceQuestionHelper;
+
+/**
+ * Class DrupalStyle
+ * @package Drupal\Console\Core\Style
+ */
+class DrupalStyle extends SymfonyStyle
+{
+    /**
+     * @var InputInterface
+     */
+    private $input;
+
+    /**
+     * @param InputInterface  $input
+     * @param OutputInterface $output
+     */
+    public function __construct(InputInterface $input, OutputInterface $output)
+    {
+        $this->input = $input;
+        parent::__construct($input, $output);
+    }
+
+    /**
+     * @param string $question
+     * @param array  $choices
+     * @param mixed  $default
+     * @param bool   $allowEmpty
+     *
+     * @return string
+     */
+    public function choiceNoList($question, array $choices, $default = null, $allowEmpty = false)
+    {
+        if ($allowEmpty) {
+            $default = ' ';
+        }
+
+        if (is_null($default)) {
+            $default = current($choices);
+        }
+
+        if (!in_array($default, $choices)) {
+            $choices[] = $default;
+        }
+
+        if (null !== $default) {
+            $values = array_flip($choices);
+            $default = $values[$default];
+        }
+
+        return trim($this->askChoiceQuestion(new ChoiceQuestion($question, $choices, $default)));
+    }
+
+    /**
+     * @param string $question
+     * @param array  $choices
+     * @param null   $default
+     * @param bool   $multiple
+     *
+     * @return string
+     */
+    public function choice($question, array $choices, $default = null, $multiple = false)
+    {
+        if (null !== $default) {
+            $values = array_flip($choices);
+            $default = $values[$default];
+        }
+
+        $choiceQuestion = new ChoiceQuestion($question, $choices, $default);
+        $choiceQuestion->setMultiselect($multiple);
+
+        return $this->askQuestion($choiceQuestion);
+    }
+
+    /**
+     * @param ChoiceQuestion $question
+     *
+     * @return string
+     */
+    public function askChoiceQuestion(ChoiceQuestion $question)
+    {
+        $questionHelper = new DrupalChoiceQuestionHelper();
+        $answer = $questionHelper->ask($this->input, $this, $question);
+
+        return $answer;
+    }
+
+    /**
+     * @param $question
+     *
+     * @return string
+     */
+    public function askHiddenEmpty($question)
+    {
+        $question = new Question($question, ' ');
+        $question->setHidden(true);
+
+        return trim($this->askQuestion($question));
+    }
+
+    /**
+     * @param string        $question
+     * @param null|callable $validator
+     *
+     * @return string
+     */
+    public function askEmpty($question, $validator = null)
+    {
+        $question = new Question($question, ' ');
+        $question->setValidator($validator);
+
+        return trim($this->askQuestion($question));
+    }
+
+    /**
+     * @param $message
+     * @param bool    $newLine
+     */
+    public function info($message, $newLine = true)
+    {
+        $message = sprintf('<info> %s</info>', $message);
+        if ($newLine) {
+            $this->writeln($message);
+        } else {
+            $this->write($message);
+        }
+    }
+
+    /**
+     * @param array|string $message
+     * @param bool         $newLine
+     */
+    public function comment($message, $newLine = true)
+    {
+        $message = sprintf('<comment> %s</comment>', $message);
+        if ($newLine) {
+            $this->writeln($message);
+        } else {
+            $this->write($message);
+        }
+    }
+
+    /**
+     * @param $message
+     */
+    public function commentBlock($message)
+    {
+        $this->block(
+            $message, null,
+            'bg=yellow;fg=black',
+            ' ',
+            true
+        );
+    }
+
+    /**
+     * @param array  $headers
+     * @param array  $rows
+     * @param string $style
+     */
+    public function table(array $headers, array $rows, $style = 'symfony-style-guide')
+    {
+        $headers = array_map(
+            function ($value) {
+                return sprintf('<info>%s</info>', $value);
+            }, $headers
+        );
+
+        if (!is_array(current($rows))) {
+            $rows = array_map(
+                function ($row) {
+                    return [$row];
+                },
+                $rows
+            );
+        }
+
+        $table = new Table($this);
+        $table->setHeaders($headers);
+        $table->setRows($rows);
+        $table->setStyle($style);
+
+        $table->render();
+        $this->newLine();
+    }
+
+    /**
+     * @param $message
+     * @param bool    $newLine
+     */
+    public function simple($message, $newLine = true)
+    {
+        $message = sprintf(' %s', $message);
+        if ($newLine) {
+            $this->writeln($message);
+        } else {
+            $this->write($message);
+        }
+    }
+
+    /**
+     * @param array|string $message
+     */
+    public function text($message)
+    {
+        $message = sprintf('// %s', $message);
+        parent::text($message);
+    }
+
+    public function successLite($message, $newLine = false) {
+        $message = sprintf('<info>✔</info> %s', $message);
+        parent::text($message);
+        if ($newLine){
+            parent::newLine();
+        }
+    }
+
+    public function errorLite($message, $newLine = false) {
+        $message = sprintf('<fg=red>✘</> %s', $message);
+        parent::text($message);
+        if ($newLine){
+            parent::newLine();
+        }
+    }
+
+    public function warningLite($message, $newLine = false) {
+        $message = sprintf('<comment>!</comment> %s', $message);
+        parent::text($message);
+        if ($newLine){
+            parent::newLine();
+        }
+    }
+
+    public function customLite($message, $prefix = '*', $style = '', $newLine = false) {
+        if ($style) {
+            $message = sprintf(
+                '<%s>%s</%s> %s',
+                $style,
+                $prefix,
+                $style,
+                $message
+            );
+        } else {
+            $message = sprintf(
+                '%s %s',
+                $prefix,
+                $message
+            );
+        }
+        parent::text($message);
+        if ($newLine){
+            parent::newLine();
+        }
+    }
+}