By doing all our escaping in one place at the last possible opportunity, all the values are properly esacped in `buffer` and we never have to do the bizzare un-escaping or double-escaping. This should prove itself to be vastly more robust.
Getting blocks to work consistently: * We removed the Node.getType, and use Text.isText * We don't use inline-style for text blocks, we do block-style. * We remove Tag.isText and use Tag.canInline instead (handles name conflict with Text.isText) * We put Tag.isInline logic into Tag node, not compiler Making Filters work: * With the Text node refactoring, we update filters to work with the new style * We update Filter.isASTFilter to not trigger for Text-only blocks
Previously we had several ways text was stored: * As a property on a Tag node * As multiple nodes in a Text node * As multiple Text nodes in a Block node We have decided upon simplifying the Text node to just being a piece of text. Multiple lines of text become multiple Text nodes in a Block. There is no more text property in the Tag node. And pretty printing for Text blocks is also supported now.
If an element contains only text, its closing tag is rendered on the same line as its opening tag.