in lib/src/inline_parser.dart [1317:1360]
String? _parseTitle(InlineParser parser) {
_moveThroughWhitespace(parser);
if (parser.isDone) return null;
// The whitespace should be followed by a title delimiter.
var delimiter = parser.charAt(parser.pos);
if (delimiter != $apostrophe &&
delimiter != $quote &&
delimiter != $lparen) {
return null;
}
var closeDelimiter = delimiter == $lparen ? $rparen : delimiter;
parser.advanceBy(1);
// Now we look for an un-escaped closing delimiter.
var buffer = StringBuffer();
while (true) {
var char = parser.charAt(parser.pos);
if (char == $backslash) {
parser.advanceBy(1);
var next = parser.charAt(parser.pos);
if (next != $backslash && next != closeDelimiter) {
buffer.writeCharCode(char);
}
buffer.writeCharCode(next);
} else if (char == closeDelimiter) {
break;
} else {
buffer.writeCharCode(char);
}
parser.advanceBy(1);
if (parser.isDone) return null;
}
var title = buffer.toString();
// Advance past the closing delimiter.
parser.advanceBy(1);
if (parser.isDone) return null;
_moveThroughWhitespace(parser);
if (parser.isDone) return null;
if (parser.charAt(parser.pos) != $rparen) return null;
return title;
}