767 lines
28 KiB
JavaScript
767 lines
28 KiB
JavaScript
|
|
var decodeCodePoint = require("entities/lib/decode_codepoint.js");
|
||
|
|
var entityMap = {};
|
||
|
|
var legacyMap = require("entities/maps/legacy.json");
|
||
|
|
var xmlMap = require("entities/maps/xml.json");
|
||
|
|
var i = 0;
|
||
|
|
var TEXT = i++;
|
||
|
|
var BEFORE_TAG_NAME = i++; //after <
|
||
|
|
var IN_TAG_NAME = i++;
|
||
|
|
var IN_SELF_CLOSING_TAG = i++;
|
||
|
|
var BEFORE_CLOSING_TAG_NAME = i++;
|
||
|
|
var IN_CLOSING_TAG_NAME = i++;
|
||
|
|
var AFTER_CLOSING_TAG_NAME = i++;
|
||
|
|
//attributes
|
||
|
|
var BEFORE_ATTRIBUTE_NAME = i++;
|
||
|
|
var IN_ATTRIBUTE_NAME = i++;
|
||
|
|
var AFTER_ATTRIBUTE_NAME = i++;
|
||
|
|
var BEFORE_ATTRIBUTE_VALUE = i++;
|
||
|
|
var IN_ATTRIBUTE_VALUE_DQ = i++; // "
|
||
|
|
var IN_ATTRIBUTE_VALUE_SQ = i++; // '
|
||
|
|
var IN_ATTRIBUTE_VALUE_NQ = i++;
|
||
|
|
//declarations
|
||
|
|
var BEFORE_DECLARATION = i++; // !
|
||
|
|
var IN_DECLARATION = i++;
|
||
|
|
//processing instructions
|
||
|
|
var IN_PROCESSING_INSTRUCTION = i++; // ?
|
||
|
|
//comments
|
||
|
|
var BEFORE_COMMENT = i++;
|
||
|
|
var IN_COMMENT = i++;
|
||
|
|
var AFTER_COMMENT_1 = i++;
|
||
|
|
var AFTER_COMMENT_2 = i++;
|
||
|
|
//cdata
|
||
|
|
var BEFORE_CDATA_1 = i++; // [
|
||
|
|
var BEFORE_CDATA_2 = i++; // C
|
||
|
|
var BEFORE_CDATA_3 = i++; // D
|
||
|
|
var BEFORE_CDATA_4 = i++; // A
|
||
|
|
var BEFORE_CDATA_5 = i++; // T
|
||
|
|
var BEFORE_CDATA_6 = i++; // A
|
||
|
|
var IN_CDATA = i++; // [
|
||
|
|
var AFTER_CDATA_1 = i++; // ]
|
||
|
|
var AFTER_CDATA_2 = i++; // ]
|
||
|
|
//special tags
|
||
|
|
var BEFORE_SPECIAL = i++; //S
|
||
|
|
var BEFORE_SPECIAL_END = i++; //S
|
||
|
|
var BEFORE_SCRIPT_1 = i++; //C
|
||
|
|
var BEFORE_SCRIPT_2 = i++; //R
|
||
|
|
var BEFORE_SCRIPT_3 = i++; //I
|
||
|
|
var BEFORE_SCRIPT_4 = i++; //P
|
||
|
|
var BEFORE_SCRIPT_5 = i++; //T
|
||
|
|
var AFTER_SCRIPT_1 = i++; //C
|
||
|
|
var AFTER_SCRIPT_2 = i++; //R
|
||
|
|
var AFTER_SCRIPT_3 = i++; //I
|
||
|
|
var AFTER_SCRIPT_4 = i++; //P
|
||
|
|
var AFTER_SCRIPT_5 = i++; //T
|
||
|
|
var BEFORE_STYLE_1 = i++; //T
|
||
|
|
var BEFORE_STYLE_2 = i++; //Y
|
||
|
|
var BEFORE_STYLE_3 = i++; //L
|
||
|
|
var BEFORE_STYLE_4 = i++; //E
|
||
|
|
var AFTER_STYLE_1 = i++; //T
|
||
|
|
var AFTER_STYLE_2 = i++; //Y
|
||
|
|
var AFTER_STYLE_3 = i++; //L
|
||
|
|
var AFTER_STYLE_4 = i++; //E
|
||
|
|
var BEFORE_ENTITY = i++; //&
|
||
|
|
var BEFORE_NUMERIC_ENTITY = i++; //#
|
||
|
|
var IN_NAMED_ENTITY = i++;
|
||
|
|
var IN_NUMERIC_ENTITY = i++;
|
||
|
|
var IN_HEX_ENTITY = i++; //X
|
||
|
|
var j = 0;
|
||
|
|
var SPECIAL_NONE = j++;
|
||
|
|
var SPECIAL_SCRIPT = j++;
|
||
|
|
var SPECIAL_STYLE = j++;
|
||
|
|
function whitespace(c) {
|
||
|
|
return c === " " || c === "\n" || c === "\t" || c === "\f" || c === "\r";
|
||
|
|
}
|
||
|
|
function ifElseState(upper, SUCCESS, FAILURE) {
|
||
|
|
var lower = upper.toLowerCase();
|
||
|
|
if (upper === lower) {
|
||
|
|
return function (c) {
|
||
|
|
if (c === lower) {
|
||
|
|
this._state = SUCCESS;
|
||
|
|
} else {
|
||
|
|
this._state = FAILURE;
|
||
|
|
this._index-- |