MarkdownExtra
extends Markdown
in package
uses
TableTrait, FencedCodeTrait
Markdown parser for the [markdown extra](http://michelf.ca/projects/php-markdown/extra/) flavor.
Tags
Table of Contents
Properties
- $codeAttributesOnPre : bool
- $html5 : bool
- $keepListStartNumber : bool
- $maximumNestingLevel : int
- $context : array<string|int, mixed>
- $escapeCharacters : array<string|int, mixed>
- $inlineHtmlElements : array<string|int, mixed>
- $references : array<string|int, mixed>
- $selfClosingHtmlElements : array<string|int, mixed>
- $_blockTypes : mixed
- $_depth : mixed
- $_inlineMarkers : array<string|int, mixed>
- $_specialAttributesRegex : mixed
Methods
- parse() : string
- Parses the given text considering the full language.
- parseParagraph() : string
- Parses a paragraph without block elements (block elements are ignored).
- blockTypes() : array<string|int, mixed>
- cleanup() : mixed
- This method will be called after `parse()` and `parseParagraph()`.
- composeTable() : string
- This method composes a table from parsed body and head HTML.
- consumeCode() : mixed
- Consume lines for a code block element
- consumeFencedCode() : mixed
- Consume lines for a fenced code block
- consumeHeadline() : mixed
- Consume lines for a headline
- consumeHr() : mixed
- Consume a horizontal rule
- consumeHtml() : mixed
- Consume lines for an HTML block
- consumeOl() : mixed
- Consume lines for an ordered list
- consumeParagraph() : array<string|int, mixed>
- Consume lines for a paragraph
- consumeQuote() : mixed
- Consume lines for a blockquote element
- consumeReference() : mixed
- Consume link references
- consumeTable() : mixed
- Consume lines for a table
- consumeUl() : mixed
- Consume lines for an unordered list
- detectLineType() : mixed
- identifyCode() : mixed
- identify a line as the beginning of a code block.
- identifyFencedCode() : mixed
- identify a line as the beginning of a fenced code block.
- identifyHeadline() : mixed
- identify a line as a headline
- identifyHr() : mixed
- identify a line as a horizontal rule.
- identifyHtml() : mixed
- identify a line as the beginning of a HTML block.
- identifyOl() : mixed
- identify a line as the beginning of an ordered list.
- identifyQuote() : mixed
- identify a line as the beginning of a block quote.
- identifyReference() : mixed
- identifyTable() : mixed
- identify a line as the beginning of a table block.
- identifyUl() : mixed
- identify a line as the beginning of an unordered list.
- inlineMarkers() : array<string|int, mixed>
- Returns a map of inline markers to the corresponding parser methods.
- lookupReference() : mixed
- parseBlock() : array<string|int, mixed>
- Parses the block at current line by identifying the block type and parsing the content
- parseBlocks() : mixed
- parseEmphStrong() : mixed
- Parses emphasized and strong elements.
- parseEntity() : mixed
- Parses an & or a html entity definition.
- parseEscape() : mixed
- Parses escaped special characters.
- parseGt() : mixed
- Escapes `>` characters.
- parseImage() : mixed
- Parses an image indicated by `![`.
- parseInline() : array<string|int, mixed>
- Parses inline elements of the language.
- parseInlineCode() : mixed
- Parses an inline code span `` ` ``.
- parseInlineHtml() : mixed
- Parses inline HTML.
- parseLink() : mixed
- Parses a link indicated by `[`.
- parseLinkOrImage() : mixed
- parseLt() : mixed
- Parses inline HTML.
- parseSpecialAttributes() : mixed
- parseTd() : mixed
- prepare() : mixed
- This method will be called before `parse()` and `parseParagraph()`.
- prepareMarkers() : mixed
- Prepare markers that are used in the text to parse
- renderAbsy() : mixed
- renderAttributes() : mixed
- renderCode() : mixed
- renderEmail() : mixed
- renderEmph() : mixed
- renderHeadline() : mixed
- Renders a headline
- renderHr() : mixed
- Renders a horizontal rule
- renderHtml() : mixed
- Renders an HTML block
- renderImage() : mixed
- renderInlineCode() : mixed
- renderInlineHtml() : mixed
- renders a html entity.
- renderLink() : mixed
- renderList() : mixed
- Renders a list
- renderParagraph() : string
- Render a paragraph block
- renderQuote() : mixed
- Renders a blockquote
- renderSpecialAttributes() : mixed
- renderStrong() : mixed
- renderTable() : mixed
- render a table block
- renderText() : mixed
- This function renders plain text sections in the markdown text.
- renderUrl() : mixed
- replaceEscape() : string
- Remove backslash from escaped characters
- consumeList() : mixed
- generateHtmlAttributes() : string
- Return html attributes string from [attrName => attrValue] list
Properties
$codeAttributesOnPre
public
bool
$codeAttributesOnPre
= false
whether special attributes on code blocks should be applied on the <pre>
element.
The default behavior is to put them on the <code>
element.
$html5
public
bool
$html5
= false
whether to format markup according to HTML5 spec.
Defaults to false
which means that markup is formatted as HTML4.
$keepListStartNumber
public
bool
$keepListStartNumber
= false
enable support start
attribute of ordered lists. This means that lists
will start with the number you actually type in markdown and not the HTML generated one.
Defaults to false
which means that numeration of all ordered lists(
- ) starts with 1.
$maximumNestingLevel
public
int
$maximumNestingLevel
= 32
the maximum nesting level for language elements.
$context
protected
array<string|int, mixed>
$context
= []
the current context the parser is in. TODO remove in favor of absy
$escapeCharacters
protected
array<string|int, mixed>
$escapeCharacters
= [
// from Markdown
'\\',
// backslash
'`',
// backtick
'*',
// asterisk
'_',
// underscore
'{',
'}',
// curly braces
'[',
']',
// square brackets
'(',
')',
// parentheses
'#',
// hash mark
'+',
// plus sign
'-',
// minus sign (hyphen)
'.',
// dot
'!',
// exclamation mark
'<',
'>',
// added by MarkdownExtra
':',
// colon
'|',
]
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.
Tags
$inlineHtmlElements
protected
array<string|int, mixed>
$inlineHtmlElements
= ['a', 'abbr', 'acronym', 'b', 'basefont', 'bdo', 'big', 'br', 'button', 'blink', 'cite', 'code', 'del', 'dfn', 'em', 'font', 'i', 'img', 'ins', 'input', 'iframe', 'kbd', 'label', 'listing', 'map', 'mark', 'nobr', 'object', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'select', 'small', 'spacer', 'span', 'strong', 'sub', 'sup', 'tt', 'var', 'u', 'wbr', 'time']
HTML elements considered as inline elements.
Tags
$references
protected
array<string|int, mixed>
$references
= []
a list of defined references in this document.
$selfClosingHtmlElements
protected
array<string|int, mixed>
$selfClosingHtmlElements
= ['br', 'hr', 'img', 'input', 'nobr']
HTML elements known to be self-closing.
$_blockTypes
private
mixed
$_blockTypes
$_depth
private
mixed
$_depth
= 0
$_inlineMarkers
private
array<string|int, mixed>
$_inlineMarkers
= []
the set of inline markers to use in different contexts.
$_specialAttributesRegex
private
mixed
$_specialAttributesRegex
= '\{(([#\.][A-z0-9-_]+\s*)+)\}'
Methods
parse()
Parses the given text considering the full language.
public
parse(string $text) : string
This includes parsing block elements as well as inline elements.
Parameters
- $text : string
-
the text to parse
Return values
string —parsed markup
parseParagraph()
Parses a paragraph without block elements (block elements are ignored).
public
parseParagraph(string $text) : string
Parameters
- $text : string
-
the text to parse
Return values
string —parsed markup
blockTypes()
protected
blockTypes() : array<string|int, mixed>
Return values
array<string|int, mixed> —a list of block element types available.
cleanup()
This method will be called after `parse()` and `parseParagraph()`.
protected
cleanup() : mixed
You can override it to do cleanup.
composeTable()
This method composes a table from parsed body and head HTML.
protected
composeTable(string $head, string $body) : string
You may override this method to customize the table rendering, for example by
adding a class
to the table tag:
return "<table class="table table-striped">\n<thead>\n$head</thead>\n<tbody>\n$body</tbody>\n</table>\n"
Parameters
- $head : string
-
table head HTML.
- $body : string
-
table body HTML.
Tags
Return values
string —the complete table HTML.
consumeCode()
Consume lines for a code block element
protected
consumeCode(mixed $lines, mixed $current) : mixed
Parameters
- $lines : mixed
- $current : mixed
consumeFencedCode()
Consume lines for a fenced code block
protected
consumeFencedCode(mixed $lines, mixed $current) : mixed
Parameters
- $lines : mixed
- $current : mixed
consumeHeadline()
Consume lines for a headline
protected
consumeHeadline(mixed $lines, mixed $current) : mixed
Parameters
- $lines : mixed
- $current : mixed
consumeHr()
Consume a horizontal rule
protected
consumeHr(mixed $lines, mixed $current) : mixed
Parameters
- $lines : mixed
- $current : mixed
consumeHtml()
Consume lines for an HTML block
protected
consumeHtml(mixed $lines, mixed $current) : mixed
Parameters
- $lines : mixed
- $current : mixed
consumeOl()
Consume lines for an ordered list
protected
consumeOl(mixed $lines, mixed $current) : mixed
Parameters
- $lines : mixed
- $current : mixed
consumeParagraph()
Consume lines for a paragraph
protected
consumeParagraph(mixed $lines, mixed $current) : array<string|int, mixed>
Allow headlines and code to break paragraphs
Parameters
- $lines : mixed
- $current : mixed
Return values
array<string|int, mixed>consumeQuote()
Consume lines for a blockquote element
protected
consumeQuote(mixed $lines, mixed $current) : mixed
Parameters
- $lines : mixed
- $current : mixed
consumeReference()
Consume link references
protected
consumeReference(mixed $lines, mixed $current) : mixed
Parameters
- $lines : mixed
- $current : mixed
consumeTable()
Consume lines for a table
protected
consumeTable(mixed $lines, mixed $current) : mixed
Parameters
- $lines : mixed
- $current : mixed
consumeUl()
Consume lines for an unordered list
protected
consumeUl(mixed $lines, mixed $current) : mixed
Parameters
- $lines : mixed
- $current : mixed
detectLineType()
protected
abstract detectLineType(mixed $lines, mixed $current) : mixed
Parameters
- $lines : mixed
- $current : mixed
identifyCode()
identify a line as the beginning of a code block.
protected
identifyCode(mixed $line) : mixed
Parameters
- $line : mixed
identifyFencedCode()
identify a line as the beginning of a fenced code block.
protected
identifyFencedCode(mixed $line) : mixed
Parameters
- $line : mixed
identifyHeadline()
identify a line as a headline
protected
identifyHeadline(mixed $line, mixed $lines, mixed $current) : mixed
Parameters
- $line : mixed
- $lines : mixed
- $current : mixed
identifyHr()
identify a line as a horizontal rule.
protected
identifyHr(mixed $line) : mixed
Parameters
- $line : mixed
identifyHtml()
identify a line as the beginning of a HTML block.
protected
identifyHtml(mixed $line, mixed $lines, mixed $current) : mixed
Parameters
- $line : mixed
- $lines : mixed
- $current : mixed
identifyOl()
identify a line as the beginning of an ordered list.
protected
identifyOl(mixed $line) : mixed
Parameters
- $line : mixed
identifyQuote()
identify a line as the beginning of a block quote.
protected
identifyQuote(mixed $line) : mixed
Parameters
- $line : mixed
identifyReference()
protected
identifyReference(mixed $line) : mixed
Parameters
- $line : mixed
identifyTable()
identify a line as the beginning of a table block.
protected
identifyTable(mixed $line, mixed $lines, mixed $current) : mixed
Parameters
- $line : mixed
- $lines : mixed
- $current : mixed
identifyUl()
identify a line as the beginning of an unordered list.
protected
identifyUl(mixed $line) : mixed
Parameters
- $line : mixed
inlineMarkers()
Returns a map of inline markers to the corresponding parser methods.
protected
inlineMarkers() : array<string|int, mixed>
This array defines handler methods for inline markdown markers. When a marker is found in the text, the handler method is called with the text starting at the position of the marker.
Note that markers starting with whitespace may slow down the parser, you may want to use [[renderText]] to deal with them.
You may override this method to define a set of markers and parsing methods.
The default implementation looks for protected methods starting with parse
that
also have an @marker
annotation in PHPDoc.
Return values
array<string|int, mixed> —a map of markers to parser methods
lookupReference()
protected
lookupReference(mixed $key) : mixed
Parameters
- $key : mixed
parseBlock()
Parses the block at current line by identifying the block type and parsing the content
protected
parseBlock(mixed $lines, mixed $current) : array<string|int, mixed>
Parameters
- $lines : mixed
- $current : mixed
Return values
array<string|int, mixed> —Array of two elements, the first element contains the block, the second contains the next line index to be parsed.
parseBlocks()
protected
abstract parseBlocks(mixed $lines) : mixed
Parameters
- $lines : mixed
parseEmphStrong()
Parses emphasized and strong elements.
protected
parseEmphStrong(mixed $text) : mixed
Parameters
- $text : mixed
Tags
parseEntity()
Parses an & or a html entity definition.
protected
parseEntity(mixed $text) : mixed
Parameters
- $text : mixed
Tags
parseEscape()
Parses escaped special characters.
protected
parseEscape(mixed $text) : mixed
Parameters
- $text : mixed
Tags
parseGt()
Escapes `>` characters.
protected
parseGt(mixed $text) : mixed
Parameters
- $text : mixed
Tags
parseImage()
Parses an image indicated by `![`.
protected
parseImage(mixed $markdown) : mixed
Parameters
- $markdown : mixed
Tags
parseInline()
Parses inline elements of the language.
protected
parseInline(mixed $text) : array<string|int, mixed>
Parameters
- $text : mixed
-
the inline text to parse.
Return values
array<string|int, mixed>parseInlineCode()
Parses an inline code span `` ` ``.
protected
parseInlineCode(mixed $text) : mixed
Parameters
- $text : mixed
Tags
parseInlineHtml()
Parses inline HTML.
protected
parseInlineHtml(mixed $text) : mixed
Parameters
- $text : mixed
Tags
parseLink()
Parses a link indicated by `[`.
protected
parseLink(mixed $markdown) : mixed
Parameters
- $markdown : mixed
Tags
parseLinkOrImage()
protected
parseLinkOrImage(mixed $markdown) : mixed
Parameters
- $markdown : mixed
parseLt()
Parses inline HTML.
protected
parseLt(mixed $text) : mixed
Parameters
- $text : mixed
Tags
parseSpecialAttributes()
protected
parseSpecialAttributes(mixed $text) : mixed
Parameters
- $text : mixed
Tags
parseTd()
protected
parseTd(mixed $markdown) : mixed
Parameters
- $markdown : mixed
Tags
prepare()
This method will be called before `parse()` and `parseParagraph()`.
protected
prepare() : mixed
Tags
prepareMarkers()
Prepare markers that are used in the text to parse
protected
prepareMarkers(string $text) : mixed
Add all markers that are present in markdown. Check is done to avoid iterations in parseInline(), good for huge markdown files
Parameters
- $text : string
renderAbsy()
protected
abstract renderAbsy(mixed $absy) : mixed
Parameters
- $absy : mixed
renderAttributes()
protected
renderAttributes(mixed $block) : mixed
Parameters
- $block : mixed
renderCode()
protected
renderCode(mixed $block) : mixed
Parameters
- $block : mixed
renderEmail()
protected
renderEmail(mixed $block) : mixed
Parameters
- $block : mixed
renderEmph()
protected
renderEmph(mixed $block) : mixed
Parameters
- $block : mixed
renderHeadline()
Renders a headline
protected
renderHeadline(mixed $block) : mixed
Parameters
- $block : mixed
renderHr()
Renders a horizontal rule
protected
renderHr(mixed $block) : mixed
Parameters
- $block : mixed
renderHtml()
Renders an HTML block
protected
renderHtml(mixed $block) : mixed
Parameters
- $block : mixed
renderImage()
protected
renderImage(mixed $block) : mixed
Parameters
- $block : mixed
renderInlineCode()
protected
renderInlineCode(mixed $block) : mixed
Parameters
- $block : mixed
renderInlineHtml()
renders a html entity.
protected
renderInlineHtml(mixed $block) : mixed
Parameters
- $block : mixed
renderLink()
protected
renderLink(mixed $block) : mixed
Parameters
- $block : mixed
renderList()
Renders a list
protected
renderList(mixed $block) : mixed
Parameters
- $block : mixed
renderParagraph()
Render a paragraph block
protected
renderParagraph(mixed $block) : string
Parameters
- $block : mixed
Return values
stringrenderQuote()
Renders a blockquote
protected
renderQuote(mixed $block) : mixed
Parameters
- $block : mixed
renderSpecialAttributes()
protected
renderSpecialAttributes(mixed $block) : mixed
Parameters
- $block : mixed
renderStrong()
protected
renderStrong(mixed $block) : mixed
Parameters
- $block : mixed
renderTable()
render a table block
protected
renderTable(mixed $block) : mixed
Parameters
- $block : mixed
renderText()
This function renders plain text sections in the markdown text.
protected
renderText(mixed $text) : mixed
Parameters
- $text : mixed
Tags
renderUrl()
protected
renderUrl(mixed $block) : mixed
Parameters
- $block : mixed
replaceEscape()
Remove backslash from escaped characters
protected
replaceEscape(mixed $text) : string
Parameters
- $text : mixed
Return values
stringconsumeList()
private
consumeList(mixed $lines, mixed $current, mixed $block, mixed $type) : mixed
Parameters
- $lines : mixed
- $current : mixed
- $block : mixed
- $type : mixed
generateHtmlAttributes()
Return html attributes string from [attrName => attrValue] list
private
generateHtmlAttributes(array<string|int, mixed> $attributes) : string
Parameters
- $attributes : array<string|int, mixed>
-
the attribute name-value pairs.