parse method

  1. @override
Node parse(
  1. BlockParser parser
)
override

Implementation

@override
Node parse(BlockParser parser) {
  // Parse the alert type from the first line.
  final type =
      pattern.firstMatch(parser.current.content)!.group(1)!.toLowerCase();
  parser.advance();
  final childLines = parseChildLines(parser);
  // Recursively parse the contents of the alert.
  final children = BlockParser(childLines, parser.document).parseLines(
    // The setext heading underline cannot be a lazy continuation line in a
    // block quote.
    // https://spec.commonmark.org/0.30/#example-93
    disabledSetextHeading: _lazyContinuation,
    parentSyntax: this,
  );

  // Mapping the alert title text.
  const typeTextMap = {
    'note': 'Note',
    'tip': 'Tip',
    'important': 'Important',
    'caution': 'Caution',
    'warning': 'Warning',
  };
  final titleText = typeTextMap[type]!;
  final titleElement = Element('p', [Text(titleText)])
    ..attributes['class'] = 'markdown-alert-title';
  final elementClass = 'markdown-alert markdown-alert-$type';
  return Element('div', [titleElement, ...children])
    ..attributes['class'] = elementClass;
}