getHtmlParts method

HtmlParts getHtmlParts()

Implementation

HtmlParts getHtmlParts() {
  if (op.isJustNewline() && !op.isContainerBlock()) {
    return HtmlParts(openingTag: '', closingTag: '', content: newLine);
  }

  final List<String> tags = getTags();
  List<TagKeyValue> attrs = getTagAttributes();

  if (tags.isEmpty && attrs.isNotEmpty) {
    tags.add('span');
  }

  final List<String> beginTags = <String>[];
  final List<String> endTags = <String>[];
  const String imgTag = 'img';
  bool isImageLink(tag) => tag == imgTag && isTruthy(op.attributes.link);
  for (final String tag in tags) {
    if (isImageLink(tag)) {
      beginTags.add(makeStartTag('a', getLinkAttrs()));
    }
    beginTags.add(makeStartTag(tag, attrs));
    endTags.add(tag == imgTag ? '' : makeEndTag(tag));
    if (isImageLink(tag)) {
      endTags.add(makeEndTag('a'));
    }
    // consumed in first tag
    attrs = <TagKeyValue>[];
  }

  return HtmlParts(
    openingTag: beginTags.join(),
    content: getContent(),
    closingTag: endTags.reversed.join(),
  );
}