|
- <?php
- /**
- * @link http://www.yiiframework.com/
- * @copyright Copyright (c) 2008 Yii Software LLC
- * @license http://www.yiiframework.com/license/
- */
-
- namespace yii\console;
-
- use cebe\markdown\block\FencedCodeTrait;
- use cebe\markdown\inline\CodeTrait;
- use cebe\markdown\inline\EmphStrongTrait;
- use cebe\markdown\inline\StrikeoutTrait;
- use yii\helpers\Console;
-
- /**
- * A Markdown parser that enhances markdown for reading in console environments.
- *
- * Based on [cebe/markdown](https://github.com/cebe/markdown).
- *
- * @author Carsten Brandt <mail@cebe.cc>
- * @since 2.0
- */
- class Markdown extends \cebe\markdown\Parser
- {
- use FencedCodeTrait;
- use CodeTrait;
- use EmphStrongTrait;
- use StrikeoutTrait;
-
- /**
- * @var array these are "escapeable" characters. When using one of these prefixed with a
- * backslash, the character will be outputted without the backslash and is not interpreted
- * as markdown.
- */
- protected $escapeCharacters = [
- '\\', // backslash
- '`', // backtick
- '*', // asterisk
- '_', // underscore
- '~', // tilde
- ];
-
-
- /**
- * Renders a code block
- *
- * @param array $block
- * @return string
- */
- protected function renderCode($block)
- {
- return Console::ansiFormat($block['content'], [Console::NEGATIVE]) . "\n\n";
- }
-
- /**
- * @inheritdoc
- */
- protected function renderParagraph($block)
- {
- return rtrim($this->renderAbsy($block['content'])) . "\n\n";
- }
-
- /**
- * Renders an inline code span `` ` ``.
- * @param array $element
- * @return string
- */
- protected function renderInlineCode($element)
- {
- return Console::ansiFormat($element[1], [Console::UNDERLINE]);
- }
-
- /**
- * Renders empathized elements.
- * @param array $element
- * @return string
- */
- protected function renderEmph($element)
- {
- return Console::ansiFormat($this->renderAbsy($element[1]), [Console::ITALIC]);
- }
-
- /**
- * Renders strong elements.
- * @param array $element
- * @return string
- */
- protected function renderStrong($element)
- {
- return Console::ansiFormat($this->renderAbsy($element[1]), [Console::BOLD]);
- }
-
- /**
- * Renders the strike through feature.
- * @param array $element
- * @return string
- */
- protected function renderStrike($element)
- {
- return Console::ansiFormat($this->parseInline($this->renderAbsy($element[1])), [Console::CROSSED_OUT]);
- }
- }
|