in lib/src/inline_parser.dart [1170:1216]
InlineLink? _parseInlineBracketedLink(InlineParser parser) {
parser.advanceBy(1);
var buffer = StringBuffer();
while (true) {
var char = parser.charAt(parser.pos);
if (char == $backslash) {
parser.advanceBy(1);
var next = parser.charAt(parser.pos);
// TODO: Follow the backslash spec better here.
// http://spec.commonmark.org/0.29/#backslash-escapes
if (next != $backslash && next != $gt) {
buffer.writeCharCode(char);
}
buffer.writeCharCode(next);
} else if (char == $lf || char == $cr || char == $ff) {
// Not a link (no line breaks allowed within `<...>`).
return null;
} else if (char == $space) {
buffer.write('%20');
} else if (char == $gt) {
break;
} else {
buffer.writeCharCode(char);
}
parser.advanceBy(1);
if (parser.isDone) return null;
}
var destination = buffer.toString();
parser.advanceBy(1);
var char = parser.charAt(parser.pos);
if (char == $space || char == $lf || char == $cr || char == $ff) {
var title = _parseTitle(parser);
if (title == null && parser.charAt(parser.pos) != $rparen) {
// This looked like an inline link, until we found this $space
// followed by mystery characters; no longer a link.
return null;
}
return InlineLink(destination, title: title);
} else if (char == $rparen) {
return InlineLink(destination);
} else {
// We parsed something like `[foo](<url>X`. Not a link.
return null;
}
}