Hey everyone,
Scott (s.dot) been down for a couple of weeks with some sort of "viral syndrome", so send him a nice PM.
He passed CryoBB over to me (at least temporarily). I've been intermittently making changes as I get time, and I'm really happy with the results. Here's what I've gotten done.
CryoBB_Tag
CryoBB_Tag has been broken into two classes: CryoBB_Tag, and CryoBB_Tag_Parameter. The new system allows developers to create different types of tags, as long as the ultimately extend CryoBB_Tag. This also moved some code out of Base and into Parameter.
CryoBB_Processor
Developer-defined content processing is different. Instead of passing a callback function, you pass your own object that extends CryoBB_Processor. This is a more OO approach, and allows multiple processing methods. Yes, I know you're thinking "why didn't he make it an interface?". Well, that would mean the dev has to create all required methods, even ones he/she doesn't want.
Code Readability
The regular expression match array has been turned into a stdClass. This makes the code in CryoBB_Base much more understandable (e.x. instead of $match[1], $match->tag).
Parsing Method Change
The way it parses the input has been transformed. Before, it would just replace the match with str_replace. To account for tags who's contents should not be parsed, they were removed and replaced with temporary markers, then restored later. This required a great deal of code. Now, it records the match's offset and length (PREG_OFFSET_CAPTURE), and makes the replacements with substr_replace. This change alone cut down 119 lines of code. Still in the "unstable" branch, as it has not been thoroughly tested.
Anyone interested in this project, I encourage you to check out the changes.
-Jonah