parseInlines function

List<InlineNode> parseInlines(
  1. String text
)

Implementation

List<InlineNode> parseInlines(String text) {
  List<InlineNode> inlines = [];
  // Simple parser, assume no nesting
  List<String> parts = text.split(RegExp(r'(\*\*|\*|`)'));
  bool bold = false;
  bool italic = false;
  bool code = false;
  for (String part in parts) {
    if (part == '**') {
      bold = !bold;
    } else if (part == '*') {
      italic = !italic;
    } else if (part == '`') {
      code = !code;
    } else {
      InlineNode node;
      if (code) {
        node = CodeInline(part);
      } else if (bold) {
        node = BoldInline([TextInline(part)]);
      } else if (italic) {
        node = ItalicInline([TextInline(part)]);
      } else {
        node = TextInline(part);
      }
      inlines.add(node);
    }
  }
  return inlines;
}