Skip to content

Commit

Permalink
another cleanup / micro optimization
Browse files Browse the repository at this point in the history
  • Loading branch information
rbri committed Nov 26, 2024
1 parent f203d9d commit 9f51a22
Showing 1 changed file with 33 additions and 101 deletions.
134 changes: 33 additions & 101 deletions src/main/java/org/htmlunit/cyberneko/HTMLScanner.java
Original file line number Diff line number Diff line change
Expand Up @@ -420,15 +420,6 @@ public class HTMLScanner implements XMLDocumentSource, XMLLocator, HTMLComponent
/** Beginning character offset in the file. */
protected int fBeginCharacterOffset;

/** Ending line number. */
protected int fEndLineNumber;

/** Ending column number. */
protected int fEndColumnNumber;

/** Ending character offset in the file. */
protected int fEndCharacterOffset;

// state

/** The playback byte stream. */
Expand Down Expand Up @@ -828,9 +819,6 @@ public void setInputSource(final XMLInputSource source) throws IOException {
fBeginLineNumber = 1;
fBeginColumnNumber = 1;
fBeginCharacterOffset = 0;
fEndLineNumber = fBeginLineNumber;
fEndColumnNumber = fBeginColumnNumber;
fEndCharacterOffset = fBeginCharacterOffset;

// reset encoding information
fIANAEncoding = fDefaultIANAEncoding;
Expand Down Expand Up @@ -1200,10 +1188,7 @@ else if (skip("SYSTEM")) {
pubid = fDoctypePubid;
sysid = fDoctypeSysid;
}
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
fDocumentHandler.doctypeDecl(root, pubid, sysid, locationAugs());
fDocumentHandler.doctypeDecl(root, pubid, sysid, locationAugs(fCurrentEntity));
}
}

Expand Down Expand Up @@ -1528,10 +1513,7 @@ protected int scanEntityRef(final XMLString str, final XMLString plainValue, fin

private int returnEntityRefString(final XMLString str, final boolean content) {
if (content && fDocumentHandler != null && fElementCount >= fElementDepth) {
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
fDocumentHandler.characters(str, locationAugs());
fDocumentHandler.characters(str, locationAugs(fCurrentEntity));
}
return -1;
}
Expand Down Expand Up @@ -1705,13 +1687,15 @@ else if (c == '\r') {
// infoset utility methods

// Returns an augmentations object with a location item added.
protected final Augmentations locationAugs() {
protected final Augmentations locationAugs(CurrentEntity currentEntity) {
// we don't have to create a new LocationItem all the time, because the interface says:
// Methods that receive Augmentations are required to copy the information
// if it is to be saved for use beyond the scope of the method.
if (fAugmentations_) {
fLocationItem.setValues(fBeginLineNumber, fBeginColumnNumber, fBeginCharacterOffset, fEndLineNumber,
fEndColumnNumber, fEndCharacterOffset);
fLocationItem.setValues(fBeginLineNumber, fBeginColumnNumber, fBeginCharacterOffset,
currentEntity.getLineNumber(),
currentEntity.getColumnNumber(),
currentEntity.getCharacterOffset());
return fLocationItem;
}
return null;
Expand Down Expand Up @@ -2076,21 +2060,15 @@ else if (c == '&') {
|| skip("-->")
|| skip("->")
|| skip(">")) {
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
// using EMPTY here is slightly dangerous but a review showed
// that all implementations of comment() only read the data
// never do anything else with it, so safe for now
fDocumentHandler.comment(XMLString.EMPTY, locationAugs());
fDocumentHandler.comment(XMLString.EMPTY, locationAugs(fCurrentEntity));
}
else if (skip("-!>")) {
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
final XMLString str = new XMLString();
str.append("-!");
fDocumentHandler.comment(str, locationAugs());
fDocumentHandler.comment(str, locationAugs(fCurrentEntity));
}
else if (skip("--")) {
scanComment();
Expand Down Expand Up @@ -2172,9 +2150,8 @@ else if (ename != null) {
}
final XMLLocator locator = HTMLScanner.this;
final String encoding = fIANAEncoding;
final Augmentations augs = locationAugs();
final NamespaceContext nscontext = new NamespaceSupport();
fDocumentHandler.startDocument(locator, encoding, nscontext, augs);
fDocumentHandler.startDocument(locator, encoding, nscontext, locationAugs(fCurrentEntity));
}
if (fInsertDoctype_ && fDocumentHandler != null) {
String root = htmlConfiguration_.getHtmlElements().getElement(HTMLElements.HTML).name;
Expand All @@ -2191,10 +2168,7 @@ else if (ename != null) {
if (DEBUG_CALLBACKS) {
System.out.println("endDocument()");
}
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
fDocumentHandler.endDocument(locationAugs());
fDocumentHandler.endDocument(locationAugs(fCurrentEntity));
}
return false;
}
Expand Down Expand Up @@ -2266,10 +2240,7 @@ private void scanUntilEndTag(final String tagName) throws IOException {
}
}
if (fScanUntilEndTag.length() > 0 && fDocumentHandler != null) {
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
fDocumentHandler.characters(fScanUntilEndTag, locationAugs());
fDocumentHandler.characters(fScanUntilEndTag, locationAugs(fCurrentEntity));
}
}

Expand Down Expand Up @@ -2304,9 +2275,6 @@ protected void scanCharacters() throws IOException {
fCurrentEntity.offset_ - offset);
System.out.println("characters(" + xmlString + ")");
}
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
fStringBuffer.append(fCurrentEntity.buffer_, offset, fCurrentEntity.offset_ - offset);
}
if (DEBUG_BUFFER) {
Expand All @@ -2322,7 +2290,7 @@ protected void scanCharacters() throws IOException {
}

if (fStringBuffer.length() != 0) {
fDocumentHandler.characters(fStringBuffer, locationAugs());
fDocumentHandler.characters(fStringBuffer, locationAugs(fCurrentEntity));
}
}

