isaacs / sax-js

A sax style parser for JS
Other
1.09k stars 325 forks source link

fix: doctype with entities handling #272

Closed SethFalco closed 3 months ago

SethFalco commented 3 months ago

While fixing comments in DTDs I introduced an issue by mistake where the ondoctype event would no longer fire for DOCTYPEs anymore.

  1. While the state is DOCTYPE_DTD, append the current character if we're not changing state.
  2. While the state is SGML_DECL, if we've established it's not a comment, and we know we're in a DOCTYPE declaration, change the state back to DOCTYPE_DTD and add the characters encountered so far.

This retains the ability to handle comments, but brings back the handling/event for DOCTYPEs declaration like entities.

I've added more tests for DOCTYPE declarations to make sure this isn't missed in future.

Related