in src/unparsed-blocks/ListOfItems.php [42:109]
public static function consume(
Context $context,
Lines $lines,
): ?(ListOfItems, Lines) {
try {
$context->pushContext(ListItem::MAX_INDENT_CONTEXT, 3);
$first = self::consumeItem($context, $lines);
} finally {
$context->popContext(ListItem::MAX_INDENT_CONTEXT);
}
if ($first === null) {
return null;
}
list($first, $lines) = $first;
$nodes = vec[$first];
$max_indent = $first->getIndentation() - 1;
$loose = $first->makesListLoose();
$d = $first->getDelimiter();
if (
$context->isInParagraphContinuation()
&& $first->isOrderedList()
&& $first->getNumber() !== 1
) {
return null;
}
$pre_blank = null;
while (!$lines->isEmpty()) {
try {
$context->pushContext(ListItem::MAX_INDENT_CONTEXT, $max_indent);
$next = self::consumeItem($context, $lines);
} finally {
$context->popContext(ListItem::MAX_INDENT_CONTEXT);
}
if ($next === null) {
list($line, $rest) = $lines->getFirstLineAndRest();
if (Lines::isBlankLine($line)) {
if ($pre_blank === null) {
$pre_blank = tuple($loose, $nodes, $lines);
}
$loose = true;
$lines = $rest;
continue;
}
break;
}
list($next, $rest) = $next;
if ($next->getDelimiter() !== $d) {
break;
}
$max_indent = $next->getIndentation() - 1;
$pre_blank = null;
$nodes[] = $next;
$loose = $loose || $next->makesListLoose();
$lines = $rest;
}
if ($pre_blank !== null) {
list($loose, $nodes, $lines) = $pre_blank;
}
return tuple(new self($loose, $nodes), $lines);
}