Hi Martin,
Thanks for that!
As always, an issue is found as soon as a commit is made:-).
There is a problem parsing <!DOCTYPE>. I've got that fixed already (and
of course an updated unit test so it can't happen again), but would like
to test a little more. I will post a patch very soon.
Regards,
Simon
Martin Marinschek (JIRA) wrote:
[ http://issues.apache.org/jira/browse/MYFACES-768?page=comments#action_12356450 ]
Martin Marinschek commented on MYFACES-768:
-------------------------------------------
Very well done.
Thanks for your efforts.
regards,
Martin
ReducedHTMLParser issues
------------------------
Key: MYFACES-768
URL: http://issues.apache.org/jira/browse/MYFACES-768
Project: MyFaces
Type: Bug
Reporter: Simon Kitching
Fix For: Nightly
Attachments: ReducedHTMLParser.java, ReducedHTMLParser.java,
ReducedHTMLParserTest.java, ReducedHTMLParserTest.java
ReducedHTMLParser (used by AddResource class) currently fails to handle the string
"//-->".
I found that my script references were getting inserted right into the
middle of the body of my html page. After inserting some debug code, I
have found that
closedStartTag
is being called every time that "//-->" is encountered in the page. And
that's a lot, as that sequence is generated whenever an inline script is
inserted into the page.
This problem breaks every page containing a component that inserts
javascript into the page header (jscookmenu, HtmlTree, etc).
I've had a look at the code, and while the current implementation is very small I think it's quite hard to read/debug/maintain and may not handle a number of cases (such as the one described here).
Attached is a proposed alternative implementation of this class. The code is larger but is hopefully easier to read. And also attached is a unit test case class which the current implementation lacks. This class isn't *quite* finished; the unit tests indicate there are a few off-by-one errors but that's just a matter of tweaking. I hope that this may form the basis of a replacement for the current ReducedHTMLParser.
The implementation is a hybrid state-machine/adhoc parser.
Regards,
Simon