Major rewrite of AbstractMarkupFilter and related rule code. Code now consistently keeps track of extraction state and applies rule conditions in all casses.
Fix bug where order of actual and expected is swapped in FilterTestDriver. Update all callers in integration tests.
Fix where a start group should close a TextUnit in AbstractMarkupFilter
Clean up whitespace handling in AbstractMarkupFilter (preserve non-translatable whitespace if possible)
Fix issues with embedded inline exclude/include translate=”no” etc.. Deep embeddings of rules should now work.
Fix cases where rules applied and didn’t look at the conditions. Conditions are applied in all cases including end tags.
All end tags now look up start tag in order to know the true extraction rule (conditions may have failed for the start tag etc..)
TextUnit events now properly have end tags: <p>[$#self]</p>
Fewer events are generated overall.
Update OpenXml filter to use the new AbstractMarkupFilter API’s