Expand All @@ -2334,13 +2302,10 @@ protected void scanCDATA() throws IOException {
fStringBuffer.clear();
if (fCDATASections_) {
if (fDocumentHandler != null && fElementCount >= fElementDepth) {
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
if (DEBUG_CALLBACKS) {
System.out.println("startCDATA()");
}
fDocumentHandler.startCDATA(locationAugs());
fDocumentHandler.startCDATA(locationAugs(fCurrentEntity));
}
}
else {
Expand All @@ -2349,24 +2314,21 @@ protected void scanCDATA() throws IOException {
final boolean eof = scanCDataContent(fStringBuffer);

if (fDocumentHandler != null && fElementCount >= fElementDepth) {
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
if (fCDATASections_) {
if (DEBUG_CALLBACKS) {
System.out.println("characters(" + fStringBuffer + ")");
}
fDocumentHandler.characters(fStringBuffer, locationAugs());
fDocumentHandler.characters(fStringBuffer, locationAugs(fCurrentEntity));
if (DEBUG_CALLBACKS) {
System.out.println("endCDATA()");
}
fDocumentHandler.endCDATA(locationAugs());
fDocumentHandler.endCDATA(locationAugs(fCurrentEntity));
}
else {
if (DEBUG_CALLBACKS) {
System.out.println("comment(" + fStringBuffer + ")");
}
fDocumentHandler.comment(fStringBuffer, locationAugs());
fDocumentHandler.comment(fStringBuffer, locationAugs(fCurrentEntity));
}
}
if (DEBUG_BUFFER) {
Expand All @@ -2382,14 +2344,14 @@ protected void scanComment() throws IOException {
if (DEBUG_BUFFER) {
fCurrentEntity.debugBufferIfNeeded("(scanComment: ");
}
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
fScanComment.clear();
boolean eof = scanCommentContent(fScanComment);
// no --> found, comment with end only with >
if (eof) {
fCurrentEntity.resetBuffer(fScanComment, fEndLineNumber, fEndColumnNumber, fEndCharacterOffset);
fCurrentEntity.resetBuffer(fScanComment,
fCurrentEntity.getLineNumber(),
fCurrentEntity.getColumnNumber(),
fCurrentEntity.getCharacterOffset());
fScanComment.clear(); // take a new one to avoid interactions
while (true) {
final int c = fCurrentEntity.read();
Expand Down Expand Up @@ -2424,10 +2386,7 @@ else if (c != '>') {
if (DEBUG_CALLBACKS) {
System.out.println("comment(" + fScanComment + ")");
}
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
fDocumentHandler.comment(fScanComment, locationAugs());
fDocumentHandler.comment(fScanComment, locationAugs(fCurrentEntity));
}
if (DEBUG_BUFFER) {
fCurrentEntity.debugBufferIfNeeded(")scanComment: ");
Expand Down Expand Up @@ -2667,10 +2626,7 @@ else if (c == '>') {
// invalid procession instruction, handle as comment
if (fDocumentHandler != null) {
fStringBuffer.append(target);
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
fDocumentHandler.comment(fStringBuffer, locationAugs());
fDocumentHandler.comment(fStringBuffer, locationAugs(fCurrentEntity));
}
return;
}
Expand All @@ -2683,10 +2639,7 @@ else if (c == '>') {
}
}
if (fDocumentHandler != null) {
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
fDocumentHandler.processingInstruction(target, fStringBuffer, locationAugs());
fDocumentHandler.processingInstruction(target, fStringBuffer, locationAugs(fCurrentEntity));
}
}

Expand Down Expand Up @@ -2724,10 +2677,7 @@ else if (c == '>') {
fBeginLineNumber = beginLineNumber;
fBeginColumnNumber = beginColumnNumber;
fBeginCharacterOffset = beginCharacterOffset;
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
fDocumentHandler.xmlDecl(version, encoding, standalone, locationAugs());
fDocumentHandler.xmlDecl(version, encoding, standalone, locationAugs(fCurrentEntity));
}
}
}
Expand Down Expand Up @@ -2824,14 +2774,11 @@ else if (fByteStream != null && "BODY".equalsIgnoreCase(ename)) {
if (DEBUG_CALLBACKS) {
System.out.println("startElement(" + qName_ + ',' + attributes_ + ")");
}
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
if (empty[0] && !"BR".equalsIgnoreCase(ename)) {
fDocumentHandler.emptyElement(qName_, attributes_, locationAugs());
fDocumentHandler.emptyElement(qName_, attributes_, locationAugs(fCurrentEntity));
}
else {
fDocumentHandler.startElement(qName_, attributes_, locationAugs());
fDocumentHandler.startElement(qName_, attributes_, locationAugs(fCurrentEntity));
}
}
return ename;
Expand Down Expand Up @@ -3222,10 +3169,7 @@ protected void scanEndElement() throws IOException {
if (DEBUG_CALLBACKS) {
System.out.println("endElement(" + qName_ + ")");
}
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
fDocumentHandler.endElement(qName_, locationAugs());
fDocumentHandler.endElement(qName_, locationAugs(fCurrentEntity));
}
}
}
Expand Down Expand Up @@ -3317,10 +3261,7 @@ public boolean scan(final boolean complete) throws IOException {
if (DEBUG_CALLBACKS) {
System.out.println("endElement(" + fQName_ + ")");
}
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
fDocumentHandler.endElement(fQName_, locationAugs());
fDocumentHandler.endElement(fQName_, locationAugs(fCurrentEntity));
}
setScanner(fContentScanner);
setScannerState(STATE_CONTENT);
Expand Down Expand Up @@ -3410,10 +3351,7 @@ else if (c == '\r' || c == '\n') {
if (DEBUG_CALLBACKS) {
System.out.println("characters(" + buffer + ")");
}
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
fDocumentHandler.characters(buffer, locationAugs());
fDocumentHandler.characters(buffer, locationAugs(fCurrentEntity));
}
if (DEBUG_BUFFER) {
fCurrentEntity.debugBufferIfNeeded(")scanCharacters: ");
Expand Down Expand Up @@ -3458,13 +3396,10 @@ protected void scanCharacters(final XMLString buffer, final boolean complete) th
if (DEBUG_CALLBACKS) {
System.out.println("characters(" + buffer + ")");
}
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
fDocumentHandler.characters(buffer, locationAugs());
fDocumentHandler.characters(buffer, locationAugs(fCurrentEntity));
}
if (complete) {
fDocumentHandler.endDocument(locationAugs());
fDocumentHandler.endDocument(locationAugs(fCurrentEntity));
}
if (DEBUG_BUFFER) {
fCurrentEntity.debugBufferIfNeeded(")scanCharacters: ");
Expand Down Expand Up @@ -3636,10 +3571,7 @@ else if (c == '<') {
if (DEBUG_CALLBACKS) {
System.out.println("characters(" + fScanScriptContent + ")");
}
fEndLineNumber = fCurrentEntity.getLineNumber();
fEndColumnNumber = fCurrentEntity.getColumnNumber();
fEndCharacterOffset = fCurrentEntity.getCharacterOffset();
fDocumentHandler.characters(fScanScriptContent, locationAugs());
fDocumentHandler.characters(fScanScriptContent, locationAugs(fCurrentEntity));
}

setScanner(fContentScanner);
Expand Down

0 comments on commit 9f51a22

Please sign in to comment.