public void End() { strBuf = null; longStrBuf = null; doctypeName = null; systemIdentifier = null; publicIdentifier = null; tagName = null; attributeName = null; TokenHandler.EndTokenization(); if (attributes != null) { attributes.Clear(mappingLangToXmlLang); attributes = null; } }
public void LoadState(Tokenizer other) { strBufLen = other.strBufLen; if (strBufLen > strBuf.Length) { strBuf = new char[strBufLen]; } Array.Copy(other.strBuf, strBuf, strBufLen); longStrBufLen = other.longStrBufLen; if (longStrBufLen > longStrBuf.Length) { longStrBuf = new char[longStrBufLen]; } Array.Copy(other.longStrBuf, longStrBuf, longStrBufLen); stateSave = other.stateSave; returnStateSave = other.returnStateSave; endTagExpectation = other.endTagExpectation; endTagExpectationAsArray = other.endTagExpectationAsArray; // line = 1; XXX line numbers lastCR = other.lastCR; index = other.index; forceQuirks = other.forceQuirks; additional = other.additional; entCol = other.entCol; firstCharKey = other.firstCharKey; lo = other.lo; hi = other.hi; candidate = other.candidate; strBufMark = other.strBufMark; prevValue = other.prevValue; value = other.value; seenDigits = other.seenDigits; endTag = other.endTag; shouldSuspend = false; if (other.doctypeName == null) { doctypeName = null; } else { doctypeName = other.doctypeName; } if (other.systemIdentifier == null) { systemIdentifier = null; } else { systemIdentifier = other.systemIdentifier; } if (other.publicIdentifier == null) { publicIdentifier = null; } else { publicIdentifier = other.publicIdentifier; } if (other.tagName == null) { tagName = null; } else { tagName = other.tagName.CloneElementName(); } if (other.attributeName == null) { attributeName = null; } else { attributeName = other.attributeName.CloneAttributeName(); } if (other.attributes == null) { attributes = null; } else { attributes = other.attributes.CloneAttributes(); } }
/** * The constructor. * * @param tokenHandler * the handler for receiving tokens */ public Tokenizer(ITreeBuilder tokenHandler) { this.TokenHandler = tokenHandler; this.bmpChar = new char[1]; this.astralChar = new char[2]; this.tagName = null; this.attributeName = null; this.doctypeName = null; this.publicIdentifier = null; this.systemIdentifier = null; this.attributes = null; }
private void AttributeNameComplete() { attributeName = AttributeName.NameByBuffer(strBuf, 0, strBufLen); if (attributes == null) { attributes = new HtmlAttributes(mappingLangToXmlLang); } /* * When the user agent leaves the attribute name state (and before * emitting the tag token, if appropriate), the complete attribute's * name must be compared to the other attributes on the same token; if * there is already an attribute on the token with the exact same name, * then this is a parse error and the new attribute must be dropped, * along with the value that gets associated with it (if any). */ if (attributes.Contains(attributeName)) { ErrDuplicateAttribute(); attributeName = null; } }
private void AddAttributeWithValue() { if (attributeName != null) { String val = LongStrBufToString(); // Ownership transferred to // HtmlAttributes attributes.AddAttribute(attributeName, val); attributeName = null; // attributeName has been adopted by the // |attributes| object } }
private void AddAttributeWithoutValue() { NoteAttributeWithoutValue(); if (attributeName != null) { attributes.AddAttribute(attributeName, String.Empty ); attributeName = null; // attributeName has been adopted by the // |attributes| object } }
public void ResetToDataState() { strBufLen = 0; longStrBufLen = 0; stateSave = Tokenizer.DATA; // line = 1; XXX line numbers lastCR = false; index = 0; forceQuirks = false; additional = '\u0000'; entCol = -1; firstCharKey = -1; lo = 0; hi = 0; // will always be overwritten before use anyway candidate = -1; strBufMark = 0; prevValue = -1; value = 0; seenDigits = false; endTag = false; shouldSuspend = false; InitDoctypeFields(); if (tagName != null) { tagName = null; } if (attributeName != null) { attributeName = null; } if (attributes != null) { attributes = null; } }