Exemplo n.º 1
0
 /**
  * Transform text to bash format
  *
  * @param       $text
  * @param array $options
  *
  * @return string
  * @throws InvalidArgumentException
  */
 public static function transformText($text, $options = array())
 {
     foreach ($options as $option) {
         $invalid = !ForegroundColor::isValid($option);
         $invalid = $invalid && !BackgroundColor::isValid($option);
         $invalid = $invalid && !TextEffect::isValid($option);
         $invalid = $invalid && !TextReset::isValid($option);
         if ($invalid) {
             throw new InvalidArgumentException('Invalid option provided');
         }
         if (TextReset::isValid($option)) {
             $text .= self::getOption($option);
         } else {
             $text = self::getOption($option) . $text;
         }
     }
     return $text;
 }
 /**
  * Parse short codes
  *
  * @param                     $attributes
  * @param null                $content
  * @param null                $tag
  * @param ShortCodesProcessor $processor
  *
  * @return mixed|null|string
  */
 private function parseShortCodes($attributes, $content = null, $tag = null, ShortCodesProcessor $processor = null)
 {
     $content = $this->shortCodesProcessor->parseContent($content);
     $backgroundColors = BackgroundColor::getMap();
     $foregroundColors = ForegroundColor::getMap();
     $textEffects = TextEffect::getMap();
     $options = [];
     switch ($tag) {
         case "format":
             $backgroundColor = strtoupper(isset($attributes['background']) ? $attributes['background'] : 'system');
             $foregroundColor = strtoupper(isset($attributes['foreground']) ? $attributes['foreground'] : 'system');
             $effects = isset($attributes['effects']) ? explode(" ", $attributes['effects']) : array();
             $options[] = $backgroundColors->get($backgroundColor)->getOrElse(BackgroundColor::SYSTEM);
             $options[] = $foregroundColors->get($foregroundColor)->getOrElse(ForegroundColor::SYSTEM);
             foreach ($effects as $effect) {
                 $effect = strtoupper($effect);
                 if ($textEffects->containsKey($effect)) {
                     $options[] = $textEffects->get($effect)->get();
                 }
             }
             $options[] = TextReset::ALL;
             $content = StringTransformer::transformText($content, $options);
             break;
         case "center":
             $sizes = Bash::getScreenSizes();
             $content = str_pad($content, $sizes['width'], " ", STR_PAD_BOTH);
             break;
         case "sideways":
             $sizes = Bash::getScreenSizes();
             $content = str_replace("%MIDDLE%", str_repeat(" ", $sizes['width'] - strlen(Bash::removeStyles($content)) + 6), $content);
             break;
         case "success":
             $content = $processor->parseContent('[format foreground="green" effects="bold" background="black"][sideways]  ' . $content . '%MIDDLE%[/sideways][/format]');
             break;
         case "error":
             $content = $processor->parseContent('[format foreground="white" effects="bold" background="red"][sideways]  ' . $content . '%MIDDLE%[/sideways][/format]');
             break;
         case "info":
             $content = $processor->parseContent('[format foreground="white" effects="bold" background="blue"][sideways]  ' . $content . '%MIDDLE%[/sideways][/format]');
             break;
     }
     return $content;
 }