plainText function

String plainText(
  1. List<MdNode> nodes
)

The text nodes read as: what an image's alt text is made of.

Implementation

String plainText(List<MdNode> nodes) {
  final out = StringBuffer();
  void walk(List<MdNode> nodes) {
    for (final node in nodes) {
      switch (node) {
        case MdText(:final text):
          out.write(text);
        case MdInlineCode(:final text):
          out.write(text);
        case MdInlineLatex(:final tex):
          out.write(tex);
        case MdImage(:final alt):
          out.write(alt);
        case MdLineBreak():
          out.write('\n');
        case MdSourceTag(:final id):
          out.write('[$id]');
        case MdBold(:final children) ||
            MdItalic(:final children) ||
            MdStrike(:final children) ||
            MdUnderline(:final children) ||
            MdSuperscript(:final children) ||
            MdSubscript(:final children) ||
            MdHighlight(:final children) ||
            MdLink(:final children):
          walk(children);
        default:
          break;
      }
    }
  }

  walk(nodes);
  return out.toString();
}