jbowens / jBBCode

A lightweight but extensible BBCode parser
http://jbbcode.com
MIT License
164 stars 32 forks source link

Allow TextNodes to be split #56

Open DaSourcerer opened 9 years ago

DaSourcerer commented 9 years ago

This could possibly address #4 and help with #9:

There is currently no good way to cleanly split the content of a TextNode into serveral nodes after parsing. Doing so is vital when dealing with smileys and/or standalone links as they are likely to clash when it comes to processing them through dedicated filters. and masking them later through the HTMLSafeVisitor. A rather pain-free approach would be to allow TextNodes themselves have children, which would involve:

  1. moving the appropriate logic out of ElementNode into Node;
  2. allow TextNodes to be split at arbitrary positions through a public method (e.g.: TextNode.insertNodeAt(int $position, Node $node[, int $length=1])

A welcome side-effect were that DocumentNode could extend either TextNode or even Node directly instead of being a descendant of ElementNode.