You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
2.7 KiB
100 lines
2.7 KiB
<?php |
|
/** |
|
* @copyright Copyright (c) 2008 Yii Software LLC |
|
* @link http://www.yiiframework.com/ |
|
* @license http://www.yiiframework.com/license/ |
|
*/ |
|
|
|
namespace yii\helpers; |
|
|
|
use Yii; |
|
use yii\base\InvalidParamException; |
|
|
|
/** |
|
* BaseMarkdown provides concrete implementation for [[Markdown]]. |
|
* |
|
* Do not use BaseMarkdown. Use [[Markdown]] instead. |
|
* |
|
* @author Carsten Brandt <mail@cebe.cc> |
|
* @since 2.0 |
|
*/ |
|
class BaseMarkdown |
|
{ |
|
/** |
|
* @var array a map of markdown flavor names to corresponding parser class configurations. |
|
*/ |
|
public static $flavors = [ |
|
'original' => [ |
|
'class' => 'cebe\markdown\Markdown', |
|
'html5' => true, |
|
], |
|
'gfm' => [ |
|
'class' => 'cebe\markdown\GithubMarkdown', |
|
'html5' => true, |
|
], |
|
'gfm-comment' => [ |
|
'class' => 'cebe\markdown\Markdown', |
|
'html5' => true, |
|
'enableNewlines' => true, |
|
], |
|
]; |
|
/** |
|
* @var string the markdown flavor to use when none is specified explicitly. |
|
* Defaults to `original`. |
|
* @see $flavors |
|
*/ |
|
public static $defaultFlavor = 'original'; |
|
|
|
|
|
/** |
|
* Converts markdown into HTML. |
|
* |
|
* @param string $markdown the markdown text to parse |
|
* @param string $flavor the markdown flavor to use. See [[$flavors]] for available values. |
|
* @return string the parsed HTML output |
|
* @throws \yii\base\InvalidParamException when an undefined flavor is given. |
|
*/ |
|
public static function process($markdown, $flavor = 'original') |
|
{ |
|
$parser = static::getParser($flavor); |
|
return $parser->parse($markdown); |
|
} |
|
|
|
/** |
|
* Converts markdown into HTML but only parses inline elements. |
|
* |
|
* This can be useful for parsing small comments or description lines. |
|
* |
|
* @param string $markdown the markdown text to parse |
|
* @param string $flavor the markdown flavor to use. See [[$flavors]] for available values. |
|
* @return string the parsed HTML output |
|
* @throws \yii\base\InvalidParamException when an undefined flavor is given. |
|
*/ |
|
public static function processParagraph($markdown, $flavor = 'original') |
|
{ |
|
$parser = static::getParser($flavor); |
|
return $parser->parseParagraph($markdown); |
|
} |
|
|
|
/** |
|
* @param string $flavor |
|
* @return \cebe\markdown\Parser |
|
* @throws \yii\base\InvalidParamException when an undefined flavor is given. |
|
*/ |
|
private static function getParser($flavor) |
|
{ |
|
/** @var \cebe\markdown\Markdown $parser */ |
|
if (!isset(static::$flavors[$flavor])) { |
|
throw new InvalidParamException("Markdown flavor '$flavor' is not defined.'"); |
|
} elseif (!is_object($config = static::$flavors[$flavor])) { |
|
$parser = Yii::createObject($config); |
|
if (is_array($config)) { |
|
foreach ($config as $name => $value) { |
|
$parser->{$name} = $value; |
|
} |
|
} |
|
static::$flavors[$flavor] = $parser; |
|
} |
|
return static::$flavors[$flavor]; |
|
} |
|
}
|
|
|