simple-html-tokenizer
Advanced tools
Comparing version 0.4.0 to 0.4.1
@@ -28,2 +28,2 @@ var HEXCHARCODE = /^#[xX]([A-Fa-f0-9]+)$/; | ||
export default EntityParser; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImVudGl0eS1wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUM7QUFDNUMsSUFBTSxRQUFRLEdBQU0sYUFBYSxDQUFDO0FBQ2xDLElBQU0sS0FBSyxHQUFTLGtCQUFrQixDQUFDO0FBRXZDO0lBQ0Usc0JBQW9CLEtBQUs7UUFBTCxVQUFLLEdBQUwsS0FBSyxDQUFBO0lBQUcsQ0FBQztJQUU3Qiw0QkFBSyxHQUFMLFVBQU0sTUFBTTtRQUNWLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNaLE1BQU0sQ0FBQztRQUNULENBQUM7UUFDRCxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDWixNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDWixNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDWixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQUNILG1CQUFDO0FBQUQsQ0FBQyxBQXBCRCxJQW9CQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEhFWENIQVJDT0RFID0gL14jW3hYXShbQS1GYS1mMC05XSspJC87XG5jb25zdCBDSEFSQ09ERSAgICA9IC9eIyhbMC05XSspJC87XG5jb25zdCBOQU1FRCAgICAgICA9IC9eKFtBLVphLXowLTldKykkLztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW50aXR5UGFyc2VyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuYW1lZCkge31cblxuICBwYXJzZShlbnRpdHkpIHtcbiAgICBpZiAoIWVudGl0eSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbWF0Y2hlcyA9IGVudGl0eS5tYXRjaChIRVhDSEFSQ09ERSk7XG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KG1hdGNoZXNbMV0sIDE2KSk7XG4gICAgfVxuICAgIG1hdGNoZXMgPSBlbnRpdHkubWF0Y2goQ0hBUkNPREUpO1xuICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChtYXRjaGVzWzFdLCAxMCkpO1xuICAgIH1cbiAgICBtYXRjaGVzID0gZW50aXR5Lm1hdGNoKE5BTUVEKTtcbiAgICBpZiAobWF0Y2hlcykge1xuICAgICAgcmV0dXJuIHRoaXMubmFtZWRbbWF0Y2hlc1sxXV07XG4gICAgfVxuICB9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImVudGl0eS1wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUM7QUFDNUMsSUFBTSxRQUFRLEdBQU0sYUFBYSxDQUFDO0FBQ2xDLElBQU0sS0FBSyxHQUFTLGtCQUFrQixDQUFDO0FBRXZDO0lBQ0Usc0JBQW9CLEtBQUs7UUFBTCxVQUFLLEdBQUwsS0FBSyxDQUFBO0lBQ3pCLENBQUM7SUFFRCw0QkFBSyxHQUFMLFVBQU0sTUFBTTtRQUNWLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNaLE1BQU0sQ0FBQztRQUNULENBQUM7UUFDRCxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDWixNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDWixNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDWixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQUNILG1CQUFDO0FBQUQsQ0FBQyxBQXJCRCxJQXFCQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEhFWENIQVJDT0RFID0gL14jW3hYXShbQS1GYS1mMC05XSspJC87XG5jb25zdCBDSEFSQ09ERSAgICA9IC9eIyhbMC05XSspJC87XG5jb25zdCBOQU1FRCAgICAgICA9IC9eKFtBLVphLXowLTldKykkLztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW50aXR5UGFyc2VyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuYW1lZCkge1xuICB9XG5cbiAgcGFyc2UoZW50aXR5KSB7XG4gICAgaWYgKCFlbnRpdHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IG1hdGNoZXMgPSBlbnRpdHkubWF0Y2goSEVYQ0hBUkNPREUpO1xuICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChtYXRjaGVzWzFdLCAxNikpO1xuICAgIH1cbiAgICBtYXRjaGVzID0gZW50aXR5Lm1hdGNoKENIQVJDT0RFKTtcbiAgICBpZiAobWF0Y2hlcykge1xuICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQobWF0Y2hlc1sxXSwgMTApKTtcbiAgICB9XG4gICAgbWF0Y2hlcyA9IGVudGl0eS5tYXRjaChOQU1FRCk7XG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLm5hbWVkW21hdGNoZXNbMV1dO1xuICAgIH1cbiAgfVxufVxuIl19 |
@@ -1,2 +0,43 @@ | ||
declare function EventedTokenizer(delegate: any, entityParser: any): void; | ||
export default EventedTokenizer; | ||
export default class EventedTokenizer { | ||
private delegate; | ||
private entityParser; | ||
private state; | ||
private input; | ||
private index; | ||
private tagLine; | ||
private tagColumn; | ||
line: number; | ||
column: number; | ||
constructor(delegate: any, entityParser: any); | ||
reset(): void; | ||
tokenize(input: any): void; | ||
tokenizePart(input: any): void; | ||
tokenizeEOF(): void; | ||
flushData(): void; | ||
peek(): any; | ||
consume(): any; | ||
consumeCharRef(): any; | ||
markTagStart(): void; | ||
states: { | ||
beforeData(): void; | ||
data(): void; | ||
tagOpen(): void; | ||
markupDeclaration(): void; | ||
commentStart(): void; | ||
commentStartDash(): void; | ||
comment(): void; | ||
commentEndDash(): void; | ||
commentEnd(): void; | ||
tagName(): void; | ||
beforeAttributeName(): void; | ||
attributeName(): void; | ||
afterAttributeName(): void; | ||
beforeAttributeValue(): void; | ||
attributeValueDoubleQuoted(): void; | ||
attributeValueSingleQuoted(): void; | ||
attributeValueUnquoted(): void; | ||
afterAttributeValueQuoted(): void; | ||
selfClosingStartTag(): void; | ||
endTagOpen(): void; | ||
}; | ||
} |
import { preprocessInput, isAlpha, isSpace } from './utils'; | ||
function EventedTokenizer(delegate, entityParser) { | ||
this.delegate = delegate; | ||
this.entityParser = entityParser; | ||
this.state = null; | ||
this.input = null; | ||
this.index = -1; | ||
this.line = -1; | ||
this.column = -1; | ||
this.tagLine = -1; | ||
this.tagColumn = -1; | ||
this.reset(); | ||
} | ||
EventedTokenizer.prototype = { | ||
reset: function () { | ||
var EventedTokenizer = (function () { | ||
function EventedTokenizer(delegate, entityParser) { | ||
this.delegate = delegate; | ||
this.entityParser = entityParser; | ||
this.state = null; | ||
this.input = null; | ||
this.index = -1; | ||
this.tagLine = -1; | ||
this.tagColumn = -1; | ||
this.line = -1; | ||
this.column = -1; | ||
this.states = { | ||
beforeData: function () { | ||
var char = this.peek(); | ||
if (char === "<") { | ||
this.state = 'tagOpen'; | ||
this.markTagStart(); | ||
this.consume(); | ||
} | ||
else { | ||
this.state = 'data'; | ||
this.delegate.beginData(); | ||
} | ||
}, | ||
data: function () { | ||
var char = this.peek(); | ||
if (char === "<") { | ||
this.delegate.finishData(); | ||
this.state = 'tagOpen'; | ||
this.markTagStart(); | ||
this.consume(); | ||
} | ||
else if (char === "&") { | ||
this.consume(); | ||
this.delegate.appendToData(this.consumeCharRef() || "&"); | ||
} | ||
else { | ||
this.consume(); | ||
this.delegate.appendToData(char); | ||
} | ||
}, | ||
tagOpen: function () { | ||
var char = this.consume(); | ||
if (char === "!") { | ||
this.state = 'markupDeclaration'; | ||
} | ||
else if (char === "/") { | ||
this.state = 'endTagOpen'; | ||
} | ||
else if (isAlpha(char)) { | ||
this.state = 'tagName'; | ||
this.delegate.beginStartTag(); | ||
this.delegate.appendToTagName(char.toLowerCase()); | ||
} | ||
}, | ||
markupDeclaration: function () { | ||
var char = this.consume(); | ||
if (char === "-" && this.input.charAt(this.index) === "-") { | ||
this.consume(); | ||
this.state = 'commentStart'; | ||
this.delegate.beginComment(); | ||
} | ||
}, | ||
commentStart: function () { | ||
var char = this.consume(); | ||
if (char === "-") { | ||
this.state = 'commentStartDash'; | ||
} | ||
else if (char === ">") { | ||
this.delegate.finishComment(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData(char); | ||
this.state = 'comment'; | ||
} | ||
}, | ||
commentStartDash: function () { | ||
var char = this.consume(); | ||
if (char === "-") { | ||
this.state = 'commentEnd'; | ||
} | ||
else if (char === ">") { | ||
this.delegate.finishComment(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData("-"); | ||
this.state = 'comment'; | ||
} | ||
}, | ||
comment: function () { | ||
var char = this.consume(); | ||
if (char === "-") { | ||
this.state = 'commentEndDash'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData(char); | ||
} | ||
}, | ||
commentEndDash: function () { | ||
var char = this.consume(); | ||
if (char === "-") { | ||
this.state = 'commentEnd'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData("-" + char); | ||
this.state = 'comment'; | ||
} | ||
}, | ||
commentEnd: function () { | ||
var char = this.consume(); | ||
if (char === ">") { | ||
this.delegate.finishComment(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData("--" + char); | ||
this.state = 'comment'; | ||
} | ||
}, | ||
tagName: function () { | ||
var char = this.consume(); | ||
if (isSpace(char)) { | ||
this.state = 'beforeAttributeName'; | ||
} | ||
else if (char === "/") { | ||
this.state = 'selfClosingStartTag'; | ||
} | ||
else if (char === ">") { | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.appendToTagName(char); | ||
} | ||
}, | ||
beforeAttributeName: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.consume(); | ||
return; | ||
} | ||
else if (char === "/") { | ||
this.state = 'selfClosingStartTag'; | ||
this.consume(); | ||
} | ||
else if (char === ">") { | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else if (char === '=') { | ||
this.delegate.reportSyntaxError("attribute name cannot start with equals sign"); | ||
this.state = 'attributeName'; | ||
this.delegate.beginAttribute(); | ||
this.consume(); | ||
this.delegate.appendToAttributeName(char); | ||
} | ||
else { | ||
this.state = 'attributeName'; | ||
this.delegate.beginAttribute(); | ||
} | ||
}, | ||
attributeName: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.state = 'afterAttributeName'; | ||
this.consume(); | ||
} | ||
else if (char === "/") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.state = 'selfClosingStartTag'; | ||
} | ||
else if (char === "=") { | ||
this.state = 'beforeAttributeValue'; | ||
this.consume(); | ||
} | ||
else if (char === ">") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else if (char === '"' || char === "'" || char === '<') { | ||
this.delegate.reportSyntaxError(char + " is not a valid character within attribute names"); | ||
this.consume(); | ||
this.delegate.appendToAttributeName(char); | ||
} | ||
else { | ||
this.consume(); | ||
this.delegate.appendToAttributeName(char); | ||
} | ||
}, | ||
afterAttributeName: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.consume(); | ||
return; | ||
} | ||
else if (char === "/") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.state = 'selfClosingStartTag'; | ||
} | ||
else if (char === "=") { | ||
this.consume(); | ||
this.state = 'beforeAttributeValue'; | ||
} | ||
else if (char === ">") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.state = 'attributeName'; | ||
this.delegate.beginAttribute(); | ||
this.delegate.appendToAttributeName(char); | ||
} | ||
}, | ||
beforeAttributeValue: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.consume(); | ||
} | ||
else if (char === '"') { | ||
this.state = 'attributeValueDoubleQuoted'; | ||
this.delegate.beginAttributeValue(true); | ||
this.consume(); | ||
} | ||
else if (char === "'") { | ||
this.state = 'attributeValueSingleQuoted'; | ||
this.delegate.beginAttributeValue(true); | ||
this.consume(); | ||
} | ||
else if (char === ">") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.state = 'attributeValueUnquoted'; | ||
this.delegate.beginAttributeValue(false); | ||
this.consume(); | ||
this.delegate.appendToAttributeValue(char); | ||
} | ||
}, | ||
attributeValueDoubleQuoted: function () { | ||
var char = this.consume(); | ||
if (char === '"') { | ||
this.delegate.finishAttributeValue(); | ||
this.state = 'afterAttributeValueQuoted'; | ||
} | ||
else if (char === "&") { | ||
this.delegate.appendToAttributeValue(this.consumeCharRef('"') || "&"); | ||
} | ||
else { | ||
this.delegate.appendToAttributeValue(char); | ||
} | ||
}, | ||
attributeValueSingleQuoted: function () { | ||
var char = this.consume(); | ||
if (char === "'") { | ||
this.delegate.finishAttributeValue(); | ||
this.state = 'afterAttributeValueQuoted'; | ||
} | ||
else if (char === "&") { | ||
this.delegate.appendToAttributeValue(this.consumeCharRef("'") || "&"); | ||
} | ||
else { | ||
this.delegate.appendToAttributeValue(char); | ||
} | ||
}, | ||
attributeValueUnquoted: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.state = 'beforeAttributeName'; | ||
} | ||
else if (char === "&") { | ||
this.consume(); | ||
this.delegate.appendToAttributeValue(this.consumeCharRef(">") || "&"); | ||
} | ||
else if (char === ">") { | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.consume(); | ||
this.delegate.appendToAttributeValue(char); | ||
} | ||
}, | ||
afterAttributeValueQuoted: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.consume(); | ||
this.state = 'beforeAttributeName'; | ||
} | ||
else if (char === "/") { | ||
this.consume(); | ||
this.state = 'selfClosingStartTag'; | ||
} | ||
else if (char === ">") { | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.state = 'beforeAttributeName'; | ||
} | ||
}, | ||
selfClosingStartTag: function () { | ||
var char = this.peek(); | ||
if (char === ">") { | ||
this.consume(); | ||
this.delegate.markTagAsSelfClosing(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.state = 'beforeAttributeName'; | ||
} | ||
}, | ||
endTagOpen: function () { | ||
var char = this.consume(); | ||
if (isAlpha(char)) { | ||
this.state = 'tagName'; | ||
this.delegate.beginEndTag(); | ||
this.delegate.appendToTagName(char.toLowerCase()); | ||
} | ||
} | ||
}; | ||
this.reset(); | ||
} | ||
EventedTokenizer.prototype.reset = function () { | ||
this.state = 'beforeData'; | ||
@@ -24,9 +359,9 @@ this.input = ''; | ||
this.delegate.reset(); | ||
}, | ||
tokenize: function (input) { | ||
}; | ||
EventedTokenizer.prototype.tokenize = function (input) { | ||
this.reset(); | ||
this.tokenizePart(input); | ||
this.tokenizeEOF(); | ||
}, | ||
tokenizePart: function (input) { | ||
}; | ||
EventedTokenizer.prototype.tokenizePart = function (input) { | ||
this.input += preprocessInput(input); | ||
@@ -36,7 +371,7 @@ while (this.index < this.input.length) { | ||
} | ||
}, | ||
tokenizeEOF: function () { | ||
}; | ||
EventedTokenizer.prototype.tokenizeEOF = function () { | ||
this.flushData(); | ||
}, | ||
flushData: function () { | ||
}; | ||
EventedTokenizer.prototype.flushData = function () { | ||
if (this.state === 'data') { | ||
@@ -46,7 +381,7 @@ this.delegate.finishData(); | ||
} | ||
}, | ||
peek: function () { | ||
}; | ||
EventedTokenizer.prototype.peek = function () { | ||
return this.input.charAt(this.index); | ||
}, | ||
consume: function () { | ||
}; | ||
EventedTokenizer.prototype.consume = function () { | ||
var char = this.peek(); | ||
@@ -62,4 +397,4 @@ this.index++; | ||
return char; | ||
}, | ||
consumeCharRef: function () { | ||
}; | ||
EventedTokenizer.prototype.consumeCharRef = function () { | ||
var endIndex = this.input.indexOf(';', this.index); | ||
@@ -82,4 +417,4 @@ if (endIndex === -1) { | ||
} | ||
}, | ||
markTagStart: function () { | ||
}; | ||
EventedTokenizer.prototype.markTagStart = function () { | ||
// these properties to be removed in next major bump | ||
@@ -91,340 +426,6 @@ this.tagLine = this.line; | ||
} | ||
}, | ||
states: { | ||
beforeData: function () { | ||
var char = this.peek(); | ||
if (char === "<") { | ||
this.state = 'tagOpen'; | ||
this.markTagStart(); | ||
this.consume(); | ||
} | ||
else { | ||
this.state = 'data'; | ||
this.delegate.beginData(); | ||
} | ||
}, | ||
data: function () { | ||
var char = this.peek(); | ||
if (char === "<") { | ||
this.delegate.finishData(); | ||
this.state = 'tagOpen'; | ||
this.markTagStart(); | ||
this.consume(); | ||
} | ||
else if (char === "&") { | ||
this.consume(); | ||
this.delegate.appendToData(this.consumeCharRef() || "&"); | ||
} | ||
else { | ||
this.consume(); | ||
this.delegate.appendToData(char); | ||
} | ||
}, | ||
tagOpen: function () { | ||
var char = this.consume(); | ||
if (char === "!") { | ||
this.state = 'markupDeclaration'; | ||
} | ||
else if (char === "/") { | ||
this.state = 'endTagOpen'; | ||
} | ||
else if (isAlpha(char)) { | ||
this.state = 'tagName'; | ||
this.delegate.beginStartTag(); | ||
this.delegate.appendToTagName(char.toLowerCase()); | ||
} | ||
}, | ||
markupDeclaration: function () { | ||
var char = this.consume(); | ||
if (char === "-" && this.input.charAt(this.index) === "-") { | ||
this.consume(); | ||
this.state = 'commentStart'; | ||
this.delegate.beginComment(); | ||
} | ||
}, | ||
commentStart: function () { | ||
var char = this.consume(); | ||
if (char === "-") { | ||
this.state = 'commentStartDash'; | ||
} | ||
else if (char === ">") { | ||
this.delegate.finishComment(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData(char); | ||
this.state = 'comment'; | ||
} | ||
}, | ||
commentStartDash: function () { | ||
var char = this.consume(); | ||
if (char === "-") { | ||
this.state = 'commentEnd'; | ||
} | ||
else if (char === ">") { | ||
this.delegate.finishComment(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData("-"); | ||
this.state = 'comment'; | ||
} | ||
}, | ||
comment: function () { | ||
var char = this.consume(); | ||
if (char === "-") { | ||
this.state = 'commentEndDash'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData(char); | ||
} | ||
}, | ||
commentEndDash: function () { | ||
var char = this.consume(); | ||
if (char === "-") { | ||
this.state = 'commentEnd'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData("-" + char); | ||
this.state = 'comment'; | ||
} | ||
}, | ||
commentEnd: function () { | ||
var char = this.consume(); | ||
if (char === ">") { | ||
this.delegate.finishComment(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData("--" + char); | ||
this.state = 'comment'; | ||
} | ||
}, | ||
tagName: function () { | ||
var char = this.consume(); | ||
if (isSpace(char)) { | ||
this.state = 'beforeAttributeName'; | ||
} | ||
else if (char === "/") { | ||
this.state = 'selfClosingStartTag'; | ||
} | ||
else if (char === ">") { | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.appendToTagName(char); | ||
} | ||
}, | ||
beforeAttributeName: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.consume(); | ||
return; | ||
} | ||
else if (char === "/") { | ||
this.state = 'selfClosingStartTag'; | ||
this.consume(); | ||
} | ||
else if (char === ">") { | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else if (char === '=') { | ||
this.delegate.reportSyntaxError("attribute name cannot start with equals sign"); | ||
this.state = 'attributeName'; | ||
this.delegate.beginAttribute(); | ||
this.consume(); | ||
this.delegate.appendToAttributeName(char); | ||
} | ||
else { | ||
this.state = 'attributeName'; | ||
this.delegate.beginAttribute(); | ||
} | ||
}, | ||
attributeName: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.state = 'afterAttributeName'; | ||
this.consume(); | ||
} | ||
else if (char === "/") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.state = 'selfClosingStartTag'; | ||
} | ||
else if (char === "=") { | ||
this.state = 'beforeAttributeValue'; | ||
this.consume(); | ||
} | ||
else if (char === ">") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else if (char === '"' || char === "'" || char === '<') { | ||
this.delegate.reportSyntaxError(char + " is not a valid character within attribute names"); | ||
this.consume(); | ||
this.delegate.appendToAttributeName(char); | ||
} | ||
else { | ||
this.consume(); | ||
this.delegate.appendToAttributeName(char); | ||
} | ||
}, | ||
afterAttributeName: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.consume(); | ||
return; | ||
} | ||
else if (char === "/") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.state = 'selfClosingStartTag'; | ||
} | ||
else if (char === "=") { | ||
this.consume(); | ||
this.state = 'beforeAttributeValue'; | ||
} | ||
else if (char === ">") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.state = 'attributeName'; | ||
this.delegate.beginAttribute(); | ||
this.delegate.appendToAttributeName(char); | ||
} | ||
}, | ||
beforeAttributeValue: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.consume(); | ||
} | ||
else if (char === '"') { | ||
this.state = 'attributeValueDoubleQuoted'; | ||
this.delegate.beginAttributeValue(true); | ||
this.consume(); | ||
} | ||
else if (char === "'") { | ||
this.state = 'attributeValueSingleQuoted'; | ||
this.delegate.beginAttributeValue(true); | ||
this.consume(); | ||
} | ||
else if (char === ">") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.state = 'attributeValueUnquoted'; | ||
this.delegate.beginAttributeValue(false); | ||
this.consume(); | ||
this.delegate.appendToAttributeValue(char); | ||
} | ||
}, | ||
attributeValueDoubleQuoted: function () { | ||
var char = this.consume(); | ||
if (char === '"') { | ||
this.delegate.finishAttributeValue(); | ||
this.state = 'afterAttributeValueQuoted'; | ||
} | ||
else if (char === "&") { | ||
this.delegate.appendToAttributeValue(this.consumeCharRef('"') || "&"); | ||
} | ||
else { | ||
this.delegate.appendToAttributeValue(char); | ||
} | ||
}, | ||
attributeValueSingleQuoted: function () { | ||
var char = this.consume(); | ||
if (char === "'") { | ||
this.delegate.finishAttributeValue(); | ||
this.state = 'afterAttributeValueQuoted'; | ||
} | ||
else if (char === "&") { | ||
this.delegate.appendToAttributeValue(this.consumeCharRef("'") || "&"); | ||
} | ||
else { | ||
this.delegate.appendToAttributeValue(char); | ||
} | ||
}, | ||
attributeValueUnquoted: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.state = 'beforeAttributeName'; | ||
} | ||
else if (char === "&") { | ||
this.consume(); | ||
this.delegate.appendToAttributeValue(this.consumeCharRef(">") || "&"); | ||
} | ||
else if (char === ">") { | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.consume(); | ||
this.delegate.appendToAttributeValue(char); | ||
} | ||
}, | ||
afterAttributeValueQuoted: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.consume(); | ||
this.state = 'beforeAttributeName'; | ||
} | ||
else if (char === "/") { | ||
this.consume(); | ||
this.state = 'selfClosingStartTag'; | ||
} | ||
else if (char === ">") { | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.state = 'beforeAttributeName'; | ||
} | ||
}, | ||
selfClosingStartTag: function () { | ||
var char = this.peek(); | ||
if (char === ">") { | ||
this.consume(); | ||
this.delegate.markTagAsSelfClosing(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.state = 'beforeAttributeName'; | ||
} | ||
}, | ||
endTagOpen: function () { | ||
var char = this.consume(); | ||
if (isAlpha(char)) { | ||
this.state = 'tagName'; | ||
this.delegate.beginEndTag(); | ||
this.delegate.appendToTagName(char.toLowerCase()); | ||
} | ||
} | ||
} | ||
}; | ||
}; | ||
return EventedTokenizer; | ||
}()); | ||
export default EventedTokenizer; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRlZC10b2tlbml6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJldmVudGVkLXRva2VuaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFNUQsMEJBQTBCLFFBQVEsRUFBRSxZQUFZO0lBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBRWpDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBRWxCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRXBCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNmLENBQUM7QUFFRCxnQkFBZ0IsQ0FBQyxTQUFTLEdBQUc7SUFDM0IsS0FBSyxFQUFFO1FBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFFaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRWhCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVw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RUQsbUJBQW1CLEVBQUU7WUFDbkIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXZCLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNqQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQztZQUM1QixDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQztZQUNyQyxDQUFDO1FBQ0gsQ0FBQztRQUVELFVBQVUsRUFBRTtZQUNWLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUUxQixFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDcEQsQ0FBQztRQUNILENBQUM7S0FDRjtDQUNGLENBQUM7QUFFRixlQUFlLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJlcHJvY2Vzc0lucHV0LCBpc0FscGhhLCBpc1NwYWNlIH0gZnJvbSAnLi91dGlscyc7XG5cbmZ1bmN0aW9uIEV2ZW50ZWRUb2tlbml6ZXIoZGVsZWdhdGUsIGVudGl0eVBhcnNlcikge1xuICB0aGlzLmRlbGVnYXRlID0gZGVsZWdhdGU7XG4gIHRoaXMuZW50aXR5UGFyc2VyID0gZW50aXR5UGFyc2VyO1xuXG4gIHRoaXMuc3RhdGUgPSBudWxsO1xuICB0aGlzLmlucHV0ID0gbnVsbDtcblxuICB0aGlzLmluZGV4ID0gLTE7XG4gIHRoaXMubGluZSA9IC0xO1xuICB0aGlzLmNvbHVtbiA9IC0xO1xuICB0aGlzLnRhZ0xpbmUgPSAtMTtcbiAgdGhpcy50YWdDb2x1bW4gPSAtMTtcblxuICB0aGlzLnJlc2V0KCk7XG59XG5cbkV2ZW50ZWRUb2tlbml6ZXIucHJvdG90eXBlID0ge1xuICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICB0aGlzLmlucHV0ID0gJyc7XG5cbiAgICB0aGlzLmluZGV4ID0gMDtcbiAgICB0aGlzLmxpbmUgPSAxO1xuICAgIHRoaXMuY29sdW1uID0gMDtcblxuICAgIHRoaXMudGFnTGluZSA9IC0xO1xuICAgIHRoaXMudGFnQ29sdW1uID0gLTE7XG5cbiAgICB0aGlzLmRlbGVnYXRlLnJlc2V0KCk7XG4gIH0sXG5cbiAgdG9rZW5pemU6IGZ1bmN0aW9uKGlucHV0KSB7XG4gICAgdGhpcy5yZXNldCgpO1xuICAgIHRoaXMudG9rZW5pemVQYXJ0KGlucHV0KTtcbiAgICB0aGlzLnRva2VuaXplRU9GKCk7XG4gIH0sXG5cbiAgdG9rZW5pemVQYXJ0OiBmdW5jdGlvbihpbnB1dCkge1xuICAgIHRoaXMuaW5wdXQgKz0gcHJlcHJvY2Vzc0lucHV0KGlucHV0KTtcblxuICAgIHdoaWxlICh0aGlzLmluZGV4IDwgdGhpcy5pbnB1dC5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3RhdGVzW3RoaXMuc3RhdGVdLmNhbGwodGhpcyk7XG4gICAgfVxuICB9LFxuXG4gIHRva2VuaXplRU9GOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmZsdXNoRGF0YSgpO1xuICB9LFxuXG4gIGZsdXNoRGF0YTogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdkYXRhJykge1xuICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hEYXRhKCk7XG4gICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgIH1cbiAgfSxcblxuICBwZWVrOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dC5jaGFyQXQodGhpcy5pbmRleCk7XG4gIH0sXG5cbiAgY29uc3VtZTogZnVuY3Rpb24oKSB7XG4gICAgbGV0IGNoYXIgPSB0aGlzLnBlZWsoKTtcblxuICAgIHRoaXMuaW5kZXgrKztcblxuICAgIGlmIChjaGFyID09PSBcIlxcblwiKSB7XG4gICAgICB0aGlzLmxpbmUrKztcbiAgICAgIHRoaXMuY29sdW1uID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2x1bW4rKztcbiAgICB9XG5cbiAgICByZXR1cm4gY2hhcjtcbiAgfSxcblxuICBjb25zdW1lQ2hhclJlZjogZnVuY3Rpb24oKSB7XG4gICAgbGV0IGVuZEluZGV4ID0gdGhpcy5pbnB1dC5pbmRleE9mKCc7JywgdGhpcy5pbmRleCk7XG4gICAgaWYgKGVuZEluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZW50aXR5ID0gdGhpcy5pbnB1dC5zbGljZSh0aGlzLmluZGV4LCBlbmRJbmRleCk7XG4gICAgbGV0IGNoYXJzID0gdGhpcy5lbnRpdHlQYXJzZXIucGFyc2UoZW50aXR5KTtcbiAgICBpZiAoY2hhcnMpIHtcbiAgICAgIGxldCBjb3VudCA9IGVudGl0eS5sZW5ndGg7XG4gICAgICAvLyBjb25zdW1lIHRoZSBlbnRpdHkgY2hhcnNcbiAgICAgIHdoaWxlIChjb3VudCkge1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgY291bnQtLTtcbiAgICAgIH1cbiAgICAgIC8vIGNvbnN1bWUgdGhlIGA7YFxuICAgICAgdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIHJldHVybiBjaGFycztcbiAgICB9XG4gIH0sXG5cbiAgbWFya1RhZ1N0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICAvLyB0aGVzZSBwcm9wZXJ0aWVzIHRvIGJlIHJlbW92ZWQgaW4gbmV4dCBtYWpvciBidW1wXG4gICAgdGhpcy50YWdMaW5lID0gdGhpcy5saW5lO1xuICAgIHRoaXMudGFnQ29sdW1uID0gdGhpcy5jb2x1bW47XG5cbiAgICBpZiAodGhpcy5kZWxlZ2F0ZS50YWdPcGVuKSB7XG4gICAgICB0aGlzLmRlbGVnYXRlLnRhZ09wZW4oKTtcbiAgICB9XG4gIH0sXG5cbiAgc3RhdGVzOiB7XG4gICAgYmVmb3JlRGF0YTogZnVuY3Rpb24oKSB7XG4gICAgICBsZXQgY2hhciA9IHRoaXMucGVlaygpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCI8XCIpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICd0YWdPcGVuJztcbiAgICAgICAgdGhpcy5tYXJrVGFnU3RhcnQoKTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2RhdGEnO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luRGF0YSgpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBkYXRhOiBmdW5jdGlvbigpIHtcbiAgICAgIGxldCBjaGFyID0gdGhpcy5wZWVrKCk7XG5cbiAgICAgIGlmIChjaGFyID09PSBcIjxcIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaERhdGEoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICd0YWdPcGVuJztcbiAgICAgICAgdGhpcy5tYXJrVGFnU3RhcnQoKTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7wqBcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCImXCIpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9EYXRhKHRoaXMuY29uc3VtZUNoYXJSZWYoKSB8fCBcIiZcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0RhdGEoY2hhcik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIHRhZ09wZW46IGZ1bmN0aW9uKCkge1xuICAgICAgbGV0IGNoYXIgPSB0aGlzLmNvbnN1bWUoKTtcblxuICAgICAgaWYgKGNoYXIgPT09IFwiIVwiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnbWFya3VwRGVjbGFyYXRpb24nO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIi9cIikge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2VuZFRhZ09wZW4nO1xuICAgICAgfSBlbHNlIGlmIChpc0FscGhhKGNoYXIpKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAndGFnTmFtZSc7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5TdGFydFRhZygpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvVGFnTmFtZShjaGFyLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBtYXJrdXBEZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICBsZXQgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCItXCIgJiYgdGhpcy5pbnB1dC5jaGFyQXQodGhpcy5pbmRleCkgPT09IFwiLVwiKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2NvbW1lbnRTdGFydCc7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5Db21tZW50KCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGNvbW1lbnRTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgICBsZXQgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCItXCIpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdjb21tZW50U3RhcnREYXNoJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCI+XCIpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hDb21tZW50KCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlRGF0YSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQ29tbWVudERhdGEoY2hhcik7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnY29tbWVudCc7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGNvbW1lbnRTdGFydERhc2g6IGZ1bmN0aW9uKCkge1xuICAgICAgbGV0IGNoYXIgPSB0aGlzLmNvbnN1bWUoKTtcblxuICAgICAgaWYgKGNoYXIgPT09IFwiLVwiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnY29tbWVudEVuZCc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiPlwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQ29tbWVudCgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0NvbW1lbnREYXRhKFwiLVwiKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdjb21tZW50JztcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgY29tbWVudDogZnVuY3Rpb24oKSB7XG4gICAgICBsZXQgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCItXCIpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdjb21tZW50RW5kRGFzaCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQ29tbWVudERhdGEoY2hhcik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGNvbW1lbnRFbmREYXNoOiBmdW5jdGlvbigpIHtcbiAgICAgIGxldCBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChjaGFyID09PSBcIi1cIikge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2NvbW1lbnRFbmQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0NvbW1lbnREYXRhKFwiLVwiICsgY2hhcik7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnY29tbWVudCc7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGNvbW1lbnRFbmQ6IGZ1bmN0aW9uKCkge1xuICAgICAgbGV0IGNoYXIgPSB0aGlzLmNvbnN1bWUoKTtcblxuICAgICAgaWYgKGNoYXIgPT09IFwiPlwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQ29tbWVudCgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0NvbW1lbnREYXRhKFwiLS1cIiArIGNoYXIpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2NvbW1lbnQnO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICB0YWdOYW1lOiBmdW5jdGlvbigpIHtcbiAgICAgIGxldCBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChpc1NwYWNlKGNoYXIpKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlQXR0cmlidXRlTmFtZSc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiL1wiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnc2VsZkNsb3NpbmdTdGFydFRhZyc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiPlwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoVGFnKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlRGF0YSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvVGFnTmFtZShjaGFyKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYmVmb3JlQXR0cmlidXRlTmFtZTogZnVuY3Rpb24oKSB7XG4gICAgICBsZXQgY2hhciA9IHRoaXMucGVlaygpO1xuXG4gICAgICBpZiAoaXNTcGFjZShjaGFyKSkge1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIi9cIikge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ3NlbGZDbG9zaW5nU3RhcnRUYWcnO1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCI+XCIpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoVGFnKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlRGF0YSc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09ICc9Jykge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLnJlcG9ydFN5bnRheEVycm9yKFwiYXR0cmlidXRlIG5hbWUgY2Fubm90IHN0YXJ0IHdpdGggZXF1YWxzIHNpZ25cIik7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYXR0cmlidXRlTmFtZSc7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGUoKTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGNoYXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdhdHRyaWJ1dGVOYW1lJztcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZSgpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhdHRyaWJ1dGVOYW1lOiBmdW5jdGlvbigpIHtcbiAgICAgIGxldCBjaGFyID0gdGhpcy5wZWVrKCk7XG5cbiAgICAgIGlmIChpc1NwYWNlKGNoYXIpKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYWZ0ZXJBdHRyaWJ1dGVOYW1lJztcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiL1wiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnc2VsZkNsb3NpbmdTdGFydFRhZyc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiPVwiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlQXR0cmlidXRlVmFsdWUnO1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCI+XCIpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hUYWcoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gJ1wiJyB8fCBjaGFyID09PSBcIidcIiB8fCBjaGFyID09PSAnPCcpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5yZXBvcnRTeW50YXhFcnJvcihjaGFyICsgXCIgaXMgbm90IGEgdmFsaWQgY2hhcmFjdGVyIHdpdGhpbiBhdHRyaWJ1dGUgbmFtZXNcIik7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlTmFtZShjaGFyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlTmFtZShjaGFyKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYWZ0ZXJBdHRyaWJ1dGVOYW1lOiBmdW5jdGlvbigpIHtcbiAgICAgIGxldCBjaGFyID0gdGhpcy5wZWVrKCk7XG5cbiAgICAgIGlmIChpc1NwYWNlKGNoYXIpKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiL1wiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnc2VsZkNsb3NpbmdTdGFydFRhZyc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiPVwiKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZUF0dHJpYnV0ZVZhbHVlJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCI+XCIpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hUYWcoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYXR0cmlidXRlTmFtZSc7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2hhcik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGJlZm9yZUF0dHJpYnV0ZVZhbHVlOiBmdW5jdGlvbigpIHtcbiAgICAgIGxldCBjaGFyID0gdGhpcy5wZWVrKCk7XG5cbiAgICAgIGlmIChpc1NwYWNlKGNoYXIpKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSAnXCInKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWQnO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luQXR0cmlidXRlVmFsdWUodHJ1ZSk7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIidcIikge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2F0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkJztcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZVZhbHVlKHRydWUpO1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCI+XCIpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hUYWcoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYXR0cmlidXRlVmFsdWVVbnF1b3RlZCc7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2hhcik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgIGxldCBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChjaGFyID09PSAnXCInKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdhZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCImXCIpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKHRoaXMuY29uc3VtZUNoYXJSZWYoJ1wiJykgfHwgXCImXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNoYXIpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICBsZXQgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCInXCIpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2FmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWQnO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIiZcIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUodGhpcy5jb25zdW1lQ2hhclJlZihcIidcIikgfHwgXCImXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNoYXIpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhdHRyaWJ1dGVWYWx1ZVVucXVvdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgIGxldCBjaGFyID0gdGhpcy5wZWVrKCk7XG5cbiAgICAgIGlmIChpc1NwYWNlKGNoYXIpKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlQXR0cmlidXRlTmFtZSc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiJlwiKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUodGhpcy5jb25zdW1lQ2hhclJlZihcIj5cIikgfHwgXCImXCIpO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIj5cIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaFRhZygpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjaGFyKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICBsZXQgY2hhciA9IHRoaXMucGVlaygpO1xuXG4gICAgICBpZiAoaXNTcGFjZShjaGFyKSkge1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVBdHRyaWJ1dGVOYW1lJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCIvXCIpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnc2VsZkNsb3NpbmdTdGFydFRhZyc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiPlwiKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaFRhZygpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVBdHRyaWJ1dGVOYW1lJztcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc2VsZkNsb3NpbmdTdGFydFRhZzogZnVuY3Rpb24oKSB7XG4gICAgICBsZXQgY2hhciA9IHRoaXMucGVlaygpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCI+XCIpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUubWFya1RhZ0FzU2VsZkNsb3NpbmcoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hUYWcoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlQXR0cmlidXRlTmFtZSc7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGVuZFRhZ09wZW46IGZ1bmN0aW9uKCkge1xuICAgICAgbGV0IGNoYXIgPSB0aGlzLmNvbnN1bWUoKTtcblxuICAgICAgaWYgKGlzQWxwaGEoY2hhcikpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICd0YWdOYW1lJztcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5iZWdpbkVuZFRhZygpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvVGFnTmFtZShjaGFyLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgRXZlbnRlZFRva2VuaXplcjtcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRlZC10b2tlbml6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJldmVudGVkLXRva2VuaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFNUQ7SUFVRSwwQkFBb0IsUUFBUSxFQUFVLFlBQVk7UUFBOUIsYUFBUSxHQUFSLFFBQVEsQ0FBQTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFBO1FBVDFDLFVBQUssR0FBUSxJQUFJLENBQUM7UUFDbEIsVUFBSyxHQUFRLElBQUksQ0FBQztRQUNsQixVQUFLLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDbkIsWUFBTyxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLGNBQVMsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUV4QixTQUFJLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDbEIsV0FBTSxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBK0YzQixXQUFNLEdBQUc7WUFDUCxVQUFVO2dCQUNSLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFFdkIsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO29CQUN2QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDakIsQ0FBQztnQkFBQyxJQUFJLENBQUMsQ0FBQztvQkFDTixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztvQkFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDNUIsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJO2dCQUNGLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFFdkIsRUFBRSxDQUFD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USxDQUFDLENBQUM7UUFDcEQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNWLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDMUIsMkJBQTJCO1lBQzNCLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNmLEtBQUssRUFBRSxDQUFDO1lBQ1YsQ0FBQztZQUNELGtCQUFrQjtZQUNsQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFZixNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRCx1Q0FBWSxHQUFaO1FBQ0Usb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFN0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUE2VUgsdUJBQUM7QUFBRCxDQUFDLEFBbGJELElBa2JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJlcHJvY2Vzc0lucHV0LCBpc0FscGhhLCBpc1NwYWNlIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV2ZW50ZWRUb2tlbml6ZXIge1xuICBwcml2YXRlIHN0YXRlOiBhbnkgPSBudWxsO1xuICBwcml2YXRlIGlucHV0OiBhbnkgPSBudWxsO1xuICBwcml2YXRlIGluZGV4OiBudW1iZXIgPSAtMTtcbiAgcHJpdmF0ZSB0YWdMaW5lOiBudW1iZXIgPSAtMTtcbiAgcHJpdmF0ZSB0YWdDb2x1bW46IG51bWJlciA9IC0xO1xuXG4gIHB1YmxpYyBsaW5lOiBudW1iZXIgPSAtMTtcbiAgcHVibGljIGNvbHVtbjogbnVtYmVyID0gLTE7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkZWxlZ2F0ZSwgcHJpdmF0ZSBlbnRpdHlQYXJzZXIpIHtcbiAgICB0aGlzLnJlc2V0KCk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgIHRoaXMuaW5wdXQgPSAnJztcblxuICAgIHRoaXMuaW5kZXggPSAwO1xuICAgIHRoaXMubGluZSA9IDE7XG4gICAgdGhpcy5jb2x1bW4gPSAwO1xuXG4gICAgdGhpcy50YWdMaW5lID0gLTE7XG4gICAgdGhpcy50YWdDb2x1bW4gPSAtMTtcblxuICAgIHRoaXMuZGVsZWdhdGUucmVzZXQoKTtcbiAgfVxuXG4gIHRva2VuaXplKGlucHV0KSB7XG4gICAgdGhpcy5yZXNldCgpO1xuICAgIHRoaXMudG9rZW5pemVQYXJ0KGlucHV0KTtcbiAgICB0aGlzLnRva2VuaXplRU9GKCk7XG4gIH1cblxuICB0b2tlbml6ZVBhcnQoaW5wdXQpIHtcbiAgICB0aGlzLmlucHV0ICs9IHByZXByb2Nlc3NJbnB1dChpbnB1dCk7XG5cbiAgICB3aGlsZSAodGhpcy5pbmRleCA8IHRoaXMuaW5wdXQubGVuZ3RoKSB7XG4gICAgICB0aGlzLnN0YXRlc1t0aGlzLnN0YXRlXS5jYWxsKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHRva2VuaXplRU9GKCkge1xuICAgIHRoaXMuZmx1c2hEYXRhKCk7XG4gIH1cblxuICBmbHVzaERhdGEoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdkYXRhJykge1xuICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hEYXRhKCk7XG4gICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgIH1cbiAgfVxuXG4gIHBlZWsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXQuY2hhckF0KHRoaXMuaW5kZXgpO1xuICB9XG5cbiAgY29uc3VtZSgpIHtcbiAgICBsZXQgY2hhciA9IHRoaXMucGVlaygpO1xuXG4gICAgdGhpcy5pbmRleCsrO1xuXG4gICAgaWYgKGNoYXIgPT09IFwiXFxuXCIpIHtcbiAgICAgIHRoaXMubGluZSsrO1xuICAgICAgdGhpcy5jb2x1bW4gPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbHVtbisrO1xuICAgIH1cblxuICAgIHJldHVybiBjaGFyO1xuICB9XG5cbiAgY29uc3VtZUNoYXJSZWYoKSB7XG4gICAgbGV0IGVuZEluZGV4ID0gdGhpcy5pbnB1dC5pbmRleE9mKCc7JywgdGhpcy5pbmRleCk7XG4gICAgaWYgKGVuZEluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZW50aXR5ID0gdGhpcy5pbnB1dC5zbGljZSh0aGlzLmluZGV4LCBlbmRJbmRleCk7XG4gICAgbGV0IGNoYXJzID0gdGhpcy5lbnRpdHlQYXJzZXIucGFyc2UoZW50aXR5KTtcbiAgICBpZiAoY2hhcnMpIHtcbiAgICAgIGxldCBjb3VudCA9IGVudGl0eS5sZW5ndGg7XG4gICAgICAvLyBjb25zdW1lIHRoZSBlbnRpdHkgY2hhcnNcbiAgICAgIHdoaWxlIChjb3VudCkge1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgY291bnQtLTtcbiAgICAgIH1cbiAgICAgIC8vIGNvbnN1bWUgdGhlIGA7YFxuICAgICAgdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIHJldHVybiBjaGFycztcbiAgICB9XG4gIH1cblxuICBtYXJrVGFnU3RhcnQoKSB7XG4gICAgLy8gdGhlc2UgcHJvcGVydGllcyB0byBiZSByZW1vdmVkIGluIG5leHQgbWFqb3IgYnVtcFxuICAgIHRoaXMudGFnTGluZSA9IHRoaXMubGluZTtcbiAgICB0aGlzLnRhZ0NvbHVtbiA9IHRoaXMuY29sdW1uO1xuXG4gICAgaWYgKHRoaXMuZGVsZWdhdGUudGFnT3Blbikge1xuICAgICAgdGhpcy5kZWxlZ2F0ZS50YWdPcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGVzID0ge1xuICAgIGJlZm9yZURhdGEoKSB7XG4gICAgICBsZXQgY2hhciA9IHRoaXMucGVlaygpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCI8XCIpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICd0YWdPcGVuJztcbiAgICAgICAgdGhpcy5tYXJrVGFnU3RhcnQoKTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2RhdGEnO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luRGF0YSgpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBkYXRhKCkge1xuICAgICAgbGV0IGNoYXIgPSB0aGlzLnBlZWsoKTtcblxuICAgICAgaWYgKGNoYXIgPT09IFwiPFwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoRGF0YSgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ3RhZ09wZW4nO1xuICAgICAgICB0aGlzLm1hcmtUYWdTdGFydCgpO1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTvCoFxuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIiZcIikge1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0RhdGEodGhpcy5jb25zdW1lQ2hhclJlZigpIHx8IFwiJlwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvRGF0YShjaGFyKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgdGFnT3BlbigpIHtcbiAgICAgIGxldCBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChjaGFyID09PSBcIiFcIikge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ21hcmt1cERlY2xhcmF0aW9uJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCIvXCIpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdlbmRUYWdPcGVuJztcbiAgICAgIH0gZWxzZSBpZiAoaXNBbHBoYShjaGFyKSkge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ3RhZ05hbWUnO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luU3RhcnRUYWcoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb1RhZ05hbWUoY2hhci50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgbWFya3VwRGVjbGFyYXRpb24oKSB7XG4gICAgICBsZXQgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCItXCIgJiYgdGhpcy5pbnB1dC5jaGFyQXQodGhpcy5pbmRleCkgPT09IFwiLVwiKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2NvbW1lbnRTdGFydCc7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5Db21tZW50KCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGNvbW1lbnRTdGFydCgpIHtcbiAgICAgIGxldCBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChjaGFyID09PSBcIi1cIikge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2NvbW1lbnRTdGFydERhc2gnO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIj5cIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaENvbW1lbnQoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9Db21tZW50RGF0YShjaGFyKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdjb21tZW50JztcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgY29tbWVudFN0YXJ0RGFzaCgpIHtcbiAgICAgIGxldCBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChjaGFyID09PSBcIi1cIikge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2NvbW1lbnRFbmQnO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIj5cIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaENvbW1lbnQoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9Db21tZW50RGF0YShcIi1cIik7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnY29tbWVudCc7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGNvbW1lbnQoKSB7XG4gICAgICBsZXQgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCItXCIpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdjb21tZW50RW5kRGFzaCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQ29tbWVudERhdGEoY2hhcik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGNvbW1lbnRFbmREYXNoKCkge1xuICAgICAgbGV0IGNoYXIgPSB0aGlzLmNvbnN1bWUoKTtcblxuICAgICAgaWYgKGNoYXIgPT09IFwiLVwiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnY29tbWVudEVuZCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQ29tbWVudERhdGEoXCItXCIgKyBjaGFyKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdjb21tZW50JztcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgY29tbWVudEVuZCgpIHtcbiAgICAgIGxldCBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChjaGFyID09PSBcIj5cIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaENvbW1lbnQoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9Db21tZW50RGF0YShcIi0tXCIgKyBjaGFyKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdjb21tZW50JztcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgdGFnTmFtZSgpIHtcbiAgICAgIGxldCBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChpc1NwYWNlKGNoYXIpKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlQXR0cmlidXRlTmFtZSc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiL1wiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnc2VsZkNsb3NpbmdTdGFydFRhZyc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiPlwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoVGFnKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlRGF0YSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvVGFnTmFtZShjaGFyKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYmVmb3JlQXR0cmlidXRlTmFtZSgpIHtcbiAgICAgIGxldCBjaGFyID0gdGhpcy5wZWVrKCk7XG5cbiAgICAgIGlmIChpc1NwYWNlKGNoYXIpKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiL1wiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnc2VsZkNsb3NpbmdTdGFydFRhZyc7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIj5cIikge1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hUYWcoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gJz0nKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUucmVwb3J0U3ludGF4RXJyb3IoXCJhdHRyaWJ1dGUgbmFtZSBjYW5ub3Qgc3RhcnQgd2l0aCBlcXVhbHMgc2lnblwiKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdhdHRyaWJ1dGVOYW1lJztcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZSgpO1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2hhcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2F0dHJpYnV0ZU5hbWUnO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luQXR0cmlidXRlKCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGF0dHJpYnV0ZU5hbWUoKSB7XG4gICAgICBsZXQgY2hhciA9IHRoaXMucGVlaygpO1xuXG4gICAgICBpZiAoaXNTcGFjZShjaGFyKSkge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2FmdGVyQXR0cmlidXRlTmFtZSc7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIi9cIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luQXR0cmlidXRlVmFsdWUoZmFsc2UpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ3NlbGZDbG9zaW5nU3RhcnRUYWcnO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIj1cIikge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZUF0dHJpYnV0ZVZhbHVlJztcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiPlwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoVGFnKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlRGF0YSc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09ICdcIicgfHwgY2hhciA9PT0gXCInXCIgfHwgY2hhciA9PT0gJzwnKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUucmVwb3J0U3ludGF4RXJyb3IoY2hhciArIFwiIGlzIG5vdCBhIHZhbGlkIGNoYXJhY3RlciB3aXRoaW4gYXR0cmlidXRlIG5hbWVzXCIpO1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2hhcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2hhcik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFmdGVyQXR0cmlidXRlTmFtZSgpIHtcbiAgICAgIGxldCBjaGFyID0gdGhpcy5wZWVrKCk7XG5cbiAgICAgIGlmIChpc1NwYWNlKGNoYXIpKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiL1wiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnc2VsZkNsb3NpbmdTdGFydFRhZyc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiPVwiKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZUF0dHJpYnV0ZVZhbHVlJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCI+XCIpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hUYWcoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYXR0cmlidXRlTmFtZSc7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2hhcik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGJlZm9yZUF0dHJpYnV0ZVZhbHVlKCkge1xuICAgICAgbGV0IGNoYXIgPSB0aGlzLnBlZWsoKTtcblxuICAgICAgaWYgKGlzU3BhY2UoY2hhcikpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09ICdcIicpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdhdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZCc7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGVWYWx1ZSh0cnVlKTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiJ1wiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWQnO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luQXR0cmlidXRlVmFsdWUodHJ1ZSk7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIj5cIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luQXR0cmlidXRlVmFsdWUoZmFsc2UpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaFRhZygpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdhdHRyaWJ1dGVWYWx1ZVVucXVvdGVkJztcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjaGFyKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWQoKSB7XG4gICAgICBsZXQgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gJ1wiJykge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZCc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiJlwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZSh0aGlzLmNvbnN1bWVDaGFyUmVmKCdcIicpIHx8IFwiJlwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjaGFyKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWQoKSB7XG4gICAgICBsZXQgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCInXCIpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2FmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWQnO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIiZcIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUodGhpcy5jb25zdW1lQ2hhclJlZihcIidcIikgfHwgXCImXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNoYXIpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhdHRyaWJ1dGVWYWx1ZVVucXVvdGVkKCkge1xuICAgICAgbGV0IGNoYXIgPSB0aGlzLnBlZWsoKTtcblxuICAgICAgaWYgKGlzU3BhY2UoY2hhcikpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVBdHRyaWJ1dGVOYW1lJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCImXCIpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZSh0aGlzLmNvbnN1bWVDaGFyUmVmKFwiPlwiKSB8fCBcIiZcIik7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiPlwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoVGFnKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlRGF0YSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNoYXIpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkKCkge1xuICAgICAgbGV0IGNoYXIgPSB0aGlzLnBlZWsoKTtcblxuICAgICAgaWYgKGlzU3BhY2UoY2hhcikpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlQXR0cmlidXRlTmFtZSc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiL1wiKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ3NlbGZDbG9zaW5nU3RhcnRUYWcnO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIj5cIikge1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hUYWcoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlQXR0cmlidXRlTmFtZSc7XG4gICAgICB9XG4gICAgfSxcblxuICAgIHNlbGZDbG9zaW5nU3RhcnRUYWcoKSB7XG4gICAgICBsZXQgY2hhciA9IHRoaXMucGVlaygpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCI+XCIpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUubWFya1RhZ0FzU2VsZkNsb3NpbmcoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hUYWcoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlQXR0cmlidXRlTmFtZSc7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGVuZFRhZ09wZW4oKSB7XG4gICAgICBsZXQgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoaXNBbHBoYShjaGFyKSkge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ3RhZ05hbWUnO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luRW5kVGFnKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9UYWdOYW1lKGNoYXIudG9Mb3dlckNhc2UoKSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuIl19 |
@@ -1,1 +0,2 @@ | ||
export default function tokenize(input: any, options: any): any; | ||
import { Token } from './tokenizer'; | ||
export default function tokenize(input: any, options: any): Token[]; |
@@ -8,2 +8,2 @@ import Tokenizer from './tokenizer'; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5pemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0b2tlbml6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxZQUFZLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxhQUFhLE1BQU0seUJBQXlCLENBQUM7QUFFcEQsTUFBTSxDQUFDLE9BQU8sbUJBQW1CLEtBQUssRUFBRSxPQUFPO0lBQzdDLElBQUksU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksWUFBWSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVG9rZW5pemVyIGZyb20gJy4vdG9rZW5pemVyJztcbmltcG9ydCBFbnRpdHlQYXJzZXIgZnJvbSAnLi9lbnRpdHktcGFyc2VyJztcbmltcG9ydCBuYW1lZENoYXJSZWZzIGZyb20gJy4vaHRtbDUtbmFtZWQtY2hhci1yZWZzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9rZW5pemUoaW5wdXQsIG9wdGlvbnMpIHtcbiAgbGV0IHRva2VuaXplciA9IG5ldyBUb2tlbml6ZXIobmV3IEVudGl0eVBhcnNlcihuYW1lZENoYXJSZWZzKSwgb3B0aW9ucyk7XG4gIHJldHVybiB0b2tlbml6ZXIudG9rZW5pemUoaW5wdXQpO1xufVxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5pemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0b2tlbml6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQW9CLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sWUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sYUFBYSxNQUFNLHlCQUF5QixDQUFDO0FBRXBELE1BQU0sQ0FBQyxPQUFPLG1CQUFtQixLQUFLLEVBQUUsT0FBTztJQUM3QyxJQUFJLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxhQUFhLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRva2VuaXplciwgeyBUb2tlbiB9IGZyb20gJy4vdG9rZW5pemVyJztcbmltcG9ydCBFbnRpdHlQYXJzZXIgZnJvbSAnLi9lbnRpdHktcGFyc2VyJztcbmltcG9ydCBuYW1lZENoYXJSZWZzIGZyb20gJy4vaHRtbDUtbmFtZWQtY2hhci1yZWZzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9rZW5pemUoaW5wdXQsIG9wdGlvbnMpOiBUb2tlbltdIHtcbiAgbGV0IHRva2VuaXplciA9IG5ldyBUb2tlbml6ZXIobmV3IEVudGl0eVBhcnNlcihuYW1lZENoYXJSZWZzKSwgb3B0aW9ucyk7XG4gIHJldHVybiB0b2tlbml6ZXIudG9rZW5pemUoaW5wdXQpO1xufVxuIl19 |
@@ -1,2 +0,54 @@ | ||
declare function Tokenizer(entityParser: any, options: any): void; | ||
export default Tokenizer; | ||
export interface TokenizerOptions { | ||
loc?: any; | ||
} | ||
export declare type Attribute = [string, string, boolean]; | ||
export interface Token { | ||
type: string; | ||
chars?: string; | ||
attributes?: Attribute[]; | ||
tagName?: string; | ||
selfClosing?: boolean; | ||
loc?: { | ||
start: { | ||
line: number; | ||
column: number; | ||
}; | ||
end: { | ||
line: number; | ||
column: number; | ||
}; | ||
}; | ||
syntaxError?: string; | ||
} | ||
export default class Tokenizer { | ||
private options; | ||
private token; | ||
private startLine; | ||
private startColumn; | ||
private tokenizer; | ||
private tokens; | ||
private currentAttribute; | ||
constructor(entityParser: any, options?: TokenizerOptions); | ||
tokenize(input: any): Token[]; | ||
tokenizePart(input: any): Token[]; | ||
tokenizeEOF(): Token; | ||
reset(): void; | ||
addLocInfo(): void; | ||
beginData(): void; | ||
appendToData(char: any): void; | ||
finishData(): void; | ||
beginComment(): void; | ||
appendToCommentData(char: any): void; | ||
finishComment(): void; | ||
beginStartTag(): void; | ||
beginEndTag(): void; | ||
finishTag(): void; | ||
markTagAsSelfClosing(): void; | ||
appendToTagName(char: any): void; | ||
beginAttribute(): void; | ||
appendToAttributeName(char: any): void; | ||
beginAttributeValue(isQuoted: any): void; | ||
appendToAttributeValue(char: any): void; | ||
finishAttributeValue(): void; | ||
reportSyntaxError(message: string): void; | ||
} |
import EventedTokenizer from './evented-tokenizer'; | ||
function Tokenizer(entityParser, options) { | ||
this.token = null; | ||
this.startLine = 1; | ||
this.startColumn = 0; | ||
this.options = options || {}; | ||
this.tokenizer = new EventedTokenizer(this, entityParser); | ||
} | ||
Tokenizer.prototype = { | ||
tokenize: function (input) { | ||
; | ||
var Tokenizer = (function () { | ||
function Tokenizer(entityParser, options) { | ||
if (options === void 0) { options = {}; } | ||
this.options = options; | ||
this.token = null; | ||
this.startLine = 1; | ||
this.startColumn = 0; | ||
this.tokens = []; | ||
this.currentAttribute = null; | ||
this.tokenizer = new EventedTokenizer(this, entityParser); | ||
} | ||
Tokenizer.prototype.tokenize = function (input) { | ||
this.tokens = []; | ||
this.tokenizer.tokenize(input); | ||
return this.tokens; | ||
}, | ||
tokenizePart: function (input) { | ||
}; | ||
Tokenizer.prototype.tokenizePart = function (input) { | ||
this.tokens = []; | ||
this.tokenizer.tokenizePart(input); | ||
return this.tokens; | ||
}, | ||
tokenizeEOF: function () { | ||
}; | ||
Tokenizer.prototype.tokenizeEOF = function () { | ||
this.tokens = []; | ||
this.tokenizer.tokenizeEOF(); | ||
return this.tokens[0]; | ||
}, | ||
reset: function () { | ||
}; | ||
Tokenizer.prototype.reset = function () { | ||
this.token = null; | ||
this.startLine = 1; | ||
this.startColumn = 0; | ||
}, | ||
addLocInfo: function () { | ||
}; | ||
Tokenizer.prototype.addLocInfo = function () { | ||
if (this.options.loc) { | ||
@@ -45,5 +49,5 @@ this.token.loc = { | ||
this.startColumn = this.tokenizer.column; | ||
}, | ||
}; | ||
// Data | ||
beginData: function () { | ||
Tokenizer.prototype.beginData = function () { | ||
this.token = { | ||
@@ -54,11 +58,11 @@ type: 'Chars', | ||
this.tokens.push(this.token); | ||
}, | ||
appendToData: function (char) { | ||
}; | ||
Tokenizer.prototype.appendToData = function (char) { | ||
this.token.chars += char; | ||
}, | ||
finishData: function () { | ||
}; | ||
Tokenizer.prototype.finishData = function () { | ||
this.addLocInfo(); | ||
}, | ||
}; | ||
// Comment | ||
beginComment: function () { | ||
Tokenizer.prototype.beginComment = function () { | ||
this.token = { | ||
@@ -69,11 +73,11 @@ type: 'Comment', | ||
this.tokens.push(this.token); | ||
}, | ||
appendToCommentData: function (char) { | ||
}; | ||
Tokenizer.prototype.appendToCommentData = function (char) { | ||
this.token.chars += char; | ||
}, | ||
finishComment: function () { | ||
}; | ||
Tokenizer.prototype.finishComment = function () { | ||
this.addLocInfo(); | ||
}, | ||
}; | ||
// Tags - basic | ||
beginStartTag: function () { | ||
Tokenizer.prototype.beginStartTag = function () { | ||
this.token = { | ||
@@ -86,4 +90,4 @@ type: 'StartTag', | ||
this.tokens.push(this.token); | ||
}, | ||
beginEndTag: function () { | ||
}; | ||
Tokenizer.prototype.beginEndTag = function () { | ||
this.token = { | ||
@@ -94,35 +98,36 @@ type: 'EndTag', | ||
this.tokens.push(this.token); | ||
}, | ||
finishTag: function () { | ||
}; | ||
Tokenizer.prototype.finishTag = function () { | ||
this.addLocInfo(); | ||
}, | ||
markTagAsSelfClosing: function () { | ||
}; | ||
Tokenizer.prototype.markTagAsSelfClosing = function () { | ||
this.token.selfClosing = true; | ||
}, | ||
}; | ||
// Tags - name | ||
appendToTagName: function (char) { | ||
Tokenizer.prototype.appendToTagName = function (char) { | ||
this.token.tagName += char; | ||
}, | ||
}; | ||
// Tags - attributes | ||
beginAttribute: function () { | ||
this._currentAttribute = ["", "", null]; | ||
this.token.attributes.push(this._currentAttribute); | ||
}, | ||
appendToAttributeName: function (char) { | ||
this._currentAttribute[0] += char; | ||
}, | ||
beginAttributeValue: function (isQuoted) { | ||
this._currentAttribute[2] = isQuoted; | ||
}, | ||
appendToAttributeValue: function (char) { | ||
this._currentAttribute[1] = this._currentAttribute[1] || ""; | ||
this._currentAttribute[1] += char; | ||
}, | ||
finishAttributeValue: function () { | ||
}, | ||
reportSyntaxError: function (message) { | ||
Tokenizer.prototype.beginAttribute = function () { | ||
this.currentAttribute = ["", "", null]; | ||
this.token.attributes.push(this.currentAttribute); | ||
}; | ||
Tokenizer.prototype.appendToAttributeName = function (char) { | ||
this.currentAttribute[0] += char; | ||
}; | ||
Tokenizer.prototype.beginAttributeValue = function (isQuoted) { | ||
this.currentAttribute[2] = isQuoted; | ||
}; | ||
Tokenizer.prototype.appendToAttributeValue = function (char) { | ||
this.currentAttribute[1] = this.currentAttribute[1] || ""; | ||
this.currentAttribute[1] += char; | ||
}; | ||
Tokenizer.prototype.finishAttributeValue = function () { | ||
}; | ||
Tokenizer.prototype.reportSyntaxError = function (message) { | ||
this.token.syntaxError = message; | ||
} | ||
}; | ||
}; | ||
return Tokenizer; | ||
}()); | ||
export default Tokenizer; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5pemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidG9rZW5pemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sZ0JBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFFbkQsbUJBQW1CLFlBQVksRUFBRSxPQUFPO0lBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHO0lBQ3BCLFFBQVEsRUFBRSxVQUFTLEtBQUs7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQVksRUFBRSxVQUFTLEtBQUs7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsRUFBRTtRQUNYLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELEtB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QUVwQixjQUFjLEVBQUU7UUFDZCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQscUJBQXFCLEVBQUUsVUFBUyxJQUFJO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDcEMsQ0FBQztJQUVELG1CQUFtQixFQUFFLFVBQVMsUUFBUTtRQUNwQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxzQkFBc0IsRUFBRSxVQUFTLElBQUk7UUFDbkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNwQyxDQUFDO0lBRUQsb0JBQW9CLEVBQUU7SUFDdEIsQ0FBQztJQUVELGlCQUFpQixFQUFFLFVBQVMsT0FBTztRQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7SUFDbkMsQ0FBQztDQUNGLENBQUM7QUFFRixlQUFlLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFdmVudGVkVG9rZW5pemVyIGZyb20gJy4vZXZlbnRlZC10b2tlbml6ZXInO1xuXG5mdW5jdGlvbiBUb2tlbml6ZXIoZW50aXR5UGFyc2VyLCBvcHRpb25zKSB7XG4gIHRoaXMudG9rZW4gPSBudWxsO1xuICB0aGlzLnN0YXJ0TGluZSA9IDE7XG4gIHRoaXMuc3RhcnRDb2x1bW4gPSAwO1xuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB0aGlzLnRva2VuaXplciA9IG5ldyBFdmVudGVkVG9rZW5pemVyKHRoaXMsIGVudGl0eVBhcnNlcik7XG59XG5cblRva2VuaXplci5wcm90b3R5cGUgPSB7XG4gIHRva2VuaXplOiBmdW5jdGlvbihpbnB1dCkge1xuICAgIHRoaXMudG9rZW5zID0gW107XG4gICAgdGhpcy50b2tlbml6ZXIudG9rZW5pemUoaW5wdXQpO1xuICAgIHJldHVybiB0aGlzLnRva2VucztcbiAgfSxcblxuICB0b2tlbml6ZVBhcnQ6IGZ1bmN0aW9uKGlucHV0KSB7XG4gICAgdGhpcy50b2tlbnMgPSBbXTtcbiAgICB0aGlzLnRva2VuaXplci50b2tlbml6ZVBhcnQoaW5wdXQpO1xuICAgIHJldHVybiB0aGlzLnRva2VucztcbiAgfSxcblxuICB0b2tlbml6ZUVPRjogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50b2tlbnMgPSBbXTtcbiAgICB0aGlzLnRva2VuaXplci50b2tlbml6ZUVPRigpO1xuICAgIHJldHVybiB0aGlzLnRva2Vuc1swXTtcbiAgfSxcblxuICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50b2tlbiA9IG51bGw7XG4gICAgdGhpcy5zdGFydExpbmUgPSAxO1xuICAgIHRoaXMuc3RhcnRDb2x1bW4gPSAwO1xuICB9LFxuXG4gIGFkZExvY0luZm86IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMubG9jKSB7XG4gICAgICB0aGlzLnRva2VuLmxvYyA9IHtcbiAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICBsaW5lOiB0aGlzLnN0YXJ0TGluZSxcbiAgICAgICAgICBjb2x1bW46IHRoaXMuc3RhcnRDb2x1bW5cbiAgICAgICAgfSxcbiAgICAgICAgZW5kOiB7XG4gICAgICAgICAgbGluZTogdGhpcy50b2tlbml6ZXIubGluZSxcbiAgICAgICAgICBjb2x1bW46IHRoaXMudG9rZW5pemVyLmNvbHVtblxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLnN0YXJ0TGluZSA9IHRoaXMudG9rZW5pemVyLmxpbmU7XG4gICAgdGhpcy5zdGFydENvbHVtbiA9IHRoaXMudG9rZW5pemVyLmNvbHVtbjtcbiAgfSxcblxuICAvLyBEYXRhXG5cbiAgYmVnaW5EYXRhOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnRva2VuID0ge1xuICAgICAgdHlwZTogJ0NoYXJzJyxcbiAgICAgIGNoYXJzOiAnJ1xuICAgIH07XG4gICAgdGhpcy50b2tlbnMucHVzaCh0aGlzLnRva2VuKTtcbiAgfSxcblxuICBhcHBlbmRUb0RhdGE6IGZ1bmN0aW9uKGNoYXIpIHtcbiAgICB0aGlzLnRva2VuLmNoYXJzICs9IGNoYXI7XG4gIH0sXG5cbiAgZmluaXNoRGF0YTogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5hZGRMb2NJbmZvKCk7XG4gIH0sXG5cbiAgLy8gQ29tbWVudFxuXG4gIGJlZ2luQ29tbWVudDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50b2tlbiA9IHtcbiAgICAgIHR5cGU6ICdDb21tZW50JyxcbiAgICAgIGNoYXJzOiAnJ1xuICAgIH07XG4gICAgdGhpcy50b2tlbnMucHVzaCh0aGlzLnRva2VuKTtcbiAgfSxcblxuICBhcHBlbmRUb0NvbW1lbnREYXRhOiBmdW5jdGlvbihjaGFyKSB7XG4gICAgdGhpcy50b2tlbi5jaGFycyArPSBjaGFyO1xuICB9LFxuXG4gIGZpbmlzaENvbW1lbnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuYWRkTG9jSW5mbygpO1xuICB9LFxuXG4gIC8vIFRhZ3MgLSBiYXNpY1xuXG4gIGJlZ2luU3RhcnRUYWc6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMudG9rZW4gPSB7XG4gICAgICB0eXBlOiAnU3RhcnRUYWcnLFxuICAgICAgdGFnTmFtZTogJycsXG4gICAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICAgIHNlbGZDbG9zaW5nOiBmYWxzZVxuICAgIH07XG4gICAgdGhpcy50b2tlbnMucHVzaCh0aGlzLnRva2VuKTtcbiAgfSxcblxuICBiZWdpbkVuZFRhZzogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50b2tlbiA9IHtcbiAgICAgIHR5cGU6ICdFbmRUYWcnLFxuICAgICAgdGFnTmFtZTogJydcbiAgICB9O1xuICAgIHRoaXMudG9rZW5zLnB1c2godGhpcy50b2tlbik7XG4gIH0sXG5cbiAgZmluaXNoVGFnOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmFkZExvY0luZm8oKTtcbiAgfSxcblxuICBtYXJrVGFnQXNTZWxmQ2xvc2luZzogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50b2tlbi5zZWxmQ2xvc2luZyA9IHRydWU7XG4gIH0sXG5cbiAgLy8gVGFncyAtIG5hbWVcblxuICBhcHBlbmRUb1RhZ05hbWU6IGZ1bmN0aW9uKGNoYXIpIHtcbiAgICB0aGlzLnRva2VuLnRhZ05hbWUgKz0gY2hhcjtcbiAgfSxcblxuICAvLyBUYWdzIC0gYXR0cmlidXRlc1xuXG4gIGJlZ2luQXR0cmlidXRlOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9jdXJyZW50QXR0cmlidXRlID0gW1wiXCIsIFwiXCIsIG51bGxdO1xuICAgIHRoaXMudG9rZW4uYXR0cmlidXRlcy5wdXNoKHRoaXMuX2N1cnJlbnRBdHRyaWJ1dGUpO1xuICB9LFxuXG4gIGFwcGVuZFRvQXR0cmlidXRlTmFtZTogZnVuY3Rpb24oY2hhcikge1xuICAgIHRoaXMuX2N1cnJlbnRBdHRyaWJ1dGVbMF0gKz0gY2hhcjtcbiAgfSxcblxuICBiZWdpbkF0dHJpYnV0ZVZhbHVlOiBmdW5jdGlvbihpc1F1b3RlZCkge1xuICAgIHRoaXMuX2N1cnJlbnRBdHRyaWJ1dGVbMl0gPSBpc1F1b3RlZDtcbiAgfSxcblxuICBhcHBlbmRUb0F0dHJpYnV0ZVZhbHVlOiBmdW5jdGlvbihjaGFyKSB7XG4gICAgdGhpcy5fY3VycmVudEF0dHJpYnV0ZVsxXSA9IHRoaXMuX2N1cnJlbnRBdHRyaWJ1dGVbMV0gfHwgXCJcIjtcbiAgICB0aGlzLl9jdXJyZW50QXR0cmlidXRlWzFdICs9IGNoYXI7XG4gIH0sXG5cbiAgZmluaXNoQXR0cmlidXRlVmFsdWU6IGZ1bmN0aW9uKCkge1xuICB9LFxuXG4gIHJlcG9ydFN5bnRheEVycm9yOiBmdW5jdGlvbihtZXNzYWdlKSB7XG4gICAgdGhpcy50b2tlbi5zeW50YXhFcnJvciA9IG1lc3NhZ2U7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRva2VuaXplcjtcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5pemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidG9rZW5pemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sZ0JBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFJbEQsQ0FBQztBQXVCRjtJQVFFLG1CQUFZLFlBQVksRUFBVSxPQUE4QjtRQUE5Qix3QkFBQSxFQUFBLFlBQThCO1FBQTlCLFlBQU8sR0FBUCxPQUFPLENBQXVCO1FBUHhELFVBQUssR0FBVSxJQUFJLENBQUM7UUFDcEIsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRWhCLFdBQU0sR0FBWSxFQUFFLENBQUM7UUFDckIscUJBQWdCLEdBQWMsSUFBSSxDQUFDO1FBR3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELDRCQUFRLEdBQVIsVUFBUyxLQUFLO1FBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELGdDQUFZLEdBQVosVUFBYSxLQUFLO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCwrQkFBVyxHQUFYO1FBQ0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FB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QUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELG9CQUFvQjtJQUVwQixrQ0FBYyxHQUFkO1FBQ0UsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELHlDQUFxQixHQUFyQixVQUFzQixJQUFJO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQUVELHVDQUFtQixHQUFuQixVQUFvQixRQUFRO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDdEMsQ0FBQztJQUVELDBDQUFzQixHQUF0QixVQUF1QixJQUFJO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQUVELHdDQUFvQixHQUFwQjtJQUNBLENBQUM7SUFFRCxxQ0FBaUIsR0FBakIsVUFBa0IsT0FBZTtRQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7SUFDbkMsQ0FBQztJQUNILGdCQUFDO0FBQUQsQ0FBQyxBQXJKRCxJQXFKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFdmVudGVkVG9rZW5pemVyIGZyb20gJy4vZXZlbnRlZC10b2tlbml6ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuaXplck9wdGlvbnMge1xuICBsb2M/OiBhbnk7XG59O1xuXG5leHBvcnQgdHlwZSBBdHRyaWJ1dGUgPSBbc3RyaW5nLCBzdHJpbmcsIGJvb2xlYW5dO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuIHtcbiAgdHlwZTogc3RyaW5nO1xuICBjaGFycz86IHN0cmluZztcbiAgYXR0cmlidXRlcz86IEF0dHJpYnV0ZVtdO1xuICB0YWdOYW1lPzogc3RyaW5nO1xuICBzZWxmQ2xvc2luZz86IGJvb2xlYW47XG4gIGxvYz86IHtcbiAgICBzdGFydDoge1xuICAgICAgbGluZTogbnVtYmVyO1xuICAgICAgY29sdW1uOiBudW1iZXI7XG4gICAgfSxcbiAgICBlbmQ6IHtcbiAgICAgIGxpbmU6IG51bWJlcjtcbiAgICAgIGNvbHVtbjogbnVtYmVyO1xuICAgIH1cbiAgfTtcbiAgc3ludGF4RXJyb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRva2VuaXplciB7XG4gIHByaXZhdGUgdG9rZW46IFRva2VuID0gbnVsbDtcbiAgcHJpdmF0ZSBzdGFydExpbmUgPSAxO1xuICBwcml2YXRlIHN0YXJ0Q29sdW1uID0gMDtcbiAgcHJpdmF0ZSB0b2tlbml6ZXI6IEV2ZW50ZWRUb2tlbml6ZXI7XG4gIHByaXZhdGUgdG9rZW5zOiBUb2tlbltdID0gW107XG4gIHByaXZhdGUgY3VycmVudEF0dHJpYnV0ZTogQXR0cmlidXRlID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihlbnRpdHlQYXJzZXIsIHByaXZhdGUgb3B0aW9uczogVG9rZW5pemVyT3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy50b2tlbml6ZXIgPSBuZXcgRXZlbnRlZFRva2VuaXplcih0aGlzLCBlbnRpdHlQYXJzZXIpO1xuICB9XG5cbiAgdG9rZW5pemUoaW5wdXQpIHtcbiAgICB0aGlzLnRva2VucyA9IFtdO1xuICAgIHRoaXMudG9rZW5pemVyLnRva2VuaXplKGlucHV0KTtcbiAgICByZXR1cm4gdGhpcy50b2tlbnM7XG4gIH1cblxuICB0b2tlbml6ZVBhcnQoaW5wdXQpIHtcbiAgICB0aGlzLnRva2VucyA9IFtdO1xuICAgIHRoaXMudG9rZW5pemVyLnRva2VuaXplUGFydChpbnB1dCk7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5zO1xuICB9XG5cbiAgdG9rZW5pemVFT0YoKSB7XG4gICAgdGhpcy50b2tlbnMgPSBbXTtcbiAgICB0aGlzLnRva2VuaXplci50b2tlbml6ZUVPRigpO1xuICAgIHJldHVybiB0aGlzLnRva2Vuc1swXTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMudG9rZW4gPSBudWxsO1xuICAgIHRoaXMuc3RhcnRMaW5lID0gMTtcbiAgICB0aGlzLnN0YXJ0Q29sdW1uID0gMDtcbiAgfVxuXG4gIGFkZExvY0luZm8oKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5sb2MpIHtcbiAgICAgIHRoaXMudG9rZW4ubG9jID0ge1xuICAgICAgICBzdGFydDoge1xuICAgICAgICAgIGxpbmU6IHRoaXMuc3RhcnRMaW5lLFxuICAgICAgICAgIGNvbHVtbjogdGhpcy5zdGFydENvbHVtblxuICAgICAgICB9LFxuICAgICAgICBlbmQ6IHtcbiAgICAgICAgICBsaW5lOiB0aGlzLnRva2VuaXplci5saW5lLFxuICAgICAgICAgIGNvbHVtbjogdGhpcy50b2tlbml6ZXIuY29sdW1uXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMuc3RhcnRMaW5lID0gdGhpcy50b2tlbml6ZXIubGluZTtcbiAgICB0aGlzLnN0YXJ0Q29sdW1uID0gdGhpcy50b2tlbml6ZXIuY29sdW1uO1xuICB9XG5cbiAgLy8gRGF0YVxuXG4gIGJlZ2luRGF0YSgpIHtcbiAgICB0aGlzLnRva2VuID0ge1xuICAgICAgdHlwZTogJ0NoYXJzJyxcbiAgICAgIGNoYXJzOiAnJ1xuICAgIH07XG4gICAgdGhpcy50b2tlbnMucHVzaCh0aGlzLnRva2VuKTtcbiAgfVxuXG4gIGFwcGVuZFRvRGF0YShjaGFyKSB7XG4gICAgdGhpcy50b2tlbi5jaGFycyArPSBjaGFyO1xuICB9XG5cbiAgZmluaXNoRGF0YSgpIHtcbiAgICB0aGlzLmFkZExvY0luZm8oKTtcbiAgfVxuXG4gIC8vIENvbW1lbnRcblxuICBiZWdpbkNvbW1lbnQoKSB7XG4gICAgdGhpcy50b2tlbiA9IHtcbiAgICAgIHR5cGU6ICdDb21tZW50JyxcbiAgICAgIGNoYXJzOiAnJ1xuICAgIH07XG4gICAgdGhpcy50b2tlbnMucHVzaCh0aGlzLnRva2VuKTtcbiAgfVxuXG4gIGFwcGVuZFRvQ29tbWVudERhdGEoY2hhcikge1xuICAgIHRoaXMudG9rZW4uY2hhcnMgKz0gY2hhcjtcbiAgfVxuXG4gIGZpbmlzaENvbW1lbnQoKSB7XG4gICAgdGhpcy5hZGRMb2NJbmZvKCk7XG4gIH1cblxuICAvLyBUYWdzIC0gYmFzaWNcblxuICBiZWdpblN0YXJ0VGFnKCkge1xuICAgIHRoaXMudG9rZW4gPSB7XG4gICAgICB0eXBlOiAnU3RhcnRUYWcnLFxuICAgICAgdGFnTmFtZTogJycsXG4gICAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICAgIHNlbGZDbG9zaW5nOiBmYWxzZVxuICAgIH07XG4gICAgdGhpcy50b2tlbnMucHVzaCh0aGlzLnRva2VuKTtcbiAgfVxuXG4gIGJlZ2luRW5kVGFnKCkge1xuICAgIHRoaXMudG9rZW4gPSB7XG4gICAgICB0eXBlOiAnRW5kVGFnJyxcbiAgICAgIHRhZ05hbWU6ICcnXG4gICAgfTtcbiAgICB0aGlzLnRva2Vucy5wdXNoKHRoaXMudG9rZW4pO1xuICB9XG5cbiAgZmluaXNoVGFnKCkge1xuICAgIHRoaXMuYWRkTG9jSW5mbygpO1xuICB9XG5cbiAgbWFya1RhZ0FzU2VsZkNsb3NpbmcoKSB7XG4gICAgdGhpcy50b2tlbi5zZWxmQ2xvc2luZyA9IHRydWU7XG4gIH1cblxuICAvLyBUYWdzIC0gbmFtZVxuXG4gIGFwcGVuZFRvVGFnTmFtZShjaGFyKSB7XG4gICAgdGhpcy50b2tlbi50YWdOYW1lICs9IGNoYXI7XG4gIH1cblxuICAvLyBUYWdzIC0gYXR0cmlidXRlc1xuXG4gIGJlZ2luQXR0cmlidXRlKCkge1xuICAgIHRoaXMuY3VycmVudEF0dHJpYnV0ZSA9IFtcIlwiLCBcIlwiLCBudWxsXTtcbiAgICB0aGlzLnRva2VuLmF0dHJpYnV0ZXMucHVzaCh0aGlzLmN1cnJlbnRBdHRyaWJ1dGUpO1xuICB9XG5cbiAgYXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGNoYXIpIHtcbiAgICB0aGlzLmN1cnJlbnRBdHRyaWJ1dGVbMF0gKz0gY2hhcjtcbiAgfVxuXG4gIGJlZ2luQXR0cmlidXRlVmFsdWUoaXNRdW90ZWQpIHtcbiAgICB0aGlzLmN1cnJlbnRBdHRyaWJ1dGVbMl0gPSBpc1F1b3RlZDtcbiAgfVxuXG4gIGFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2hhcikge1xuICAgIHRoaXMuY3VycmVudEF0dHJpYnV0ZVsxXSA9IHRoaXMuY3VycmVudEF0dHJpYnV0ZVsxXSB8fCBcIlwiO1xuICAgIHRoaXMuY3VycmVudEF0dHJpYnV0ZVsxXSArPSBjaGFyO1xuICB9XG5cbiAgZmluaXNoQXR0cmlidXRlVmFsdWUoKSB7XG4gIH1cblxuICByZXBvcnRTeW50YXhFcnJvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRva2VuLnN5bnRheEVycm9yID0gbWVzc2FnZTtcbiAgfVxufVxuIl19 |
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | ||
typeof define === 'function' && define.amd ? define(['exports'], factory) : | ||
(factory((global.HTML5Tokenizer = global.HTML5Tokenizer || {}))); | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | ||
typeof define === 'function' && define.amd ? define(['exports'], factory) : | ||
(factory((global.HTML5Tokenizer = global.HTML5Tokenizer || {}))); | ||
}(this, (function (exports) { 'use strict'; | ||
@@ -51,16 +51,351 @@ | ||
function EventedTokenizer(delegate, entityParser) { | ||
this.delegate = delegate; | ||
this.entityParser = entityParser; | ||
this.state = null; | ||
this.input = null; | ||
this.index = -1; | ||
this.line = -1; | ||
this.column = -1; | ||
this.tagLine = -1; | ||
this.tagColumn = -1; | ||
this.reset(); | ||
} | ||
EventedTokenizer.prototype = { | ||
reset: function () { | ||
var EventedTokenizer = (function () { | ||
function EventedTokenizer(delegate, entityParser) { | ||
this.delegate = delegate; | ||
this.entityParser = entityParser; | ||
this.state = null; | ||
this.input = null; | ||
this.index = -1; | ||
this.tagLine = -1; | ||
this.tagColumn = -1; | ||
this.line = -1; | ||
this.column = -1; | ||
this.states = { | ||
beforeData: function () { | ||
var char = this.peek(); | ||
if (char === "<") { | ||
this.state = 'tagOpen'; | ||
this.markTagStart(); | ||
this.consume(); | ||
} | ||
else { | ||
this.state = 'data'; | ||
this.delegate.beginData(); | ||
} | ||
}, | ||
data: function () { | ||
var char = this.peek(); | ||
if (char === "<") { | ||
this.delegate.finishData(); | ||
this.state = 'tagOpen'; | ||
this.markTagStart(); | ||
this.consume(); | ||
} | ||
else if (char === "&") { | ||
this.consume(); | ||
this.delegate.appendToData(this.consumeCharRef() || "&"); | ||
} | ||
else { | ||
this.consume(); | ||
this.delegate.appendToData(char); | ||
} | ||
}, | ||
tagOpen: function () { | ||
var char = this.consume(); | ||
if (char === "!") { | ||
this.state = 'markupDeclaration'; | ||
} | ||
else if (char === "/") { | ||
this.state = 'endTagOpen'; | ||
} | ||
else if (isAlpha(char)) { | ||
this.state = 'tagName'; | ||
this.delegate.beginStartTag(); | ||
this.delegate.appendToTagName(char.toLowerCase()); | ||
} | ||
}, | ||
markupDeclaration: function () { | ||
var char = this.consume(); | ||
if (char === "-" && this.input.charAt(this.index) === "-") { | ||
this.consume(); | ||
this.state = 'commentStart'; | ||
this.delegate.beginComment(); | ||
} | ||
}, | ||
commentStart: function () { | ||
var char = this.consume(); | ||
if (char === "-") { | ||
this.state = 'commentStartDash'; | ||
} | ||
else if (char === ">") { | ||
this.delegate.finishComment(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData(char); | ||
this.state = 'comment'; | ||
} | ||
}, | ||
commentStartDash: function () { | ||
var char = this.consume(); | ||
if (char === "-") { | ||
this.state = 'commentEnd'; | ||
} | ||
else if (char === ">") { | ||
this.delegate.finishComment(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData("-"); | ||
this.state = 'comment'; | ||
} | ||
}, | ||
comment: function () { | ||
var char = this.consume(); | ||
if (char === "-") { | ||
this.state = 'commentEndDash'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData(char); | ||
} | ||
}, | ||
commentEndDash: function () { | ||
var char = this.consume(); | ||
if (char === "-") { | ||
this.state = 'commentEnd'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData("-" + char); | ||
this.state = 'comment'; | ||
} | ||
}, | ||
commentEnd: function () { | ||
var char = this.consume(); | ||
if (char === ">") { | ||
this.delegate.finishComment(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData("--" + char); | ||
this.state = 'comment'; | ||
} | ||
}, | ||
tagName: function () { | ||
var char = this.consume(); | ||
if (isSpace(char)) { | ||
this.state = 'beforeAttributeName'; | ||
} | ||
else if (char === "/") { | ||
this.state = 'selfClosingStartTag'; | ||
} | ||
else if (char === ">") { | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.appendToTagName(char); | ||
} | ||
}, | ||
beforeAttributeName: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.consume(); | ||
return; | ||
} | ||
else if (char === "/") { | ||
this.state = 'selfClosingStartTag'; | ||
this.consume(); | ||
} | ||
else if (char === ">") { | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else if (char === '=') { | ||
this.delegate.reportSyntaxError("attribute name cannot start with equals sign"); | ||
this.state = 'attributeName'; | ||
this.delegate.beginAttribute(); | ||
this.consume(); | ||
this.delegate.appendToAttributeName(char); | ||
} | ||
else { | ||
this.state = 'attributeName'; | ||
this.delegate.beginAttribute(); | ||
} | ||
}, | ||
attributeName: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.state = 'afterAttributeName'; | ||
this.consume(); | ||
} | ||
else if (char === "/") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.state = 'selfClosingStartTag'; | ||
} | ||
else if (char === "=") { | ||
this.state = 'beforeAttributeValue'; | ||
this.consume(); | ||
} | ||
else if (char === ">") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else if (char === '"' || char === "'" || char === '<') { | ||
this.delegate.reportSyntaxError(char + " is not a valid character within attribute names"); | ||
this.consume(); | ||
this.delegate.appendToAttributeName(char); | ||
} | ||
else { | ||
this.consume(); | ||
this.delegate.appendToAttributeName(char); | ||
} | ||
}, | ||
afterAttributeName: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.consume(); | ||
return; | ||
} | ||
else if (char === "/") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.state = 'selfClosingStartTag'; | ||
} | ||
else if (char === "=") { | ||
this.consume(); | ||
this.state = 'beforeAttributeValue'; | ||
} | ||
else if (char === ">") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.state = 'attributeName'; | ||
this.delegate.beginAttribute(); | ||
this.delegate.appendToAttributeName(char); | ||
} | ||
}, | ||
beforeAttributeValue: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.consume(); | ||
} | ||
else if (char === '"') { | ||
this.state = 'attributeValueDoubleQuoted'; | ||
this.delegate.beginAttributeValue(true); | ||
this.consume(); | ||
} | ||
else if (char === "'") { | ||
this.state = 'attributeValueSingleQuoted'; | ||
this.delegate.beginAttributeValue(true); | ||
this.consume(); | ||
} | ||
else if (char === ">") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.state = 'attributeValueUnquoted'; | ||
this.delegate.beginAttributeValue(false); | ||
this.consume(); | ||
this.delegate.appendToAttributeValue(char); | ||
} | ||
}, | ||
attributeValueDoubleQuoted: function () { | ||
var char = this.consume(); | ||
if (char === '"') { | ||
this.delegate.finishAttributeValue(); | ||
this.state = 'afterAttributeValueQuoted'; | ||
} | ||
else if (char === "&") { | ||
this.delegate.appendToAttributeValue(this.consumeCharRef('"') || "&"); | ||
} | ||
else { | ||
this.delegate.appendToAttributeValue(char); | ||
} | ||
}, | ||
attributeValueSingleQuoted: function () { | ||
var char = this.consume(); | ||
if (char === "'") { | ||
this.delegate.finishAttributeValue(); | ||
this.state = 'afterAttributeValueQuoted'; | ||
} | ||
else if (char === "&") { | ||
this.delegate.appendToAttributeValue(this.consumeCharRef("'") || "&"); | ||
} | ||
else { | ||
this.delegate.appendToAttributeValue(char); | ||
} | ||
}, | ||
attributeValueUnquoted: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.state = 'beforeAttributeName'; | ||
} | ||
else if (char === "&") { | ||
this.consume(); | ||
this.delegate.appendToAttributeValue(this.consumeCharRef(">") || "&"); | ||
} | ||
else if (char === ">") { | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.consume(); | ||
this.delegate.appendToAttributeValue(char); | ||
} | ||
}, | ||
afterAttributeValueQuoted: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.consume(); | ||
this.state = 'beforeAttributeName'; | ||
} | ||
else if (char === "/") { | ||
this.consume(); | ||
this.state = 'selfClosingStartTag'; | ||
} | ||
else if (char === ">") { | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.state = 'beforeAttributeName'; | ||
} | ||
}, | ||
selfClosingStartTag: function () { | ||
var char = this.peek(); | ||
if (char === ">") { | ||
this.consume(); | ||
this.delegate.markTagAsSelfClosing(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.state = 'beforeAttributeName'; | ||
} | ||
}, | ||
endTagOpen: function () { | ||
var char = this.consume(); | ||
if (isAlpha(char)) { | ||
this.state = 'tagName'; | ||
this.delegate.beginEndTag(); | ||
this.delegate.appendToTagName(char.toLowerCase()); | ||
} | ||
} | ||
}; | ||
this.reset(); | ||
} | ||
EventedTokenizer.prototype.reset = function () { | ||
this.state = 'beforeData'; | ||
@@ -74,9 +409,9 @@ this.input = ''; | ||
this.delegate.reset(); | ||
}, | ||
tokenize: function (input) { | ||
}; | ||
EventedTokenizer.prototype.tokenize = function (input) { | ||
this.reset(); | ||
this.tokenizePart(input); | ||
this.tokenizeEOF(); | ||
}, | ||
tokenizePart: function (input) { | ||
}; | ||
EventedTokenizer.prototype.tokenizePart = function (input) { | ||
this.input += preprocessInput(input); | ||
@@ -86,7 +421,7 @@ while (this.index < this.input.length) { | ||
} | ||
}, | ||
tokenizeEOF: function () { | ||
}; | ||
EventedTokenizer.prototype.tokenizeEOF = function () { | ||
this.flushData(); | ||
}, | ||
flushData: function () { | ||
}; | ||
EventedTokenizer.prototype.flushData = function () { | ||
if (this.state === 'data') { | ||
@@ -96,7 +431,7 @@ this.delegate.finishData(); | ||
} | ||
}, | ||
peek: function () { | ||
}; | ||
EventedTokenizer.prototype.peek = function () { | ||
return this.input.charAt(this.index); | ||
}, | ||
consume: function () { | ||
}; | ||
EventedTokenizer.prototype.consume = function () { | ||
var char = this.peek(); | ||
@@ -112,4 +447,4 @@ this.index++; | ||
return char; | ||
}, | ||
consumeCharRef: function () { | ||
}; | ||
EventedTokenizer.prototype.consumeCharRef = function () { | ||
var endIndex = this.input.indexOf(';', this.index); | ||
@@ -132,4 +467,4 @@ if (endIndex === -1) { | ||
} | ||
}, | ||
markTagStart: function () { | ||
}; | ||
EventedTokenizer.prototype.markTagStart = function () { | ||
// these properties to be removed in next major bump | ||
@@ -141,369 +476,38 @@ this.tagLine = this.line; | ||
} | ||
}, | ||
states: { | ||
beforeData: function () { | ||
var char = this.peek(); | ||
if (char === "<") { | ||
this.state = 'tagOpen'; | ||
this.markTagStart(); | ||
this.consume(); | ||
} | ||
else { | ||
this.state = 'data'; | ||
this.delegate.beginData(); | ||
} | ||
}, | ||
data: function () { | ||
var char = this.peek(); | ||
if (char === "<") { | ||
this.delegate.finishData(); | ||
this.state = 'tagOpen'; | ||
this.markTagStart(); | ||
this.consume(); | ||
} | ||
else if (char === "&") { | ||
this.consume(); | ||
this.delegate.appendToData(this.consumeCharRef() || "&"); | ||
} | ||
else { | ||
this.consume(); | ||
this.delegate.appendToData(char); | ||
} | ||
}, | ||
tagOpen: function () { | ||
var char = this.consume(); | ||
if (char === "!") { | ||
this.state = 'markupDeclaration'; | ||
} | ||
else if (char === "/") { | ||
this.state = 'endTagOpen'; | ||
} | ||
else if (isAlpha(char)) { | ||
this.state = 'tagName'; | ||
this.delegate.beginStartTag(); | ||
this.delegate.appendToTagName(char.toLowerCase()); | ||
} | ||
}, | ||
markupDeclaration: function () { | ||
var char = this.consume(); | ||
if (char === "-" && this.input.charAt(this.index) === "-") { | ||
this.consume(); | ||
this.state = 'commentStart'; | ||
this.delegate.beginComment(); | ||
} | ||
}, | ||
commentStart: function () { | ||
var char = this.consume(); | ||
if (char === "-") { | ||
this.state = 'commentStartDash'; | ||
} | ||
else if (char === ">") { | ||
this.delegate.finishComment(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData(char); | ||
this.state = 'comment'; | ||
} | ||
}, | ||
commentStartDash: function () { | ||
var char = this.consume(); | ||
if (char === "-") { | ||
this.state = 'commentEnd'; | ||
} | ||
else if (char === ">") { | ||
this.delegate.finishComment(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData("-"); | ||
this.state = 'comment'; | ||
} | ||
}, | ||
comment: function () { | ||
var char = this.consume(); | ||
if (char === "-") { | ||
this.state = 'commentEndDash'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData(char); | ||
} | ||
}, | ||
commentEndDash: function () { | ||
var char = this.consume(); | ||
if (char === "-") { | ||
this.state = 'commentEnd'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData("-" + char); | ||
this.state = 'comment'; | ||
} | ||
}, | ||
commentEnd: function () { | ||
var char = this.consume(); | ||
if (char === ">") { | ||
this.delegate.finishComment(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.appendToCommentData("--" + char); | ||
this.state = 'comment'; | ||
} | ||
}, | ||
tagName: function () { | ||
var char = this.consume(); | ||
if (isSpace(char)) { | ||
this.state = 'beforeAttributeName'; | ||
} | ||
else if (char === "/") { | ||
this.state = 'selfClosingStartTag'; | ||
} | ||
else if (char === ">") { | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.appendToTagName(char); | ||
} | ||
}, | ||
beforeAttributeName: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.consume(); | ||
return; | ||
} | ||
else if (char === "/") { | ||
this.state = 'selfClosingStartTag'; | ||
this.consume(); | ||
} | ||
else if (char === ">") { | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else if (char === '=') { | ||
this.delegate.reportSyntaxError("attribute name cannot start with equals sign"); | ||
this.state = 'attributeName'; | ||
this.delegate.beginAttribute(); | ||
this.consume(); | ||
this.delegate.appendToAttributeName(char); | ||
} | ||
else { | ||
this.state = 'attributeName'; | ||
this.delegate.beginAttribute(); | ||
} | ||
}, | ||
attributeName: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.state = 'afterAttributeName'; | ||
this.consume(); | ||
} | ||
else if (char === "/") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.state = 'selfClosingStartTag'; | ||
} | ||
else if (char === "=") { | ||
this.state = 'beforeAttributeValue'; | ||
this.consume(); | ||
} | ||
else if (char === ">") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else if (char === '"' || char === "'" || char === '<') { | ||
this.delegate.reportSyntaxError(char + " is not a valid character within attribute names"); | ||
this.consume(); | ||
this.delegate.appendToAttributeName(char); | ||
} | ||
else { | ||
this.consume(); | ||
this.delegate.appendToAttributeName(char); | ||
} | ||
}, | ||
afterAttributeName: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.consume(); | ||
return; | ||
} | ||
else if (char === "/") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.state = 'selfClosingStartTag'; | ||
} | ||
else if (char === "=") { | ||
this.consume(); | ||
this.state = 'beforeAttributeValue'; | ||
} | ||
else if (char === ">") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.state = 'attributeName'; | ||
this.delegate.beginAttribute(); | ||
this.delegate.appendToAttributeName(char); | ||
} | ||
}, | ||
beforeAttributeValue: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.consume(); | ||
} | ||
else if (char === '"') { | ||
this.state = 'attributeValueDoubleQuoted'; | ||
this.delegate.beginAttributeValue(true); | ||
this.consume(); | ||
} | ||
else if (char === "'") { | ||
this.state = 'attributeValueSingleQuoted'; | ||
this.delegate.beginAttributeValue(true); | ||
this.consume(); | ||
} | ||
else if (char === ">") { | ||
this.delegate.beginAttributeValue(false); | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.state = 'attributeValueUnquoted'; | ||
this.delegate.beginAttributeValue(false); | ||
this.consume(); | ||
this.delegate.appendToAttributeValue(char); | ||
} | ||
}, | ||
attributeValueDoubleQuoted: function () { | ||
var char = this.consume(); | ||
if (char === '"') { | ||
this.delegate.finishAttributeValue(); | ||
this.state = 'afterAttributeValueQuoted'; | ||
} | ||
else if (char === "&") { | ||
this.delegate.appendToAttributeValue(this.consumeCharRef('"') || "&"); | ||
} | ||
else { | ||
this.delegate.appendToAttributeValue(char); | ||
} | ||
}, | ||
attributeValueSingleQuoted: function () { | ||
var char = this.consume(); | ||
if (char === "'") { | ||
this.delegate.finishAttributeValue(); | ||
this.state = 'afterAttributeValueQuoted'; | ||
} | ||
else if (char === "&") { | ||
this.delegate.appendToAttributeValue(this.consumeCharRef("'") || "&"); | ||
} | ||
else { | ||
this.delegate.appendToAttributeValue(char); | ||
} | ||
}, | ||
attributeValueUnquoted: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.state = 'beforeAttributeName'; | ||
} | ||
else if (char === "&") { | ||
this.consume(); | ||
this.delegate.appendToAttributeValue(this.consumeCharRef(">") || "&"); | ||
} | ||
else if (char === ">") { | ||
this.delegate.finishAttributeValue(); | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.consume(); | ||
this.delegate.appendToAttributeValue(char); | ||
} | ||
}, | ||
afterAttributeValueQuoted: function () { | ||
var char = this.peek(); | ||
if (isSpace(char)) { | ||
this.consume(); | ||
this.state = 'beforeAttributeName'; | ||
} | ||
else if (char === "/") { | ||
this.consume(); | ||
this.state = 'selfClosingStartTag'; | ||
} | ||
else if (char === ">") { | ||
this.consume(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.state = 'beforeAttributeName'; | ||
} | ||
}, | ||
selfClosingStartTag: function () { | ||
var char = this.peek(); | ||
if (char === ">") { | ||
this.consume(); | ||
this.delegate.markTagAsSelfClosing(); | ||
this.delegate.finishTag(); | ||
this.state = 'beforeData'; | ||
} | ||
else { | ||
this.state = 'beforeAttributeName'; | ||
} | ||
}, | ||
endTagOpen: function () { | ||
var char = this.consume(); | ||
if (isAlpha(char)) { | ||
this.state = 'tagName'; | ||
this.delegate.beginEndTag(); | ||
this.delegate.appendToTagName(char.toLowerCase()); | ||
} | ||
} | ||
} | ||
}; | ||
}; | ||
return EventedTokenizer; | ||
}()); | ||
function Tokenizer(entityParser, options) { | ||
this.token = null; | ||
this.startLine = 1; | ||
this.startColumn = 0; | ||
this.options = options || {}; | ||
this.tokenizer = new EventedTokenizer(this, entityParser); | ||
} | ||
Tokenizer.prototype = { | ||
tokenize: function (input) { | ||
var Tokenizer = (function () { | ||
function Tokenizer(entityParser, options) { | ||
if (options === void 0) { options = {}; } | ||
this.options = options; | ||
this.token = null; | ||
this.startLine = 1; | ||
this.startColumn = 0; | ||
this.tokens = []; | ||
this.currentAttribute = null; | ||
this.tokenizer = new EventedTokenizer(this, entityParser); | ||
} | ||
Tokenizer.prototype.tokenize = function (input) { | ||
this.tokens = []; | ||
this.tokenizer.tokenize(input); | ||
return this.tokens; | ||
}, | ||
tokenizePart: function (input) { | ||
}; | ||
Tokenizer.prototype.tokenizePart = function (input) { | ||
this.tokens = []; | ||
this.tokenizer.tokenizePart(input); | ||
return this.tokens; | ||
}, | ||
tokenizeEOF: function () { | ||
}; | ||
Tokenizer.prototype.tokenizeEOF = function () { | ||
this.tokens = []; | ||
this.tokenizer.tokenizeEOF(); | ||
return this.tokens[0]; | ||
}, | ||
reset: function () { | ||
}; | ||
Tokenizer.prototype.reset = function () { | ||
this.token = null; | ||
this.startLine = 1; | ||
this.startColumn = 0; | ||
}, | ||
addLocInfo: function () { | ||
}; | ||
Tokenizer.prototype.addLocInfo = function () { | ||
if (this.options.loc) { | ||
@@ -523,5 +527,5 @@ this.token.loc = { | ||
this.startColumn = this.tokenizer.column; | ||
}, | ||
}; | ||
// Data | ||
beginData: function () { | ||
Tokenizer.prototype.beginData = function () { | ||
this.token = { | ||
@@ -532,11 +536,11 @@ type: 'Chars', | ||
this.tokens.push(this.token); | ||
}, | ||
appendToData: function (char) { | ||
}; | ||
Tokenizer.prototype.appendToData = function (char) { | ||
this.token.chars += char; | ||
}, | ||
finishData: function () { | ||
}; | ||
Tokenizer.prototype.finishData = function () { | ||
this.addLocInfo(); | ||
}, | ||
}; | ||
// Comment | ||
beginComment: function () { | ||
Tokenizer.prototype.beginComment = function () { | ||
this.token = { | ||
@@ -547,11 +551,11 @@ type: 'Comment', | ||
this.tokens.push(this.token); | ||
}, | ||
appendToCommentData: function (char) { | ||
}; | ||
Tokenizer.prototype.appendToCommentData = function (char) { | ||
this.token.chars += char; | ||
}, | ||
finishComment: function () { | ||
}; | ||
Tokenizer.prototype.finishComment = function () { | ||
this.addLocInfo(); | ||
}, | ||
}; | ||
// Tags - basic | ||
beginStartTag: function () { | ||
Tokenizer.prototype.beginStartTag = function () { | ||
this.token = { | ||
@@ -564,4 +568,4 @@ type: 'StartTag', | ||
this.tokens.push(this.token); | ||
}, | ||
beginEndTag: function () { | ||
}; | ||
Tokenizer.prototype.beginEndTag = function () { | ||
this.token = { | ||
@@ -572,34 +576,35 @@ type: 'EndTag', | ||
this.tokens.push(this.token); | ||
}, | ||
finishTag: function () { | ||
}; | ||
Tokenizer.prototype.finishTag = function () { | ||
this.addLocInfo(); | ||
}, | ||
markTagAsSelfClosing: function () { | ||
}; | ||
Tokenizer.prototype.markTagAsSelfClosing = function () { | ||
this.token.selfClosing = true; | ||
}, | ||
}; | ||
// Tags - name | ||
appendToTagName: function (char) { | ||
Tokenizer.prototype.appendToTagName = function (char) { | ||
this.token.tagName += char; | ||
}, | ||
}; | ||
// Tags - attributes | ||
beginAttribute: function () { | ||
this._currentAttribute = ["", "", null]; | ||
this.token.attributes.push(this._currentAttribute); | ||
}, | ||
appendToAttributeName: function (char) { | ||
this._currentAttribute[0] += char; | ||
}, | ||
beginAttributeValue: function (isQuoted) { | ||
this._currentAttribute[2] = isQuoted; | ||
}, | ||
appendToAttributeValue: function (char) { | ||
this._currentAttribute[1] = this._currentAttribute[1] || ""; | ||
this._currentAttribute[1] += char; | ||
}, | ||
finishAttributeValue: function () { | ||
}, | ||
reportSyntaxError: function (message) { | ||
Tokenizer.prototype.beginAttribute = function () { | ||
this.currentAttribute = ["", "", null]; | ||
this.token.attributes.push(this.currentAttribute); | ||
}; | ||
Tokenizer.prototype.appendToAttributeName = function (char) { | ||
this.currentAttribute[0] += char; | ||
}; | ||
Tokenizer.prototype.beginAttributeValue = function (isQuoted) { | ||
this.currentAttribute[2] = isQuoted; | ||
}; | ||
Tokenizer.prototype.appendToAttributeValue = function (char) { | ||
this.currentAttribute[1] = this.currentAttribute[1] || ""; | ||
this.currentAttribute[1] += char; | ||
}; | ||
Tokenizer.prototype.finishAttributeValue = function () { | ||
}; | ||
Tokenizer.prototype.reportSyntaxError = function (message) { | ||
this.token.syntaxError = message; | ||
} | ||
}; | ||
}; | ||
return Tokenizer; | ||
}()); | ||
@@ -620,2 +625,3 @@ function tokenize(input, options) { | ||
}))); | ||
//# sourceMappingURL=simple-html-tokenizer.js.map |
{ | ||
"name": "simple-html-tokenizer", | ||
"version": "0.4.0", | ||
"version": "0.4.1", | ||
"license": "MIT", | ||
@@ -16,2 +16,3 @@ "description": "Simple HTML Tokenizer is a lightweight JavaScript library that can be used to tokenize the kind of HTML normally found in templates.", | ||
"jsnext:main": "dist/es6/index.js", | ||
"typings": "dist/es6/index.d.ts", | ||
"scripts": { | ||
@@ -18,0 +19,0 @@ "build": "ember build", |
@@ -6,3 +6,4 @@ const HEXCHARCODE = /^#[xX]([A-Fa-f0-9]+)$/; | ||
export default class EntityParser { | ||
constructor(private named) {} | ||
constructor(private named) { | ||
} | ||
@@ -9,0 +10,0 @@ parse(entity) { |
import { preprocessInput, isAlpha, isSpace } from './utils'; | ||
function EventedTokenizer(delegate, entityParser) { | ||
this.delegate = delegate; | ||
this.entityParser = entityParser; | ||
export default class EventedTokenizer { | ||
private state: any = null; | ||
private input: any = null; | ||
private index: number = -1; | ||
private tagLine: number = -1; | ||
private tagColumn: number = -1; | ||
this.state = null; | ||
this.input = null; | ||
public line: number = -1; | ||
public column: number = -1; | ||
this.index = -1; | ||
this.line = -1; | ||
this.column = -1; | ||
this.tagLine = -1; | ||
this.tagColumn = -1; | ||
constructor(private delegate, private entityParser) { | ||
this.reset(); | ||
} | ||
this.reset(); | ||
} | ||
EventedTokenizer.prototype = { | ||
reset: function() { | ||
reset() { | ||
this.state = 'beforeData'; | ||
@@ -32,11 +29,11 @@ this.input = ''; | ||
this.delegate.reset(); | ||
}, | ||
} | ||
tokenize: function(input) { | ||
tokenize(input) { | ||
this.reset(); | ||
this.tokenizePart(input); | ||
this.tokenizeEOF(); | ||
}, | ||
} | ||
tokenizePart: function(input) { | ||
tokenizePart(input) { | ||
this.input += preprocessInput(input); | ||
@@ -47,9 +44,9 @@ | ||
} | ||
}, | ||
} | ||
tokenizeEOF: function() { | ||
tokenizeEOF() { | ||
this.flushData(); | ||
}, | ||
} | ||
flushData: function() { | ||
flushData() { | ||
if (this.state === 'data') { | ||
@@ -59,9 +56,9 @@ this.delegate.finishData(); | ||
} | ||
}, | ||
} | ||
peek: function() { | ||
peek() { | ||
return this.input.charAt(this.index); | ||
}, | ||
} | ||
consume: function() { | ||
consume() { | ||
let char = this.peek(); | ||
@@ -79,5 +76,5 @@ | ||
return char; | ||
}, | ||
} | ||
consumeCharRef: function() { | ||
consumeCharRef() { | ||
let endIndex = this.input.indexOf(';', this.index); | ||
@@ -101,5 +98,5 @@ if (endIndex === -1) { | ||
} | ||
}, | ||
} | ||
markTagStart: function() { | ||
markTagStart() { | ||
// these properties to be removed in next major bump | ||
@@ -112,6 +109,6 @@ this.tagLine = this.line; | ||
} | ||
}, | ||
} | ||
states: { | ||
beforeData: function() { | ||
states = { | ||
beforeData() { | ||
let char = this.peek(); | ||
@@ -129,3 +126,3 @@ | ||
data: function() { | ||
data() { | ||
let char = this.peek(); | ||
@@ -147,3 +144,3 @@ | ||
tagOpen: function() { | ||
tagOpen() { | ||
let char = this.consume(); | ||
@@ -162,3 +159,3 @@ | ||
markupDeclaration: function() { | ||
markupDeclaration() { | ||
let char = this.consume(); | ||
@@ -173,3 +170,3 @@ | ||
commentStart: function() { | ||
commentStart() { | ||
let char = this.consume(); | ||
@@ -188,3 +185,3 @@ | ||
commentStartDash: function() { | ||
commentStartDash() { | ||
let char = this.consume(); | ||
@@ -203,3 +200,3 @@ | ||
comment: function() { | ||
comment() { | ||
let char = this.consume(); | ||
@@ -214,3 +211,3 @@ | ||
commentEndDash: function() { | ||
commentEndDash() { | ||
let char = this.consume(); | ||
@@ -226,3 +223,3 @@ | ||
commentEnd: function() { | ||
commentEnd() { | ||
let char = this.consume(); | ||
@@ -239,3 +236,3 @@ | ||
tagName: function() { | ||
tagName() { | ||
let char = this.consume(); | ||
@@ -255,3 +252,3 @@ | ||
beforeAttributeName: function() { | ||
beforeAttributeName() { | ||
let char = this.peek(); | ||
@@ -281,3 +278,3 @@ | ||
attributeName: function() { | ||
attributeName() { | ||
let char = this.peek(); | ||
@@ -312,3 +309,3 @@ | ||
afterAttributeName: function() { | ||
afterAttributeName() { | ||
let char = this.peek(); | ||
@@ -343,3 +340,3 @@ | ||
beforeAttributeValue: function() { | ||
beforeAttributeValue() { | ||
let char = this.peek(); | ||
@@ -371,3 +368,3 @@ | ||
attributeValueDoubleQuoted: function() { | ||
attributeValueDoubleQuoted() { | ||
let char = this.consume(); | ||
@@ -385,3 +382,3 @@ | ||
attributeValueSingleQuoted: function() { | ||
attributeValueSingleQuoted() { | ||
let char = this.consume(); | ||
@@ -399,3 +396,3 @@ | ||
attributeValueUnquoted: function() { | ||
attributeValueUnquoted() { | ||
let char = this.peek(); | ||
@@ -421,3 +418,3 @@ | ||
afterAttributeValueQuoted: function() { | ||
afterAttributeValueQuoted() { | ||
let char = this.peek(); | ||
@@ -440,3 +437,3 @@ | ||
selfClosingStartTag: function() { | ||
selfClosingStartTag() { | ||
let char = this.peek(); | ||
@@ -454,3 +451,3 @@ | ||
endTagOpen: function() { | ||
endTagOpen() { | ||
let char = this.consume(); | ||
@@ -464,5 +461,3 @@ | ||
} | ||
} | ||
}; | ||
export default EventedTokenizer; | ||
}; | ||
} |
@@ -1,8 +0,8 @@ | ||
import Tokenizer from './tokenizer'; | ||
import Tokenizer, { Token } from './tokenizer'; | ||
import EntityParser from './entity-parser'; | ||
import namedCharRefs from './html5-named-char-refs'; | ||
export default function tokenize(input, options) { | ||
export default function tokenize(input, options): Token[] { | ||
let tokenizer = new Tokenizer(new EntityParser(namedCharRefs), options); | ||
return tokenizer.tokenize(input); | ||
} |
import EventedTokenizer from './evented-tokenizer'; | ||
function Tokenizer(entityParser, options) { | ||
this.token = null; | ||
this.startLine = 1; | ||
this.startColumn = 0; | ||
this.options = options || {}; | ||
this.tokenizer = new EventedTokenizer(this, entityParser); | ||
export interface TokenizerOptions { | ||
loc?: any; | ||
}; | ||
export type Attribute = [string, string, boolean]; | ||
export interface Token { | ||
type: string; | ||
chars?: string; | ||
attributes?: Attribute[]; | ||
tagName?: string; | ||
selfClosing?: boolean; | ||
loc?: { | ||
start: { | ||
line: number; | ||
column: number; | ||
}, | ||
end: { | ||
line: number; | ||
column: number; | ||
} | ||
}; | ||
syntaxError?: string; | ||
} | ||
Tokenizer.prototype = { | ||
tokenize: function(input) { | ||
export default class Tokenizer { | ||
private token: Token = null; | ||
private startLine = 1; | ||
private startColumn = 0; | ||
private tokenizer: EventedTokenizer; | ||
private tokens: Token[] = []; | ||
private currentAttribute: Attribute = null; | ||
constructor(entityParser, private options: TokenizerOptions = {}) { | ||
this.tokenizer = new EventedTokenizer(this, entityParser); | ||
} | ||
tokenize(input) { | ||
this.tokens = []; | ||
this.tokenizer.tokenize(input); | ||
return this.tokens; | ||
}, | ||
} | ||
tokenizePart: function(input) { | ||
tokenizePart(input) { | ||
this.tokens = []; | ||
this.tokenizer.tokenizePart(input); | ||
return this.tokens; | ||
}, | ||
} | ||
tokenizeEOF: function() { | ||
tokenizeEOF() { | ||
this.tokens = []; | ||
this.tokenizer.tokenizeEOF(); | ||
return this.tokens[0]; | ||
}, | ||
} | ||
reset: function() { | ||
reset() { | ||
this.token = null; | ||
this.startLine = 1; | ||
this.startColumn = 0; | ||
}, | ||
} | ||
addLocInfo: function() { | ||
addLocInfo() { | ||
if (this.options.loc) { | ||
@@ -51,7 +79,7 @@ this.token.loc = { | ||
this.startColumn = this.tokenizer.column; | ||
}, | ||
} | ||
// Data | ||
beginData: function() { | ||
beginData() { | ||
this.token = { | ||
@@ -62,15 +90,15 @@ type: 'Chars', | ||
this.tokens.push(this.token); | ||
}, | ||
} | ||
appendToData: function(char) { | ||
appendToData(char) { | ||
this.token.chars += char; | ||
}, | ||
} | ||
finishData: function() { | ||
finishData() { | ||
this.addLocInfo(); | ||
}, | ||
} | ||
// Comment | ||
beginComment: function() { | ||
beginComment() { | ||
this.token = { | ||
@@ -81,15 +109,15 @@ type: 'Comment', | ||
this.tokens.push(this.token); | ||
}, | ||
} | ||
appendToCommentData: function(char) { | ||
appendToCommentData(char) { | ||
this.token.chars += char; | ||
}, | ||
} | ||
finishComment: function() { | ||
finishComment() { | ||
this.addLocInfo(); | ||
}, | ||
} | ||
// Tags - basic | ||
beginStartTag: function() { | ||
beginStartTag() { | ||
this.token = { | ||
@@ -102,5 +130,5 @@ type: 'StartTag', | ||
this.tokens.push(this.token); | ||
}, | ||
} | ||
beginEndTag: function() { | ||
beginEndTag() { | ||
this.token = { | ||
@@ -111,46 +139,44 @@ type: 'EndTag', | ||
this.tokens.push(this.token); | ||
}, | ||
} | ||
finishTag: function() { | ||
finishTag() { | ||
this.addLocInfo(); | ||
}, | ||
} | ||
markTagAsSelfClosing: function() { | ||
markTagAsSelfClosing() { | ||
this.token.selfClosing = true; | ||
}, | ||
} | ||
// Tags - name | ||
appendToTagName: function(char) { | ||
appendToTagName(char) { | ||
this.token.tagName += char; | ||
}, | ||
} | ||
// Tags - attributes | ||
beginAttribute: function() { | ||
this._currentAttribute = ["", "", null]; | ||
this.token.attributes.push(this._currentAttribute); | ||
}, | ||
beginAttribute() { | ||
this.currentAttribute = ["", "", null]; | ||
this.token.attributes.push(this.currentAttribute); | ||
} | ||
appendToAttributeName: function(char) { | ||
this._currentAttribute[0] += char; | ||
}, | ||
appendToAttributeName(char) { | ||
this.currentAttribute[0] += char; | ||
} | ||
beginAttributeValue: function(isQuoted) { | ||
this._currentAttribute[2] = isQuoted; | ||
}, | ||
beginAttributeValue(isQuoted) { | ||
this.currentAttribute[2] = isQuoted; | ||
} | ||
appendToAttributeValue: function(char) { | ||
this._currentAttribute[1] = this._currentAttribute[1] || ""; | ||
this._currentAttribute[1] += char; | ||
}, | ||
appendToAttributeValue(char) { | ||
this.currentAttribute[1] = this.currentAttribute[1] || ""; | ||
this.currentAttribute[1] += char; | ||
} | ||
finishAttributeValue: function() { | ||
}, | ||
finishAttributeValue() { | ||
} | ||
reportSyntaxError: function(message) { | ||
reportSyntaxError(message: string) { | ||
this.token.syntaxError = message; | ||
} | ||
}; | ||
export default Tokenizer; | ||
} |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
4375
0
623895
27