Spec-Zone.ru › Yii 1.1

CMarkdownParser

Пакет system.utils
Наследование класс CMarkdownParser » MarkdownExtra_Parser » Markdown_Parser
С момента 1.0
Исходный код framework/utils/CMarkdownParser.php
CMarkdownParser — это обёртка над MarkdownExtra_Parser.

CMarkdownParser расширяет MarkdownExtra_Parser, используя Text_Highlighter для выделения блоков кода с синтаксисом определённого языка. В частности, если блок кода начинается со следующего:
[language]
будет использован синтаксис указанного языка для выделения блока кода. Поддерживаемые языки (регистронезависимо): ABAP, CPP, CSS, DIFF, DTD, HTML, JAVA, JAVASCRIPT, MYSQL, PERL, PHP, PYTHON, RUBY, SQL, XML

Также можно указать параметры, которые будут переданы синтаксическому выделению. Например:
[php showLineNumbers=1]
что отобразит номера строк в каждой строке блока кода.

Для получения подробной информации о стандартном синтаксисе Markdown, пожалуйста, ознакомьтесь со следующим:
  • официальный синтаксис Markdown
  • синтаксис Markdown Extra

Общедоступные свойства

Свойство Тип Описание Определено
abbr_desciptions MarkdownExtra_Parser
abbr_word_re MarkdownExtra_Parser
auto_close_tags_re MarkdownExtra_Parser
block_gamut Markdown_Parser
block_tags_re MarkdownExtra_Parser
clean_tags_re MarkdownExtra_Parser
contain_span_tags_re MarkdownExtra_Parser
context_block_tags_re MarkdownExtra_Parser
document_gamut Markdown_Parser
em_relist MarkdownExtra_Parser
em_strong_prepared_relist Markdown_Parser
em_strong_relist MarkdownExtra_Parser
empty_element_suffix Markdown_Parser
escape_chars Markdown_Parser
escape_chars_re Markdown_Parser
fn_backlink_class MarkdownExtra_Parser
fn_backlink_title MarkdownExtra_Parser
fn_id_prefix MarkdownExtra_Parser
fn_link_class MarkdownExtra_Parser
fn_link_title MarkdownExtra_Parser
footnote_counter MarkdownExtra_Parser
footnotes MarkdownExtra_Parser
footnotes_ordered MarkdownExtra_Parser
highlightCssClass строка класс CSS для div-элемента, содержащего выделенный блок кода. CMarkdownParser
html_hashes Markdown_Parser
in_anchor Markdown_Parser
list_level Markdown_Parser
nested_brackets_depth Markdown_Parser
nested_brackets_re Markdown_Parser
nested_url_parenthesis_depth Markdown_Parser
nested_url_parenthesis_re Markdown_Parser
no_entities Markdown_Parser
no_markup Markdown_Parser
predef_abbr MarkdownExtra_Parser
predef_titles Markdown_Parser
predef_urls Markdown_Parser
purifierOptions смешанный параметры, которые будут переданы {@link http://htmlpurifier. CMarkdownParser
span_gamut Markdown_Parser
strong_relist MarkdownExtra_Parser
tab_width Markdown_Parser
titles Markdown_Parser
urls Markdown_Parser
utf8_strlen Markdown_Parser

Общедоступные методы

Метод Описание Определено в
__construct() MarkdownExtra_Parser
_appendFootnotes_callback() MarkdownExtra_Parser
_detab_callback() Markdown_Parser
_doAbbreviations_callback() MarkdownExtra_Parser
_doAnchors_inline_callback() Markdown_Parser
_doAnchors_reference_callback() Markdown_Parser
_doAutoLinks_email_callback() Markdown_Parser
_doAutoLinks_url_callback() Markdown_Parser
_doBlockQuotes_callback() Markdown_Parser
_doBlockQuotes_callback2() Markdown_Parser
_doCodeBlocks_callback() Функция обратного вызова, когда найден блок кода. CMarkdownParser
_doDefLists_callback() MarkdownExtra_Parser
_doFencedCodeBlocks_callback() Функция обратного вызова, когда найден блок кода с ограждениями. CMarkdownParser
_doFencedCodeBlocks_newlines() MarkdownExtra_Parser
_doHardBreaks_callback() Markdown_Parser
_doHeaders_attr() MarkdownExtra_Parser
_doHeaders_callback_atx() MarkdownExtra_Parser
_doHeaders_callback_setext() MarkdownExtra_Parser
_doImages_inline_callback() Markdown_Parser
_doImages_reference_callback() Markdown_Parser
_doLists_callback() Markdown_Parser
_doTable_callback() MarkdownExtra_Parser
_doTable_leadingPipe_callback() MarkdownExtra_Parser
_hashHTMLBlocks_callback() Markdown_Parser
_hashHTMLBlocks_inHTML() MarkdownExtra_Parser
_hashHTMLBlocks_inMarkdown() MarkdownExtra_Parser
_initDetab() Markdown_Parser
_processDefListItems_callback_dd() MarkdownExtra_Parser
_processDefListItems_callback_dt() MarkdownExtra_Parser
_processListItems_callback() Markdown_Parser
_stripAbbreviations_callback() MarkdownExtra_Parser
_stripFootnotes_callback() MarkdownExtra_Parser
_stripLinkDefinitions_callback() Markdown_Parser
_unhash_callback() Markdown_Parser
appendFootnotes() MarkdownExtra_Parser
detab() Markdown_Parser
doAbbreviations() MarkdownExtra_Parser
doAnchors() Markdown_Parser
doAutoLinks() Markdown_Parser
doBlockQuotes() Markdown_Parser
doCodeBlocks() Markdown_Parser
doDefLists() MarkdownExtra_Parser
doFencedCodeBlocks() MarkdownExtra_Parser
doFootnotes() MarkdownExtra_Parser
doHardBreaks() Markdown_Parser
doHeaders() MarkdownExtra_Parser
doHorizontalRules() Markdown_Parser
doImages() Markdown_Parser
doItalicsAndBold() Markdown_Parser
doLists() Markdown_Parser
doTables() MarkdownExtra_Parser
encodeAmpsAndAngles() Markdown_Parser
encodeAttribute() Markdown_Parser
encodeEmailAddress() Markdown_Parser
formParagraphs() MarkdownExtra_Parser
getDefaultCssFile() Возвращает файл CSS по умолчанию, используемый для выделения блоков кода. CMarkdownParser
getHighlightConfig() Генерирует конфигурацию для выделения. CMarkdownParser
getHiglightConfig() Генерирует конфигурацию для выделения. CMarkdownParser
handleSpanToken() Markdown_Parser
hashBlock() Markdown_Parser
hashClean() MarkdownExtra_Parser
hashHTMLBlocks() MarkdownExtra_Parser
hashPart() Markdown_Parser
makeCodeSpan() Markdown_Parser
outdent() Markdown_Parser
parseSpan() Markdown_Parser
prepareItalicsAndBold() Markdown_Parser
processDefListItems() MarkdownExtra_Parser
processListItems() Markdown_Parser
runBasicBlockGamut() Markdown_Parser
runBlockGamut() Markdown_Parser
runSpanGamut() Markdown_Parser
safeTransform() Преобразует содержимое и очищает результат. CMarkdownParser
setup() MarkdownExtra_Parser
stripAbbreviations() MarkdownExtra_Parser
stripFootnotes() MarkdownExtra_Parser
stripLinkDefinitions() Markdown_Parser
teardown() MarkdownExtra_Parser
transform() Markdown_Parser
unhash() Markdown_Parser

Защищённые методы

Метод Описание Определено в
createHighLighter() Создаёт экземпляр выделения. CMarkdownParser
getHighlightTag() Возвращает заданные пользователем параметры выделения. CMarkdownParser
getInlineOption() Извлекает заданную конфигурацию. CMarkdownParser
highlightCodeBlock() Выделяет блок кода. CMarkdownParser

Подробное описание свойств

highlightCssClass свойство

public string $highlightCssClass;

класс CSS для div-элемента, содержащего выделенный блок кода. По умолчанию 'hl-code'.

purifierOptions свойство (доступно начиная с v1.1.4)

public mixed $purifierOptions;

опции, которые нужно передать HTML Purifier. Это может быть объект HTMLPurifier_Config, массив директив (Namespace.Directive => Value) или имя файла ini. Это свойство используется только при вызове safeTransform.

См. также

  • http://htmlpurifier.org/live/configdoc/plain.html

Подробное описание методов

_doCodeBlocks_callback() метод

public string _doCodeBlocks_callback(array $matches)
$matches массив соответствия
{возвращает} строка выделенный фрагмент кода
Исходный код: framework/utils/CMarkdownParser.php#97 (показать)
public function _doCodeBlocks_callback($matches)
{
    
$codeblock = $this->outdent($matches[1]);
    if((
$codeblock = $this->highlightCodeBlock($codeblock)) !== null)
        return 
"\n\n".$this->hashBlock($codeblock)."\n\n";
    else
        return 
parent::_doCodeBlocks_callback($matches);
}

Функция обратного вызова при совпадении с блоком кода.

_doFencedCodeBlocks_callback() метод

public string _doFencedCodeBlocks_callback(array $matches)
$matches массив соответствия
{возвращает} строка выделенный фрагмент кода
Исходный код: framework/utils/CMarkdownParser.php#111 (показать)
public function _doFencedCodeBlocks_callback($matches)
{
    return 
"\n\n".$this->hashBlock($this->highlightCodeBlock($matches[2]))."\n\n";
}

Функция обратного вызова при совпадении с выделенным блоком кода.

createHighLighter() метод

protected Text_Highlighter createHighLighter(string $options)
$options строка опции, введённые пользователем
{возвращает} Text_Highlighter экземпляр выделения
Исходный код: framework/utils/CMarkdownParser.php#152 (показать)
protected function createHighLighter($options)
{
    if(!
class_exists('Text_Highlighter', false))
    {
        require_once(
Yii::getPathOfAlias('system.vendors.TextHighlighter.Text.Highlighter').'.php');
        require_once(
Yii::getPathOfAlias('system.vendors.TextHighlighter.Text.Highlighter.Renderer.Html').'.php');
    }
    
$lang = current(preg_split('/\s+/', substr(substr($options,1), 0,-1),2));
    
$highlighter = Text_Highlighter::factory($lang);
    if(
$highlighter)
        
$highlighter->setRenderer(new Text_Highlighter_Renderer_Html($this->getHighlightConfig($options)));
    return 
$highlighter;
}

Создаёт экземпляр выделения.

getDefaultCssFile() метод

public string getDefaultCssFile()
{возвращает} строка путь к файлу по умолчанию CSS, который используется для выделения фрагментов кода.
Исходный код: framework/utils/CMarkdownParser.php#87 (показать)
public function getDefaultCssFile()
{
    return 
Yii::getPathOfAlias('system.vendors.TextHighlighter.highlight').'.css';
}

getHighlightConfig() метод

public array getHighlightConfig(string $options)
$options строка опции, введённые пользователем
{возвращает} массив конфигурация выделения
Исходный код: framework/utils/CMarkdownParser.php#171 (показать)
public function getHighlightConfig($options)
{
    
$config = array('use_language'=>true);
    if( 
$this->getInlineOption('showLineNumbers', $options, false) )
        
$config['numbers'] = HL_NUMBERS_LI;
    
$config['tabsize'] = $this->getInlineOption('tabSize', $options, 4);
    return 
$config;
}

Генерирует конфигурацию для выделения.

getHighlightTag() метод

protected string getHighlightTag(string $codeblock)
$codeblock строка фрагмент кода с опциями выделения.
{возвращает} строка опции выделения, введённые пользователем. Null, если опции не введены.
Исходный код: framework/utils/CMarkdownParser.php#140 (показать)
protected function getHighlightTag($codeblock)
{
    
$str = trim(current(preg_split("/\r|\n/", $codeblock,2)));
    if(
strlen($str) > 2 && $str[0] === '[' && $str[strlen($str)-1] === ']')
        return 
$str;
}

Возвращает опции выделения, введённые пользователем.

getHiglightConfig() метод

public array getHiglightConfig(string $options)
$options строка опции, введённые пользователем
{возвращает} массив конфигурация выделения
Исходный код: framework/utils/CMarkdownParser.php#189 (показать)
public function getHiglightConfig($options)
{
    return 
$this->getHighlightConfig($options);
}

Генерирует конфигурацию для выделения.

ПРИМЕЧАНИЕ: Этот метод устарел из-за ошибки в имени метода. Используйте getHighlightConfig вместо этого.

getInlineOption() метод

protected mixed getInlineOption(string $name, string $str, mixed $defaultValue)
$name строка название конфигурации
$str строка опции, введённые пользователем
$defaultValue смешанный тип значение по умолчанию, если конфигурация отсутствует
{возвращает} смешанный тип значение конфигурации
Исходный код: framework/utils/CMarkdownParser.php#201 (показать)
protected function getInlineOption($name, $str, $defaultValue)
{
    if(
preg_match('/'.$name.'(\s*=\s*(\d+))?/i', $str, $v) && count($v) > 2)
        return 
$v[2];
    else
        return 
$defaultValue;
}

Извлекает указанную конфигурацию.

highlightCodeBlock() метод

protected string highlightCodeBlock(string $codeblock)
$codeblock строка фрагмент кода
{возвращает} строка выделенный фрагмент кода. Null, если фрагмент кода не требует выделения.
Исходный код: framework/utils/CMarkdownParser.php#121 (показать)
protected function highlightCodeBlock($codeblock)
{
    if((
$tag=$this->getHighlightTag($codeblock))!==null && ($highlighter=$this->createHighLighter($tag)))
    {
        
$codeblock = preg_replace('/\A\n+|\n+\z/', '', $codeblock);
        
$tagLen = strpos($codeblock, $tag)+strlen($tag);
        
$codeblock = ltrim(substr($codeblock, $tagLen));
        
$output=preg_replace('/<span\s+[^>]*>(\s*)<\/span>/', '\1', $highlighter->highlight($codeblock));
        return 
"<div class=\"{$this->highlightCssClass}\">".$output."</div>";
    }
    else
        return 
"<pre>".CHtml::encode($codeblock)."</pre>";
}

Выделяет фрагмент кода.

safeTransform() метод

public string safeTransform(string $content)
$content строка содержимое Markdown
{возвращает} строка очищенное содержимое HTML
Исходный код: framework/utils/CMarkdownParser.php#76 (показать)
public function safeTransform($content)
{
    
$content=$this->transform($content);
    
$purifier=new HTMLPurifier($this->purifierOptions);
    
$purifier->config->set('Cache.SerializerPath',Yii::app()->getRuntimePath());
    return 
$purifier->purify($content);
}

Преобразует содержимое и очищает результат. Этот метод вызывает метод transform() для преобразования содержимого Markdown в HTML-содержимое. Затем он использует CHtmlPurifier для очистки HTML-содержимого, чтобы избежать атак XSS.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CMarkdownParser

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API