protected function Markdown::doLists in Markdown 7
* Form HTML ordered (numbered) and unordered (bulleted) lists. *
Parameters
string $text: * @return string
1 call to Markdown::doLists()
- Markdown::_processListItems_callback in includes/
Markdown.php - * List item parsing callback *
File
- includes/
Markdown.php, line 998
Class
- Markdown
- Markdown Parser Class
Namespace
MichelfCode
protected function doLists($text) {
$less_than_tab = $this->tab_width - 1;
// Re-usable patterns to match list item bullets and number markers:
$marker_ul_re = '[*+-]';
$marker_ol_re = '\\d+[\\.]';
$markers_relist = array(
$marker_ul_re => $marker_ol_re,
$marker_ol_re => $marker_ul_re,
);
foreach ($markers_relist as $marker_re => $other_marker_re) {
// Re-usable pattern to match any entirel ul or ol list:
$whole_list_re = '
( # $1 = whole list
( # $2
([ ]{0,' . $less_than_tab . '}) # $3 = number of spaces
(' . $marker_re . ') # $4 = first list item marker
[ ]+
)
(?s:.+?)
( # $5
\\z
|
\\n{2,}
(?=\\S)
(?! # Negative lookahead for another list item marker
[ ]*
' . $marker_re . '[ ]+
)
|
(?= # Lookahead for another kind of list
\\n
\\3 # Must have the same indentation
' . $other_marker_re . '[ ]+
)
)
)
';
// mx
// We use a different prefix before nested lists than top-level lists.
//See extended comment in _ProcessListItems().
if ($this->list_level) {
$text = preg_replace_callback('{
^
' . $whole_list_re . '
}mx', array(
$this,
'_doLists_callback',
), $text);
}
else {
$text = preg_replace_callback('{
(?:(?<=\\n)\\n|\\A\\n?) # Must eat the newline
' . $whole_list_re . '
}mx', array(
$this,
'_doLists_callback',
), $text);
}
}
return $text;
}