Last active
February 21, 2020 10:49
-
-
Save MKRhere/bf0b5a39264e901e282f09ae41faeaf4 to your computer and use it in GitHub Desktop.
HTML2HyperScript
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"use strict"; | |
const htmlparser = window.htmlparser2; | |
const html2hyperscript = (input, stream) => { | |
const elements = new Set(); | |
let indentLevel = 0; | |
let attrOpen = false; | |
let textWritten = false; | |
let justClosed = false; | |
let size = 0; | |
const streamWrite = stream.write; | |
stream.write = (...chunk) => ((size += chunk.length), streamWrite(...chunk)); | |
const parser = new htmlparser.Parser( | |
{ | |
onopentag(name, attr) { | |
elements.add(name); | |
if (justClosed) { | |
justClosed = false; | |
} | |
if (textWritten) { | |
stream.write(", "); | |
textWritten = false; | |
} | |
if (attrOpen) attrOpen = false; | |
stream.write("\n" + "\t".repeat(indentLevel++) + `${name}`); | |
let attrKeys = Object.keys(attr); | |
if (attrKeys.length) { | |
let selector = ""; | |
if (attr.id) selector += "#" + attr.id.split(" ").join("#"); | |
if (attr.class) selector += "." + attr.class.split(" ").join("."); | |
if (selector) stream.write(`["${selector}"]`); | |
stream.write("("); | |
delete attr.class; | |
delete attr.id; | |
attrKeys = Object.keys(attr); | |
if (attrKeys.length) { | |
stream.write(JSON.stringify(attr), ", "); | |
attrOpen = true; | |
} | |
} else { | |
stream.write("("); | |
} | |
}, | |
oncomment(comments) { | |
justClosed = false; | |
(comments = comments.trim()) && | |
comments | |
.split("\n") | |
.forEach(comment => | |
stream.write("\n// " + "\t".repeat(indentLevel) + comment.trim()), | |
); | |
}, | |
ontext(text) { | |
if (!text.trim()) return; | |
if (textWritten) { | |
stream.write(", "); | |
textWritten = false; | |
} | |
if (attrOpen) attrOpen = false; | |
justClosed = false; | |
const escapedTick = String.raw`\``; | |
text = text.replace(/`/g, escapedTick); | |
stream.write(`m.trust(String.raw\`${text}\`)`); | |
textWritten = true; | |
}, | |
onclosetag() { | |
if (justClosed) stream.pop(); | |
if (textWritten) { | |
textWritten = false; | |
} | |
if (attrOpen) { | |
stream.pop(); | |
stream.pop(); | |
attrOpen = false; | |
} | |
justClosed = true; | |
stream.write("),"); | |
indentLevel--; | |
}, | |
onend() { | |
if (justClosed) stream.pop(); | |
if (size) stream.write(";\n"); | |
stream.end(); | |
}, | |
}, | |
{ decodeEntities: true }, | |
); | |
parser.write(input); | |
parser.end(); | |
return { elements, stream }; | |
}; | |
window.compile = html2hyperscript; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function(f) { | |
if (typeof exports === "object" && typeof module !== "undefined") { | |
module.exports = f(); | |
} else if (typeof define === "function" && define.amd) { | |
define([], f); | |
} else { | |
var g; | |
if (typeof window !== "undefined") { | |
g = window; | |
} else if (typeof global !== "undefined") { | |
g = global; | |
} else if (typeof self !== "undefined") { | |
g = self; | |
} else { | |
g = this; | |
} | |
g.htmlparser2 = f(); | |
} | |
})(function() { | |
var define, module, exports; | |
return (function() { | |
function r(e, n, t) { | |
function o(i, f) { | |
if (!n[i]) { | |
if (!e[i]) { | |
var c = "function" == typeof require && require; | |
if (!f && c) return c(i, !0); | |
if (u) return u(i, !0); | |
var a = new Error("Cannot find module '" + i + "'"); | |
throw ((a.code = "MODULE_NOT_FOUND"), a); | |
} | |
var p = (n[i] = { exports: {} }); | |
e[i][0].call( | |
p.exports, | |
function(r) { | |
var n = e[i][1][r]; | |
return o(n || r); | |
}, | |
p, | |
p.exports, | |
r, | |
e, | |
n, | |
t, | |
); | |
} | |
return n[i].exports; | |
} | |
for ( | |
var u = "function" == typeof require && require, i = 0; | |
i < t.length; | |
i++ | |
) | |
o(t[i]); | |
return o; | |
} | |
return r; | |
})()( | |
{ | |
1: [function(require, module, exports) {}, {}], | |
2: [ | |
function(require, module, exports) { | |
// Copyright Joyent, Inc. and other Node contributors. | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a | |
// copy of this software and associated documentation files (the | |
// "Software"), to deal in the Software without restriction, including | |
// without limitation the rights to use, copy, modify, merge, publish, | |
// distribute, sublicense, and/or sell copies of the Software, and to permit | |
// persons to whom the Software is furnished to do so, subject to the | |
// following conditions: | |
// | |
// The above copyright notice and this permission notice shall be included | |
// in all copies or substantial portions of the Software. | |
// | |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
// USE OR OTHER DEALINGS IN THE SOFTWARE. | |
var objectCreate = Object.create || objectCreatePolyfill; | |
var objectKeys = Object.keys || objectKeysPolyfill; | |
var bind = Function.prototype.bind || functionBindPolyfill; | |
function EventEmitter() { | |
if ( | |
!this._events || | |
!Object.prototype.hasOwnProperty.call(this, "_events") | |
) { | |
this._events = objectCreate(null); | |
this._eventsCount = 0; | |
} | |
this._maxListeners = this._maxListeners || undefined; | |
} | |
module.exports = EventEmitter; | |
// Backwards-compat with node 0.10.x | |
EventEmitter.EventEmitter = EventEmitter; | |
EventEmitter.prototype._events = undefined; | |
EventEmitter.prototype._maxListeners = undefined; | |
// By default EventEmitters will print a warning if more than 10 listeners are | |
// added to it. This is a useful default which helps finding memory leaks. | |
var defaultMaxListeners = 10; | |
var hasDefineProperty; | |
try { | |
var o = {}; | |
if (Object.defineProperty) | |
Object.defineProperty(o, "x", { value: 0 }); | |
hasDefineProperty = o.x === 0; | |
} catch (err) { | |
hasDefineProperty = false; | |
} | |
if (hasDefineProperty) { | |
Object.defineProperty(EventEmitter, "defaultMaxListeners", { | |
enumerable: true, | |
get: function() { | |
return defaultMaxListeners; | |
}, | |
set: function(arg) { | |
// check whether the input is a positive number (whose value is zero or | |
// greater and not a NaN). | |
if (typeof arg !== "number" || arg < 0 || arg !== arg) | |
throw new TypeError( | |
'"defaultMaxListeners" must be a positive number', | |
); | |
defaultMaxListeners = arg; | |
}, | |
}); | |
} else { | |
EventEmitter.defaultMaxListeners = defaultMaxListeners; | |
} | |
// Obviously not all Emitters should be limited to 10. This function allows | |
// that to be increased. Set to zero for unlimited. | |
EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { | |
if (typeof n !== "number" || n < 0 || isNaN(n)) | |
throw new TypeError('"n" argument must be a positive number'); | |
this._maxListeners = n; | |
return this; | |
}; | |
function $getMaxListeners(that) { | |
if (that._maxListeners === undefined) | |
return EventEmitter.defaultMaxListeners; | |
return that._maxListeners; | |
} | |
EventEmitter.prototype.getMaxListeners = function getMaxListeners() { | |
return $getMaxListeners(this); | |
}; | |
// These standalone emit* functions are used to optimize calling of event | |
// handlers for fast cases because emit() itself often has a variable number of | |
// arguments and can be deoptimized because of that. These functions always have | |
// the same number of arguments and thus do not get deoptimized, so the code | |
// inside them can execute faster. | |
function emitNone(handler, isFn, self) { | |
if (isFn) handler.call(self); | |
else { | |
var len = handler.length; | |
var listeners = arrayClone(handler, len); | |
for (var i = 0; i < len; ++i) listeners[i].call(self); | |
} | |
} | |
function emitOne(handler, isFn, self, arg1) { | |
if (isFn) handler.call(self, arg1); | |
else { | |
var len = handler.length; | |
var listeners = arrayClone(handler, len); | |
for (var i = 0; i < len; ++i) listeners[i].call(self, arg1); | |
} | |
} | |
function emitTwo(handler, isFn, self, arg1, arg2) { | |
if (isFn) handler.call(self, arg1, arg2); | |
else { | |
var len = handler.length; | |
var listeners = arrayClone(handler, len); | |
for (var i = 0; i < len; ++i) listeners[i].call(self, arg1, arg2); | |
} | |
} | |
function emitThree(handler, isFn, self, arg1, arg2, arg3) { | |
if (isFn) handler.call(self, arg1, arg2, arg3); | |
else { | |
var len = handler.length; | |
var listeners = arrayClone(handler, len); | |
for (var i = 0; i < len; ++i) | |
listeners[i].call(self, arg1, arg2, arg3); | |
} | |
} | |
function emitMany(handler, isFn, self, args) { | |
if (isFn) handler.apply(self, args); | |
else { | |
var len = handler.length; | |
var listeners = arrayClone(handler, len); | |
for (var i = 0; i < len; ++i) listeners[i].apply(self, args); | |
} | |
} | |
EventEmitter.prototype.emit = function emit(type) { | |
var er, handler, len, args, i, events; | |
var doError = type === "error"; | |
events = this._events; | |
if (events) doError = doError && events.error == null; | |
else if (!doError) return false; | |
// If there is no 'error' event listener then throw. | |
if (doError) { | |
if (arguments.length > 1) er = arguments[1]; | |
if (er instanceof Error) { | |
throw er; // Unhandled 'error' event | |
} else { | |
// At least give some kind of context to the user | |
var err = new Error('Unhandled "error" event. (' + er + ")"); | |
err.context = er; | |
throw err; | |
} | |
return false; | |
} | |
handler = events[type]; | |
if (!handler) return false; | |
var isFn = typeof handler === "function"; | |
len = arguments.length; | |
switch (len) { | |
// fast cases | |
case 1: | |
emitNone(handler, isFn, this); | |
break; | |
case 2: | |
emitOne(handler, isFn, this, arguments[1]); | |
break; | |
case 3: | |
emitTwo(handler, isFn, this, arguments[1], arguments[2]); | |
break; | |
case 4: | |
emitThree( | |
handler, | |
isFn, | |
this, | |
arguments[1], | |
arguments[2], | |
arguments[3], | |
); | |
break; | |
// slower | |
default: | |
args = new Array(len - 1); | |
for (i = 1; i < len; i++) args[i - 1] = arguments[i]; | |
emitMany(handler, isFn, this, args); | |
} | |
return true; | |
}; | |
function _addListener(target, type, listener, prepend) { | |
var m; | |
var events; | |
var existing; | |
if (typeof listener !== "function") | |
throw new TypeError('"listener" argument must be a function'); | |
events = target._events; | |
if (!events) { | |
events = target._events = objectCreate(null); | |
target._eventsCount = 0; | |
} else { | |
// To avoid recursion in the case that type === "newListener"! Before | |
// adding it to the listeners, first emit "newListener". | |
if (events.newListener) { | |
target.emit( | |
"newListener", | |
type, | |
listener.listener ? listener.listener : listener, | |
); | |
// Re-assign `events` because a newListener handler could have caused the | |
// this._events to be assigned to a new object | |
events = target._events; | |
} | |
existing = events[type]; | |
} | |
if (!existing) { | |
// Optimize the case of one listener. Don't need the extra array object. | |
existing = events[type] = listener; | |
++target._eventsCount; | |
} else { | |
if (typeof existing === "function") { | |
// Adding the second element, need to change to array. | |
existing = events[type] = prepend | |
? [listener, existing] | |
: [existing, listener]; | |
} else { | |
// If we've already got an array, just append. | |
if (prepend) { | |
existing.unshift(listener); | |
} else { | |
existing.push(listener); | |
} | |
} | |
// Check for listener leak | |
if (!existing.warned) { | |
m = $getMaxListeners(target); | |
if (m && m > 0 && existing.length > m) { | |
existing.warned = true; | |
var w = new Error( | |
"Possible EventEmitter memory leak detected. " + | |
existing.length + | |
' "' + | |
String(type) + | |
'" listeners ' + | |
"added. Use emitter.setMaxListeners() to " + | |
"increase limit.", | |
); | |
w.name = "MaxListenersExceededWarning"; | |
w.emitter = target; | |
w.type = type; | |
w.count = existing.length; | |
if (typeof console === "object" && console.warn) { | |
console.warn("%s: %s", w.name, w.message); | |
} | |
} | |
} | |
} | |
return target; | |
} | |
EventEmitter.prototype.addListener = function addListener( | |
type, | |
listener, | |
) { | |
return _addListener(this, type, listener, false); | |
}; | |
EventEmitter.prototype.on = EventEmitter.prototype.addListener; | |
EventEmitter.prototype.prependListener = function prependListener( | |
type, | |
listener, | |
) { | |
return _addListener(this, type, listener, true); | |
}; | |
function onceWrapper() { | |
if (!this.fired) { | |
this.target.removeListener(this.type, this.wrapFn); | |
this.fired = true; | |
switch (arguments.length) { | |
case 0: | |
return this.listener.call(this.target); | |
case 1: | |
return this.listener.call(this.target, arguments[0]); | |
case 2: | |
return this.listener.call( | |
this.target, | |
arguments[0], | |
arguments[1], | |
); | |
case 3: | |
return this.listener.call( | |
this.target, | |
arguments[0], | |
arguments[1], | |
arguments[2], | |
); | |
default: | |
var args = new Array(arguments.length); | |
for (var i = 0; i < args.length; ++i) args[i] = arguments[i]; | |
this.listener.apply(this.target, args); | |
} | |
} | |
} | |
function _onceWrap(target, type, listener) { | |
var state = { | |
fired: false, | |
wrapFn: undefined, | |
target: target, | |
type: type, | |
listener: listener, | |
}; | |
var wrapped = bind.call(onceWrapper, state); | |
wrapped.listener = listener; | |
state.wrapFn = wrapped; | |
return wrapped; | |
} | |
EventEmitter.prototype.once = function once(type, listener) { | |
if (typeof listener !== "function") | |
throw new TypeError('"listener" argument must be a function'); | |
this.on(type, _onceWrap(this, type, listener)); | |
return this; | |
}; | |
EventEmitter.prototype.prependOnceListener = function prependOnceListener( | |
type, | |
listener, | |
) { | |
if (typeof listener !== "function") | |
throw new TypeError('"listener" argument must be a function'); | |
this.prependListener(type, _onceWrap(this, type, listener)); | |
return this; | |
}; | |
// Emits a 'removeListener' event if and only if the listener was removed. | |
EventEmitter.prototype.removeListener = function removeListener( | |
type, | |
listener, | |
) { | |
var list, events, position, i, originalListener; | |
if (typeof listener !== "function") | |
throw new TypeError('"listener" argument must be a function'); | |
events = this._events; | |
if (!events) return this; | |
list = events[type]; | |
if (!list) return this; | |
if (list === listener || list.listener === listener) { | |
if (--this._eventsCount === 0) this._events = objectCreate(null); | |
else { | |
delete events[type]; | |
if (events.removeListener) | |
this.emit("removeListener", type, list.listener || listener); | |
} | |
} else if (typeof list !== "function") { | |
position = -1; | |
for (i = list.length - 1; i >= 0; i--) { | |
if (list[i] === listener || list[i].listener === listener) { | |
originalListener = list[i].listener; | |
position = i; | |
break; | |
} | |
} | |
if (position < 0) return this; | |
if (position === 0) list.shift(); | |
else spliceOne(list, position); | |
if (list.length === 1) events[type] = list[0]; | |
if (events.removeListener) | |
this.emit("removeListener", type, originalListener || listener); | |
} | |
return this; | |
}; | |
EventEmitter.prototype.removeAllListeners = function removeAllListeners( | |
type, | |
) { | |
var listeners, events, i; | |
events = this._events; | |
if (!events) return this; | |
// not listening for removeListener, no need to emit | |
if (!events.removeListener) { | |
if (arguments.length === 0) { | |
this._events = objectCreate(null); | |
this._eventsCount = 0; | |
} else if (events[type]) { | |
if (--this._eventsCount === 0) | |
this._events = objectCreate(null); | |
else delete events[type]; | |
} | |
return this; | |
} | |
// emit removeListener for all listeners on all events | |
if (arguments.length === 0) { | |
var keys = objectKeys(events); | |
var key; | |
for (i = 0; i < keys.length; ++i) { | |
key = keys[i]; | |
if (key === "removeListener") continue; | |
this.removeAllListeners(key); | |
} | |
this.removeAllListeners("removeListener"); | |
this._events = objectCreate(null); | |
this._eventsCount = 0; | |
return this; | |
} | |
listeners = events[type]; | |
if (typeof listeners === "function") { | |
this.removeListener(type, listeners); | |
} else if (listeners) { | |
// LIFO order | |
for (i = listeners.length - 1; i >= 0; i--) { | |
this.removeListener(type, listeners[i]); | |
} | |
} | |
return this; | |
}; | |
function _listeners(target, type, unwrap) { | |
var events = target._events; | |
if (!events) return []; | |
var evlistener = events[type]; | |
if (!evlistener) return []; | |
if (typeof evlistener === "function") | |
return unwrap | |
? [evlistener.listener || evlistener] | |
: [evlistener]; | |
return unwrap | |
? unwrapListeners(evlistener) | |
: arrayClone(evlistener, evlistener.length); | |
} | |
EventEmitter.prototype.listeners = function listeners(type) { | |
return _listeners(this, type, true); | |
}; | |
EventEmitter.prototype.rawListeners = function rawListeners(type) { | |
return _listeners(this, type, false); | |
}; | |
EventEmitter.listenerCount = function(emitter, type) { | |
if (typeof emitter.listenerCount === "function") { | |
return emitter.listenerCount(type); | |
} else { | |
return listenerCount.call(emitter, type); | |
} | |
}; | |
EventEmitter.prototype.listenerCount = listenerCount; | |
function listenerCount(type) { | |
var events = this._events; | |
if (events) { | |
var evlistener = events[type]; | |
if (typeof evlistener === "function") { | |
return 1; | |
} else if (evlistener) { | |
return evlistener.length; | |
} | |
} | |
return 0; | |
} | |
EventEmitter.prototype.eventNames = function eventNames() { | |
return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : []; | |
}; | |
// About 1.5x faster than the two-arg version of Array#splice(). | |
function spliceOne(list, index) { | |
for ( | |
var i = index, k = i + 1, n = list.length; | |
k < n; | |
i += 1, k += 1 | |
) | |
list[i] = list[k]; | |
list.pop(); | |
} | |
function arrayClone(arr, n) { | |
var copy = new Array(n); | |
for (var i = 0; i < n; ++i) copy[i] = arr[i]; | |
return copy; | |
} | |
function unwrapListeners(arr) { | |
var ret = new Array(arr.length); | |
for (var i = 0; i < ret.length; ++i) { | |
ret[i] = arr[i].listener || arr[i]; | |
} | |
return ret; | |
} | |
function objectCreatePolyfill(proto) { | |
var F = function() {}; | |
F.prototype = proto; | |
return new F(); | |
} | |
function objectKeysPolyfill(obj) { | |
var keys = []; | |
for (var k in obj) | |
if (Object.prototype.hasOwnProperty.call(obj, k)) { | |
keys.push(k); | |
} | |
return k; | |
} | |
function functionBindPolyfill(context) { | |
var fn = this; | |
return function() { | |
return fn.apply(context, arguments); | |
}; | |
} | |
}, | |
{}, | |
], | |
3: [ | |
function(require, module, exports) { | |
"use strict"; | |
var __extends = | |
(this && this.__extends) || | |
(function() { | |
var extendStatics = function(d, b) { | |
extendStatics = | |
Object.setPrototypeOf || | |
({ __proto__: [] } instanceof Array && | |
function(d, b) { | |
d.__proto__ = b; | |
}) || | |
function(d, b) { | |
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | |
}; | |
return extendStatics(d, b); | |
}; | |
return function(d, b) { | |
extendStatics(d, b); | |
function __() { | |
this.constructor = d; | |
} | |
d.prototype = | |
b === null | |
? Object.create(b) | |
: ((__.prototype = b.prototype), new __()); | |
}; | |
})(); | |
var __spreadArrays = | |
(this && this.__spreadArrays) || | |
function() { | |
for (var s = 0, i = 0, il = arguments.length; i < il; i++) | |
s += arguments[i].length; | |
for (var r = Array(s), k = 0, i = 0; i < il; i++) | |
for ( | |
var a = arguments[i], j = 0, jl = a.length; | |
j < jl; | |
j++, k++ | |
) | |
r[k] = a[j]; | |
return r; | |
}; | |
var __importDefault = | |
(this && this.__importDefault) || | |
function(mod) { | |
return mod && mod.__esModule ? mod : { default: mod }; | |
}; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var MultiplexHandler_1 = __importDefault( | |
require("./MultiplexHandler"), | |
); | |
var CollectingHandler = /** @class */ (function(_super) { | |
__extends(CollectingHandler, _super); | |
function CollectingHandler(cbs) { | |
if (cbs === void 0) { | |
cbs = {}; | |
} | |
var _this = | |
_super.call(this, function(name) { | |
var _a; | |
var args = []; | |
for (var _i = 1; _i < arguments.length; _i++) { | |
args[_i - 1] = arguments[_i]; | |
} | |
_this.events.push(__spreadArrays([name], args)); | |
// @ts-ignore | |
if (_this._cbs[name]) (_a = _this._cbs)[name].apply(_a, args); | |
}) || this; | |
_this._cbs = cbs; | |
_this.events = []; | |
return _this; | |
} | |
CollectingHandler.prototype.onreset = function() { | |
this.events = []; | |
if (this._cbs.onreset) this._cbs.onreset(); | |
}; | |
CollectingHandler.prototype.restart = function() { | |
var _a; | |
if (this._cbs.onreset) this._cbs.onreset(); | |
for (var i = 0; i < this.events.length; i++) { | |
var _b = this.events[i], | |
name_1 = _b[0], | |
args = _b.slice(1); | |
if (!this._cbs[name_1]) { | |
continue; | |
} | |
// @ts-ignore | |
(_a = this._cbs)[name_1].apply(_a, args); | |
} | |
}; | |
return CollectingHandler; | |
})(MultiplexHandler_1.default); | |
exports.CollectingHandler = CollectingHandler; | |
}, | |
{ "./MultiplexHandler": 5 }, | |
], | |
4: [ | |
function(require, module, exports) { | |
"use strict"; | |
var __extends = | |
(this && this.__extends) || | |
(function() { | |
var extendStatics = function(d, b) { | |
extendStatics = | |
Object.setPrototypeOf || | |
({ __proto__: [] } instanceof Array && | |
function(d, b) { | |
d.__proto__ = b; | |
}) || | |
function(d, b) { | |
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | |
}; | |
return extendStatics(d, b); | |
}; | |
return function(d, b) { | |
extendStatics(d, b); | |
function __() { | |
this.constructor = d; | |
} | |
d.prototype = | |
b === null | |
? Object.create(b) | |
: ((__.prototype = b.prototype), new __()); | |
}; | |
})(); | |
var __importDefault = | |
(this && this.__importDefault) || | |
function(mod) { | |
return mod && mod.__esModule ? mod : { default: mod }; | |
}; | |
var __importStar = | |
(this && this.__importStar) || | |
function(mod) { | |
if (mod && mod.__esModule) return mod; | |
var result = {}; | |
if (mod != null) | |
for (var k in mod) | |
if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; | |
result["default"] = mod; | |
return result; | |
}; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var domhandler_1 = __importDefault(require("domhandler")); | |
var DomUtils = __importStar(require("domutils")); | |
var Parser_1 = require("./Parser"); | |
//TODO: Consume data as it is coming in | |
var FeedHandler = /** @class */ (function(_super) { | |
__extends(FeedHandler, _super); | |
/** | |
* | |
* @param callback | |
* @param options | |
*/ | |
function FeedHandler(callback, options) { | |
var _this = this; | |
if (typeof callback === "object" && callback !== null) { | |
callback = undefined; | |
options = callback; | |
} | |
_this = _super.call(this, callback, options) || this; | |
return _this; | |
} | |
FeedHandler.prototype.onend = function() { | |
var feed = {}; | |
var feedRoot = getOneElement(isValidFeed, this.dom); | |
if (feedRoot) { | |
if (feedRoot.name === "feed") { | |
var childs = feedRoot.children; | |
feed.type = "atom"; | |
addConditionally(feed, "id", "id", childs); | |
addConditionally(feed, "title", "title", childs); | |
var href = getAttribute( | |
"href", | |
getOneElement("link", childs), | |
); | |
if (href) { | |
feed.link = href; | |
} | |
addConditionally(feed, "description", "subtitle", childs); | |
var updated = fetch("updated", childs); | |
if (updated) { | |
feed.updated = new Date(updated); | |
} | |
addConditionally(feed, "author", "email", childs, true); | |
feed.items = getElements("entry", childs).map(function(item) { | |
var entry = {}; | |
var children = item.children; | |
addConditionally(entry, "id", "id", children); | |
addConditionally(entry, "title", "title", children); | |
var href = getAttribute( | |
"href", | |
getOneElement("link", children), | |
); | |
if (href) { | |
entry.link = href; | |
} | |
var description = | |
fetch("summary", children) || fetch("content", children); | |
if (description) { | |
entry.description = description; | |
} | |
var pubDate = fetch("updated", children); | |
if (pubDate) { | |
entry.pubDate = new Date(pubDate); | |
} | |
return entry; | |
}); | |
} else { | |
var childs = getOneElement("channel", feedRoot.children) | |
.children; | |
feed.type = feedRoot.name.substr(0, 3); | |
feed.id = ""; | |
addConditionally(feed, "title", "title", childs); | |
addConditionally(feed, "link", "link", childs); | |
addConditionally(feed, "description", "description", childs); | |
var updated = fetch("lastBuildDate", childs); | |
if (updated) { | |
feed.updated = new Date(updated); | |
} | |
addConditionally( | |
feed, | |
"author", | |
"managingEditor", | |
childs, | |
true, | |
); | |
feed.items = getElements("item", feedRoot.children).map( | |
function(item) { | |
var entry = {}; | |
var children = item.children; | |
addConditionally(entry, "id", "guid", children); | |
addConditionally(entry, "title", "title", children); | |
addConditionally(entry, "link", "link", children); | |
addConditionally( | |
entry, | |
"description", | |
"description", | |
children, | |
); | |
var pubDate = fetch("pubDate", children); | |
if (pubDate) entry.pubDate = new Date(pubDate); | |
return entry; | |
}, | |
); | |
} | |
} | |
this.feed = feed; | |
this.handleCallback( | |
feedRoot ? null : Error("couldn't find root of feed"), | |
); | |
}; | |
return FeedHandler; | |
})(domhandler_1.default); | |
exports.FeedHandler = FeedHandler; | |
function getElements(what, where) { | |
return DomUtils.getElementsByTagName(what, where, true); | |
} | |
function getOneElement(what, where) { | |
return DomUtils.getElementsByTagName(what, where, true, 1)[0]; | |
} | |
function fetch(what, where, recurse) { | |
if (recurse === void 0) { | |
recurse = false; | |
} | |
return DomUtils.getText( | |
DomUtils.getElementsByTagName(what, where, recurse, 1), | |
).trim(); | |
} | |
function getAttribute(name, elem) { | |
if (!elem) { | |
return null; | |
} | |
var attribs = elem.attribs; | |
return attribs[name]; | |
} | |
function addConditionally(obj, prop, what, where, recurse) { | |
if (recurse === void 0) { | |
recurse = false; | |
} | |
var tmp = fetch(what, where, recurse); | |
// @ts-ignore | |
if (tmp) obj[prop] = tmp; | |
} | |
function isValidFeed(value) { | |
return value === "rss" || value === "feed" || value === "rdf:RDF"; | |
} | |
var defaultOptions = { xmlMode: true }; | |
/** | |
* Parse a feed. | |
* | |
* @param feed The feed that should be parsed, as a string. | |
* @param options Optionally, options for parsing. When using this option, you probably want to set `xmlMode` to `true`. | |
*/ | |
function parseFeed(feed, options) { | |
if (options === void 0) { | |
options = defaultOptions; | |
} | |
var handler = new FeedHandler(options); | |
new Parser_1.Parser(handler, options).end(feed); | |
return handler.feed; | |
} | |
exports.parseFeed = parseFeed; | |
}, | |
{ "./Parser": 6, "domhandler": 12, "domutils": 15 }, | |
], | |
5: [ | |
function(require, module, exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
/** | |
* Calls a specific handler function for all events that are encountered. | |
* | |
* @param func — The function to multiplex all events to. | |
*/ | |
var MultiplexHandler = /** @class */ (function() { | |
function MultiplexHandler(func) { | |
this._func = func; | |
} | |
/* Format: eventname: number of arguments */ | |
MultiplexHandler.prototype.onattribute = function(name, value) { | |
this._func("onattribute", name, value); | |
}; | |
MultiplexHandler.prototype.oncdatastart = function() { | |
this._func("oncdatastart"); | |
}; | |
MultiplexHandler.prototype.oncdataend = function() { | |
this._func("oncdataend"); | |
}; | |
MultiplexHandler.prototype.ontext = function(text) { | |
this._func("ontext", text); | |
}; | |
MultiplexHandler.prototype.onprocessinginstruction = function( | |
name, | |
value, | |
) { | |
this._func("onprocessinginstruction", name, value); | |
}; | |
MultiplexHandler.prototype.oncomment = function(comment) { | |
this._func("oncomment", comment); | |
}; | |
MultiplexHandler.prototype.oncommentend = function() { | |
this._func("oncommentend"); | |
}; | |
MultiplexHandler.prototype.onclosetag = function(name) { | |
this._func("onclosetag", name); | |
}; | |
MultiplexHandler.prototype.onopentag = function(name, attribs) { | |
this._func("onopentag", name, attribs); | |
}; | |
MultiplexHandler.prototype.onopentagname = function(name) { | |
this._func("onopentagname", name); | |
}; | |
MultiplexHandler.prototype.onerror = function(error) { | |
this._func("onerror", error); | |
}; | |
MultiplexHandler.prototype.onend = function() { | |
this._func("onend"); | |
}; | |
MultiplexHandler.prototype.onparserinit = function(parser) { | |
this._func("onparserinit", parser); | |
}; | |
MultiplexHandler.prototype.onreset = function() { | |
this._func("onreset"); | |
}; | |
return MultiplexHandler; | |
})(); | |
exports.default = MultiplexHandler; | |
}, | |
{}, | |
], | |
6: [ | |
function(require, module, exports) { | |
"use strict"; | |
var __extends = | |
(this && this.__extends) || | |
(function() { | |
var extendStatics = function(d, b) { | |
extendStatics = | |
Object.setPrototypeOf || | |
({ __proto__: [] } instanceof Array && | |
function(d, b) { | |
d.__proto__ = b; | |
}) || | |
function(d, b) { | |
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | |
}; | |
return extendStatics(d, b); | |
}; | |
return function(d, b) { | |
extendStatics(d, b); | |
function __() { | |
this.constructor = d; | |
} | |
d.prototype = | |
b === null | |
? Object.create(b) | |
: ((__.prototype = b.prototype), new __()); | |
}; | |
})(); | |
var __importDefault = | |
(this && this.__importDefault) || | |
function(mod) { | |
return mod && mod.__esModule ? mod : { default: mod }; | |
}; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var Tokenizer_1 = __importDefault(require("./Tokenizer")); | |
var events_1 = require("events"); | |
var formTags = new Set([ | |
"input", | |
"option", | |
"optgroup", | |
"select", | |
"button", | |
"datalist", | |
"textarea", | |
]); | |
var pTag = new Set(["p"]); | |
var openImpliesClose = { | |
tr: new Set(["tr", "th", "td"]), | |
th: new Set(["th"]), | |
td: new Set(["thead", "th", "td"]), | |
body: new Set(["head", "link", "script"]), | |
li: new Set(["li"]), | |
p: pTag, | |
h1: pTag, | |
h2: pTag, | |
h3: pTag, | |
h4: pTag, | |
h5: pTag, | |
h6: pTag, | |
select: formTags, | |
input: formTags, | |
output: formTags, | |
button: formTags, | |
datalist: formTags, | |
textarea: formTags, | |
option: new Set(["option"]), | |
optgroup: new Set(["optgroup", "option"]), | |
dd: new Set(["dt", "dd"]), | |
dt: new Set(["dt", "dd"]), | |
address: pTag, | |
article: pTag, | |
aside: pTag, | |
blockquote: pTag, | |
details: pTag, | |
div: pTag, | |
dl: pTag, | |
fieldset: pTag, | |
figcaption: pTag, | |
figure: pTag, | |
footer: pTag, | |
form: pTag, | |
header: pTag, | |
hr: pTag, | |
main: pTag, | |
nav: pTag, | |
ol: pTag, | |
pre: pTag, | |
section: pTag, | |
table: pTag, | |
ul: pTag, | |
rt: new Set(["rt", "rp"]), | |
rp: new Set(["rt", "rp"]), | |
tbody: new Set(["thead", "tbody"]), | |
tfoot: new Set(["thead", "tbody"]), | |
}; | |
var voidElements = new Set([ | |
"area", | |
"base", | |
"basefont", | |
"br", | |
"col", | |
"command", | |
"embed", | |
"frame", | |
"hr", | |
"img", | |
"input", | |
"isindex", | |
"keygen", | |
"link", | |
"meta", | |
"param", | |
"source", | |
"track", | |
"wbr", | |
]); | |
var foreignContextElements = new Set(["math", "svg"]); | |
var htmlIntegrationElements = new Set([ | |
"mi", | |
"mo", | |
"mn", | |
"ms", | |
"mtext", | |
"annotation-xml", | |
"foreignObject", | |
"desc", | |
"title", | |
]); | |
var reNameEnd = /\s|\//; | |
var Parser = /** @class */ (function(_super) { | |
__extends(Parser, _super); | |
function Parser(cbs, options) { | |
var _this = _super.call(this) || this; | |
_this._tagname = ""; | |
_this._attribname = ""; | |
_this._attribvalue = ""; | |
_this._attribs = null; | |
_this._stack = []; | |
_this._foreignContext = []; | |
_this.startIndex = 0; | |
_this.endIndex = null; | |
// Aliases for backwards compatibility | |
_this.parseChunk = Parser.prototype.write; | |
_this.done = Parser.prototype.end; | |
_this._options = options || {}; | |
_this._cbs = cbs || {}; | |
_this._tagname = ""; | |
_this._attribname = ""; | |
_this._attribvalue = ""; | |
_this._attribs = null; | |
_this._stack = []; | |
_this._foreignContext = []; | |
_this.startIndex = 0; | |
_this.endIndex = null; | |
_this._lowerCaseTagNames = | |
"lowerCaseTags" in _this._options | |
? !!_this._options.lowerCaseTags | |
: !_this._options.xmlMode; | |
_this._lowerCaseAttributeNames = | |
"lowerCaseAttributeNames" in _this._options | |
? !!_this._options.lowerCaseAttributeNames | |
: !_this._options.xmlMode; | |
_this._tokenizer = new (_this._options.Tokenizer || | |
Tokenizer_1.default)(_this._options, _this); | |
if (_this._cbs.onparserinit) _this._cbs.onparserinit(_this); | |
return _this; | |
} | |
Parser.prototype._updatePosition = function(initialOffset) { | |
if (this.endIndex === null) { | |
if (this._tokenizer._sectionStart <= initialOffset) { | |
this.startIndex = 0; | |
} else { | |
this.startIndex = | |
this._tokenizer._sectionStart - initialOffset; | |
} | |
} else this.startIndex = this.endIndex + 1; | |
this.endIndex = this._tokenizer.getAbsoluteIndex(); | |
}; | |
//Tokenizer event handlers | |
Parser.prototype.ontext = function(data) { | |
this._updatePosition(1); | |
// @ts-ignore | |
this.endIndex--; | |
if (this._cbs.ontext) this._cbs.ontext(data); | |
}; | |
Parser.prototype.onopentagname = function(name) { | |
if (this._lowerCaseTagNames) { | |
name = name.toLowerCase(); | |
} | |
this._tagname = name; | |
if (!this._options.xmlMode && name in openImpliesClose) { | |
for ( | |
var el = void 0; | |
// @ts-ignore | |
openImpliesClose[name].has( | |
(el = this._stack[this._stack.length - 1]), | |
); | |
this.onclosetag(el) | |
); | |
} | |
if (this._options.xmlMode || !voidElements.has(name)) { | |
this._stack.push(name); | |
if (foreignContextElements.has(name)) { | |
this._foreignContext.push(true); | |
} else if (htmlIntegrationElements.has(name)) { | |
this._foreignContext.push(false); | |
} | |
} | |
if (this._cbs.onopentagname) this._cbs.onopentagname(name); | |
if (this._cbs.onopentag) this._attribs = {}; | |
}; | |
Parser.prototype.onopentagend = function() { | |
this._updatePosition(1); | |
if (this._attribs) { | |
if (this._cbs.onopentag) { | |
this._cbs.onopentag(this._tagname, this._attribs); | |
} | |
this._attribs = null; | |
} | |
if ( | |
!this._options.xmlMode && | |
this._cbs.onclosetag && | |
voidElements.has(this._tagname) | |
) { | |
this._cbs.onclosetag(this._tagname); | |
} | |
this._tagname = ""; | |
}; | |
Parser.prototype.onclosetag = function(name) { | |
this._updatePosition(1); | |
if (this._lowerCaseTagNames) { | |
name = name.toLowerCase(); | |
} | |
if ( | |
foreignContextElements.has(name) || | |
htmlIntegrationElements.has(name) | |
) { | |
this._foreignContext.pop(); | |
} | |
if ( | |
this._stack.length && | |
(this._options.xmlMode || !voidElements.has(name)) | |
) { | |
var pos = this._stack.lastIndexOf(name); | |
if (pos !== -1) { | |
if (this._cbs.onclosetag) { | |
pos = this._stack.length - pos; | |
// @ts-ignore | |
while (pos--) this._cbs.onclosetag(this._stack.pop()); | |
} else this._stack.length = pos; | |
} else if (name === "p" && !this._options.xmlMode) { | |
this.onopentagname(name); | |
this._closeCurrentTag(); | |
} | |
} else if ( | |
!this._options.xmlMode && | |
(name === "br" || name === "p") | |
) { | |
this.onopentagname(name); | |
this._closeCurrentTag(); | |
} | |
}; | |
Parser.prototype.onselfclosingtag = function() { | |
if ( | |
this._options.xmlMode || | |
this._options.recognizeSelfClosing || | |
this._foreignContext[this._foreignContext.length - 1] | |
) { | |
this._closeCurrentTag(); | |
} else { | |
this.onopentagend(); | |
} | |
}; | |
Parser.prototype._closeCurrentTag = function() { | |
var name = this._tagname; | |
this.onopentagend(); | |
//self-closing tags will be on the top of the stack | |
//(cheaper check than in onclosetag) | |
if (this._stack[this._stack.length - 1] === name) { | |
if (this._cbs.onclosetag) { | |
this._cbs.onclosetag(name); | |
} | |
this._stack.pop(); | |
} | |
}; | |
Parser.prototype.onattribname = function(name) { | |
if (this._lowerCaseAttributeNames) { | |
name = name.toLowerCase(); | |
} | |
this._attribname = name; | |
}; | |
Parser.prototype.onattribdata = function(value) { | |
this._attribvalue += value; | |
}; | |
Parser.prototype.onattribend = function() { | |
if (this._cbs.onattribute) | |
this._cbs.onattribute(this._attribname, this._attribvalue); | |
if ( | |
this._attribs && | |
!Object.prototype.hasOwnProperty.call( | |
this._attribs, | |
this._attribname, | |
) | |
) { | |
this._attribs[this._attribname] = this._attribvalue; | |
} | |
this._attribname = ""; | |
this._attribvalue = ""; | |
}; | |
Parser.prototype._getInstructionName = function(value) { | |
var idx = value.search(reNameEnd); | |
var name = idx < 0 ? value : value.substr(0, idx); | |
if (this._lowerCaseTagNames) { | |
name = name.toLowerCase(); | |
} | |
return name; | |
}; | |
Parser.prototype.ondeclaration = function(value) { | |
if (this._cbs.onprocessinginstruction) { | |
var name_1 = this._getInstructionName(value); | |
this._cbs.onprocessinginstruction("!" + name_1, "!" + value); | |
} | |
}; | |
Parser.prototype.onprocessinginstruction = function(value) { | |
if (this._cbs.onprocessinginstruction) { | |
var name_2 = this._getInstructionName(value); | |
this._cbs.onprocessinginstruction("?" + name_2, "?" + value); | |
} | |
}; | |
Parser.prototype.oncomment = function(value) { | |
this._updatePosition(4); | |
if (this._cbs.oncomment) this._cbs.oncomment(value); | |
if (this._cbs.oncommentend) this._cbs.oncommentend(); | |
}; | |
Parser.prototype.oncdata = function(value) { | |
this._updatePosition(1); | |
if (this._options.xmlMode || this._options.recognizeCDATA) { | |
if (this._cbs.oncdatastart) this._cbs.oncdatastart(); | |
if (this._cbs.ontext) this._cbs.ontext(value); | |
if (this._cbs.oncdataend) this._cbs.oncdataend(); | |
} else { | |
this.oncomment("[CDATA[" + value + "]]"); | |
} | |
}; | |
Parser.prototype.onerror = function(err) { | |
if (this._cbs.onerror) this._cbs.onerror(err); | |
}; | |
Parser.prototype.onend = function() { | |
if (this._cbs.onclosetag) { | |
for ( | |
var i = this._stack.length; | |
i > 0; | |
this._cbs.onclosetag(this._stack[--i]) | |
); | |
} | |
if (this._cbs.onend) this._cbs.onend(); | |
}; | |
//Resets the parser to a blank state, ready to parse a new HTML document | |
Parser.prototype.reset = function() { | |
if (this._cbs.onreset) this._cbs.onreset(); | |
this._tokenizer.reset(); | |
this._tagname = ""; | |
this._attribname = ""; | |
this._attribs = null; | |
this._stack = []; | |
if (this._cbs.onparserinit) this._cbs.onparserinit(this); | |
}; | |
//Parses a complete HTML document and pushes it to the handler | |
Parser.prototype.parseComplete = function(data) { | |
this.reset(); | |
this.end(data); | |
}; | |
Parser.prototype.write = function(chunk) { | |
this._tokenizer.write(chunk); | |
}; | |
Parser.prototype.end = function(chunk) { | |
this._tokenizer.end(chunk); | |
}; | |
Parser.prototype.pause = function() { | |
this._tokenizer.pause(); | |
}; | |
Parser.prototype.resume = function() { | |
this._tokenizer.resume(); | |
}; | |
return Parser; | |
})(events_1.EventEmitter); | |
exports.Parser = Parser; | |
}, | |
{ "./Tokenizer": 7, "events": 2 }, | |
], | |
7: [ | |
function(require, module, exports) { | |
"use strict"; | |
var __importDefault = | |
(this && this.__importDefault) || | |
function(mod) { | |
return mod && mod.__esModule ? mod : { default: mod }; | |
}; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var decode_codepoint_1 = __importDefault( | |
require("entities/lib/decode_codepoint"), | |
); | |
var entities_json_1 = __importDefault( | |
require("entities/lib/maps/entities.json"), | |
); | |
var legacy_json_1 = __importDefault( | |
require("entities/lib/maps/legacy.json"), | |
); | |
var xml_json_1 = __importDefault( | |
require("entities/lib/maps/xml.json"), | |
); | |
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(t, c) { | |
if (c === lower) { | |
t._state = SUCCESS; | |
} else { | |
t._state = FAILURE; | |
t._index--; | |
} | |
}; | |
} else { | |
return function(t, c) { | |
if (c === lower || c === upper) { | |
t._state = SUCCESS; | |
} else { | |
t._state = FAILURE; | |
t._index--; | |
} | |
}; | |
} | |
} | |
function consumeSpecialNameChar(upper, NEXT_STATE) { | |
var lower = upper.toLowerCase(); | |
return function(t, c) { | |
if (c === lower || c === upper) { | |
t._state = NEXT_STATE; | |
} else { | |
t._state = 3 /* InTagName */; | |
t._index--; //consume the token again | |
} | |
}; | |
} | |
var stateBeforeCdata1 = ifElseState( | |
"C", | |
23 /* BeforeCdata2 */, | |
16 /* InDeclaration */, | |
); | |
var stateBeforeCdata2 = ifElseState( | |
"D", | |
24 /* BeforeCdata3 */, | |
16 /* InDeclaration */, | |
); | |
var stateBeforeCdata3 = ifElseState( | |
"A", | |
25 /* BeforeCdata4 */, | |
16 /* InDeclaration */, | |
); | |
var stateBeforeCdata4 = ifElseState( | |
"T", | |
26 /* BeforeCdata5 */, | |
16 /* InDeclaration */, | |
); | |
var stateBeforeCdata5 = ifElseState( | |
"A", | |
27 /* BeforeCdata6 */, | |
16 /* InDeclaration */, | |
); | |
var stateBeforeScript1 = consumeSpecialNameChar( | |
"R", | |
34 /* BeforeScript2 */, | |
); | |
var stateBeforeScript2 = consumeSpecialNameChar( | |
"I", | |
35 /* BeforeScript3 */, | |
); | |
var stateBeforeScript3 = consumeSpecialNameChar( | |
"P", | |
36 /* BeforeScript4 */, | |
); | |
var stateBeforeScript4 = consumeSpecialNameChar( | |
"T", | |
37 /* BeforeScript5 */, | |
); | |
var stateAfterScript1 = ifElseState( | |
"R", | |
39 /* AfterScript2 */, | |
1 /* Text */, | |
); | |
var stateAfterScript2 = ifElseState( | |
"I", | |
40 /* AfterScript3 */, | |
1 /* Text */, | |
); | |
var stateAfterScript3 = ifElseState( | |
"P", | |
41 /* AfterScript4 */, | |
1 /* Text */, | |
); | |
var stateAfterScript4 = ifElseState( | |
"T", | |
42 /* AfterScript5 */, | |
1 /* Text */, | |
); | |
var stateBeforeStyle1 = consumeSpecialNameChar( | |
"Y", | |
44 /* BeforeStyle2 */, | |
); | |
var stateBeforeStyle2 = consumeSpecialNameChar( | |
"L", | |
45 /* BeforeStyle3 */, | |
); | |
var stateBeforeStyle3 = consumeSpecialNameChar( | |
"E", | |
46 /* BeforeStyle4 */, | |
); | |
var stateAfterStyle1 = ifElseState( | |
"Y", | |
48 /* AfterStyle2 */, | |
1 /* Text */, | |
); | |
var stateAfterStyle2 = ifElseState( | |
"L", | |
49 /* AfterStyle3 */, | |
1 /* Text */, | |
); | |
var stateAfterStyle3 = ifElseState( | |
"E", | |
50 /* AfterStyle4 */, | |
1 /* Text */, | |
); | |
var stateBeforeEntity = ifElseState( | |
"#", | |
52 /* BeforeNumericEntity */, | |
53 /* InNamedEntity */, | |
); | |
var stateBeforeNumericEntity = ifElseState( | |
"X", | |
55 /* InHexEntity */, | |
54 /* InNumericEntity */, | |
); | |
var Tokenizer = /** @class */ (function() { | |
function Tokenizer(options, cbs) { | |
/** The current state the tokenizer is in. */ | |
this._state = 1 /* Text */; | |
/** The read buffer. */ | |
this._buffer = ""; | |
/** The beginning of the section that is currently being read. */ | |
this._sectionStart = 0; | |
/** The index within the buffer that we are currently looking at. */ | |
this._index = 0; | |
/** | |
* Data that has already been processed will be removed from the buffer occasionally. | |
* `_bufferOffset` keeps track of how many characters have been removed, to make sure position information is accurate. | |
*/ | |
this._bufferOffset = 0; | |
/** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */ | |
this._baseState = 1 /* Text */; | |
/** For special parsing behavior inside of script and style tags. */ | |
this._special = 1 /* None */; | |
/** Indicates whether the tokenizer has been paused. */ | |
this._running = true; | |
/** Indicates whether the tokenizer has finished running / `.end` has been called. */ | |
this._ended = false; | |
this._cbs = cbs; | |
this._xmlMode = !!(options && options.xmlMode); | |
this._decodeEntities = !!(options && options.decodeEntities); | |
} | |
Tokenizer.prototype.reset = function() { | |
this._state = 1 /* Text */; | |
this._buffer = ""; | |
this._sectionStart = 0; | |
this._index = 0; | |
this._bufferOffset = 0; | |
this._baseState = 1 /* Text */; | |
this._special = 1 /* None */; | |
this._running = true; | |
this._ended = false; | |
}; | |
Tokenizer.prototype._stateText = function(c) { | |
if (c === "<") { | |
if (this._index > this._sectionStart) { | |
this._cbs.ontext(this._getSection()); | |
} | |
this._state = 2 /* BeforeTagName */; | |
this._sectionStart = this._index; | |
} else if ( | |
this._decodeEntities && | |
this._special === 1 /* None */ && | |
c === "&" | |
) { | |
if (this._index > this._sectionStart) { | |
this._cbs.ontext(this._getSection()); | |
} | |
this._baseState = 1 /* Text */; | |
this._state = 51 /* BeforeEntity */; | |
this._sectionStart = this._index; | |
} | |
}; | |
Tokenizer.prototype._stateBeforeTagName = function(c) { | |
if (c === "/") { | |
this._state = 5 /* BeforeClosingTagName */; | |
} else if (c === "<") { | |
this._cbs.ontext(this._getSection()); | |
this._sectionStart = this._index; | |
} else if ( | |
c === ">" || | |
this._special !== 1 /* None */ || | |
whitespace(c) | |
) { | |
this._state = 1 /* Text */; | |
} else if (c === "!") { | |
this._state = 15 /* BeforeDeclaration */; | |
this._sectionStart = this._index + 1; | |
} else if (c === "?") { | |
this._state = 17 /* InProcessingInstruction */; | |
this._sectionStart = this._index + 1; | |
} else { | |
this._state = | |
!this._xmlMode && (c === "s" || c === "S") | |
? 31 /* BeforeSpecial */ | |
: 3 /* InTagName */; | |
this._sectionStart = this._index; | |
} | |
}; | |
Tokenizer.prototype._stateInTagName = function(c) { | |
if (c === "/" || c === ">" || whitespace(c)) { | |
this._emitToken("onopentagname"); | |
this._state = 8 /* BeforeAttributeName */; | |
this._index--; | |
} | |
}; | |
Tokenizer.prototype._stateBeforeCloseingTagName = function(c) { | |
if (whitespace(c)) { | |
// ignore | |
} else if (c === ">") { | |
this._state = 1 /* Text */; | |
} else if (this._special !== 1 /* None */) { | |
if (c === "s" || c === "S") { | |
this._state = 32 /* BeforeSpecialEnd */; | |
} else { | |
this._state = 1 /* Text */; | |
this._index--; | |
} | |
} else { | |
this._state = 6 /* InClosingTagName */; | |
this._sectionStart = this._index; | |
} | |
}; | |
Tokenizer.prototype._stateInCloseingTagName = function(c) { | |
if (c === ">" || whitespace(c)) { | |
this._emitToken("onclosetag"); | |
this._state = 7 /* AfterClosingTagName */; | |
this._index--; | |
} | |
}; | |
Tokenizer.prototype._stateAfterCloseingTagName = function(c) { | |
//skip everything until ">" | |
if (c === ">") { | |
this._state = 1 /* Text */; | |
this._sectionStart = this._index + 1; | |
} | |
}; | |
Tokenizer.prototype._stateBeforeAttributeName = function(c) { | |
if (c === ">") { | |
this._cbs.onopentagend(); | |
this._state = 1 /* Text */; | |
this._sectionStart = this._index + 1; | |
} else if (c === "/") { | |
this._state = 4 /* InSelfClosingTag */; | |
} else if (!whitespace(c)) { | |
this._state = 9 /* InAttributeName */; | |
this._sectionStart = this._index; | |
} | |
}; | |
Tokenizer.prototype._stateInSelfClosingTag = function(c) { | |
if (c === ">") { | |
this._cbs.onselfclosingtag(); | |
this._state = 1 /* Text */; | |
this._sectionStart = this._index + 1; | |
} else if (!whitespace(c)) { | |
this._state = 8 /* BeforeAttributeName */; | |
this._index--; | |
} | |
}; | |
Tokenizer.prototype._stateInAttributeName = function(c) { | |
if (c === "=" || c === "/" || c === ">" || whitespace(c)) { | |
this._cbs.onattribname(this._getSection()); | |
this._sectionStart = -1; | |
this._state = 10 /* AfterAttributeName */; | |
this._index--; | |
} | |
}; | |
Tokenizer.prototype._stateAfterAttributeName = function(c) { | |
if (c === "=") { | |
this._state = 11 /* BeforeAttributeValue */; | |
} else if (c === "/" || c === ">") { | |
this._cbs.onattribend(); | |
this._state = 8 /* BeforeAttributeName */; | |
this._index--; | |
} else if (!whitespace(c)) { | |
this._cbs.onattribend(); | |
this._state = 9 /* InAttributeName */; | |
this._sectionStart = this._index; | |
} | |
}; | |
Tokenizer.prototype._stateBeforeAttributeValue = function(c) { | |
if (c === '"') { | |
this._state = 12 /* InAttributeValueDq */; | |
this._sectionStart = this._index + 1; | |
} else if (c === "'") { | |
this._state = 13 /* InAttributeValueSq */; | |
this._sectionStart = this._index + 1; | |
} else if (!whitespace(c)) { | |
this._state = 14 /* InAttributeValueNq */; | |
this._sectionStart = this._index; | |
this._index--; //reconsume token | |
} | |
}; | |
Tokenizer.prototype._stateInAttributeValueDoubleQuotes = function( | |
c, | |
) { | |
if (c === '"') { | |
this._emitToken("onattribdata"); | |
this._cbs.onattribend(); | |
this._state = 8 /* BeforeAttributeName */; | |
} else if (this._decodeEntities && c === "&") { | |
this._emitToken("onattribdata"); | |
this._baseState = this._state; | |
this._state = 51 /* BeforeEntity */; | |
this._sectionStart = this._index; | |
} | |
}; | |
Tokenizer.prototype._stateInAttributeValueSingleQuotes = function( | |
c, | |
) { | |
if (c === "'") { | |
this._emitToken("onattribdata"); | |
this._cbs.onattribend(); | |
this._state = 8 /* BeforeAttributeName */; | |
} else if (this._decodeEntities && c === "&") { | |
this._emitToken("onattribdata"); | |
this._baseState = this._state; | |
this._state = 51 /* BeforeEntity */; | |
this._sectionStart = this._index; | |
} | |
}; | |
Tokenizer.prototype._stateInAttributeValueNoQuotes = function(c) { | |
if (whitespace(c) || c === ">") { | |
this._emitToken("onattribdata"); | |
this._cbs.onattribend(); | |
this._state = 8 /* BeforeAttributeName */; | |
this._index--; | |
} else if (this._decodeEntities && c === "&") { | |
this._emitToken("onattribdata"); | |
this._baseState = this._state; | |
this._state = 51 /* BeforeEntity */; | |
this._sectionStart = this._index; | |
} | |
}; | |
Tokenizer.prototype._stateBeforeDeclaration = function(c) { | |
this._state = | |
c === "[" | |
? 22 /* BeforeCdata1 */ | |
: c === "-" | |
? 18 /* BeforeComment */ | |
: 16 /* InDeclaration */; | |
}; | |
Tokenizer.prototype._stateInDeclaration = function(c) { | |
if (c === ">") { | |
this._cbs.ondeclaration(this._getSection()); | |
this._state = 1 /* Text */; | |
this._sectionStart = this._index + 1; | |
} | |
}; | |
Tokenizer.prototype._stateInProcessingInstruction = function(c) { | |
if (c === ">") { | |
this._cbs.onprocessinginstruction(this._getSection()); | |
this._state = 1 /* Text */; | |
this._sectionStart = this._index + 1; | |
} | |
}; | |
Tokenizer.prototype._stateBeforeComment = function(c) { | |
if (c === "-") { | |
this._state = 19 /* InComment */; | |
this._sectionStart = this._index + 1; | |
} else { | |
this._state = 16 /* InDeclaration */; | |
} | |
}; | |
Tokenizer.prototype._stateInComment = function(c) { | |
if (c === "-") this._state = 20 /* AfterComment1 */; | |
}; | |
Tokenizer.prototype._stateAfterComment1 = function(c) { | |
if (c === "-") { | |
this._state = 21 /* AfterComment2 */; | |
} else { | |
this._state = 19 /* InComment */; | |
} | |
}; | |
Tokenizer.prototype._stateAfterComment2 = function(c) { | |
if (c === ">") { | |
//remove 2 trailing chars | |
this._cbs.oncomment( | |
this._buffer.substring(this._sectionStart, this._index - 2), | |
); | |
this._state = 1 /* Text */; | |
this._sectionStart = this._index + 1; | |
} else if (c !== "-") { | |
this._state = 19 /* InComment */; | |
} | |
// else: stay in AFTER_COMMENT_2 (`--->`) | |
}; | |
Tokenizer.prototype._stateBeforeCdata6 = function(c) { | |
if (c === "[") { | |
this._state = 28 /* InCdata */; | |
this._sectionStart = this._index + 1; | |
} else { | |
this._state = 16 /* InDeclaration */; | |
this._index--; | |
} | |
}; | |
Tokenizer.prototype._stateInCdata = function(c) { | |
if (c === "]") this._state = 29 /* AfterCdata1 */; | |
}; | |
Tokenizer.prototype._stateAfterCdata1 = function(c) { | |
if (c === "]") this._state = 30 /* AfterCdata2 */; | |
else this._state = 28 /* InCdata */; | |
}; | |
Tokenizer.prototype._stateAfterCdata2 = function(c) { | |
if (c === ">") { | |
//remove 2 trailing chars | |
this._cbs.oncdata( | |
this._buffer.substring(this._sectionStart, this._index - 2), | |
); | |
this._state = 1 /* Text */; | |
this._sectionStart = this._index + 1; | |
} else if (c !== "]") { | |
this._state = 28 /* InCdata */; | |
} | |
//else: stay in AFTER_CDATA_2 (`]]]>`) | |
}; | |
Tokenizer.prototype._stateBeforeSpecial = function(c) { | |
if (c === "c" || c === "C") { | |
this._state = 33 /* BeforeScript1 */; | |
} else if (c === "t" || c === "T") { | |
this._state = 43 /* BeforeStyle1 */; | |
} else { | |
this._state = 3 /* InTagName */; | |
this._index--; //consume the token again | |
} | |
}; | |
Tokenizer.prototype._stateBeforeSpecialEnd = function(c) { | |
if ( | |
this._special === 2 /* Script */ && | |
(c === "c" || c === "C") | |
) { | |
this._state = 38 /* AfterScript1 */; | |
} else if ( | |
this._special === 3 /* Style */ && | |
(c === "t" || c === "T") | |
) { | |
this._state = 47 /* AfterStyle1 */; | |
} else this._state = 1 /* Text */; | |
}; | |
Tokenizer.prototype._stateBeforeScript5 = function(c) { | |
if (c === "/" || c === ">" || whitespace(c)) { | |
this._special = 2 /* Script */; | |
} | |
this._state = 3 /* InTagName */; | |
this._index--; //consume the token again | |
}; | |
Tokenizer.prototype._stateAfterScript5 = function(c) { | |
if (c === ">" || whitespace(c)) { | |
this._special = 1 /* None */; | |
this._state = 6 /* InClosingTagName */; | |
this._sectionStart = this._index - 6; | |
this._index--; //reconsume the token | |
} else this._state = 1 /* Text */; | |
}; | |
Tokenizer.prototype._stateBeforeStyle4 = function(c) { | |
if (c === "/" || c === ">" || whitespace(c)) { | |
this._special = 3 /* Style */; | |
} | |
this._state = 3 /* InTagName */; | |
this._index--; //consume the token again | |
}; | |
Tokenizer.prototype._stateAfterStyle4 = function(c) { | |
if (c === ">" || whitespace(c)) { | |
this._special = 1 /* None */; | |
this._state = 6 /* InClosingTagName */; | |
this._sectionStart = this._index - 5; | |
this._index--; //reconsume the token | |
} else this._state = 1 /* Text */; | |
}; | |
//for entities terminated with a semicolon | |
Tokenizer.prototype._parseNamedEntityStrict = function() { | |
//offset = 1 | |
if (this._sectionStart + 1 < this._index) { | |
var entity = this._buffer.substring( | |
this._sectionStart + 1, | |
this._index, | |
), | |
map = this._xmlMode | |
? xml_json_1.default | |
: entities_json_1.default; | |
if (Object.prototype.hasOwnProperty.call(map, entity)) { | |
// @ts-ignore | |
this._emitPartial(map[entity]); | |
this._sectionStart = this._index + 1; | |
} | |
} | |
}; | |
//parses legacy entities (without trailing semicolon) | |
Tokenizer.prototype._parseLegacyEntity = function() { | |
var start = this._sectionStart + 1; | |
var limit = this._index - start; | |
if (limit > 6) limit = 6; // The max length of legacy entities is 6 | |
while (limit >= 2) { | |
// The min length of legacy entities is 2 | |
var entity = this._buffer.substr(start, limit); | |
if ( | |
Object.prototype.hasOwnProperty.call( | |
legacy_json_1.default, | |
entity, | |
) | |
) { | |
// @ts-ignore | |
this._emitPartial(legacy_json_1.default[entity]); | |
this._sectionStart += limit + 1; | |
return; | |
} else { | |
limit--; | |
} | |
} | |
}; | |
Tokenizer.prototype._stateInNamedEntity = function(c) { | |
if (c === ";") { | |
this._parseNamedEntityStrict(); | |
if (this._sectionStart + 1 < this._index && !this._xmlMode) { | |
this._parseLegacyEntity(); | |
} | |
this._state = this._baseState; | |
} else if ( | |
(c < "a" || c > "z") && | |
(c < "A" || c > "Z") && | |
(c < "0" || c > "9") | |
) { | |
if (this._xmlMode || this._sectionStart + 1 === this._index) { | |
// ignore | |
} else if (this._baseState !== 1 /* Text */) { | |
if (c !== "=") { | |
this._parseNamedEntityStrict(); | |
} | |
} else { | |
this._parseLegacyEntity(); | |
} | |
this._state = this._baseState; | |
this._index--; | |
} | |
}; | |
Tokenizer.prototype._decodeNumericEntity = function(offset, base) { | |
var sectionStart = this._sectionStart + offset; | |
if (sectionStart !== this._index) { | |
//parse entity | |
var entity = this._buffer.substring(sectionStart, this._index); | |
var parsed = parseInt(entity, base); | |
this._emitPartial(decode_codepoint_1.default(parsed)); | |
this._sectionStart = this._index; | |
} else { | |
this._sectionStart--; | |
} | |
this._state = this._baseState; | |
}; | |
Tokenizer.prototype._stateInNumericEntity = function(c) { | |
if (c === ";") { | |
this._decodeNumericEntity(2, 10); | |
this._sectionStart++; | |
} else if (c < "0" || c > "9") { | |
if (!this._xmlMode) { | |
this._decodeNumericEntity(2, 10); | |
} else { | |
this._state = this._baseState; | |
} | |
this._index--; | |
} | |
}; | |
Tokenizer.prototype._stateInHexEntity = function(c) { | |
if (c === ";") { | |
this._decodeNumericEntity(3, 16); | |
this._sectionStart++; | |
} else if ( | |
(c < "a" || c > "f") && | |
(c < "A" || c > "F") && | |
(c < "0" || c > "9") | |
) { | |
if (!this._xmlMode) { | |
this._decodeNumericEntity(3, 16); | |
} else { | |
this._state = this._baseState; | |
} | |
this._index--; | |
} | |
}; | |
Tokenizer.prototype._cleanup = function() { | |
if (this._sectionStart < 0) { | |
this._buffer = ""; | |
this._bufferOffset += this._index; | |
this._index = 0; | |
} else if (this._running) { | |
if (this._state === 1 /* Text */) { | |
if (this._sectionStart !== this._index) { | |
this._cbs.ontext(this._buffer.substr(this._sectionStart)); | |
} | |
this._buffer = ""; | |
this._bufferOffset += this._index; | |
this._index = 0; | |
} else if (this._sectionStart === this._index) { | |
//the section just started | |
this._buffer = ""; | |
this._bufferOffset += this._index; | |
this._index = 0; | |
} else { | |
//remove everything unnecessary | |
this._buffer = this._buffer.substr(this._sectionStart); | |
this._index -= this._sectionStart; | |
this._bufferOffset += this._sectionStart; | |
} | |
this._sectionStart = 0; | |
} | |
}; | |
//TODO make events conditional | |
Tokenizer.prototype.write = function(chunk) { | |
if (this._ended) this._cbs.onerror(Error(".write() after done!")); | |
this._buffer += chunk; | |
this._parse(); | |
}; | |
// Iterates through the buffer, calling the function corresponding to the current state. | |
// States that are more likely to be hit are higher up, as a performance improvement. | |
Tokenizer.prototype._parse = function() { | |
while (this._index < this._buffer.length && this._running) { | |
var c = this._buffer.charAt(this._index); | |
if (this._state === 1 /* Text */) { | |
this._stateText(c); | |
} else if (this._state === 12 /* InAttributeValueDq */) { | |
this._stateInAttributeValueDoubleQuotes(c); | |
} else if (this._state === 9 /* InAttributeName */) { | |
this._stateInAttributeName(c); | |
} else if (this._state === 19 /* InComment */) { | |
this._stateInComment(c); | |
} else if (this._state === 8 /* BeforeAttributeName */) { | |
this._stateBeforeAttributeName(c); | |
} else if (this._state === 3 /* InTagName */) { | |
this._stateInTagName(c); | |
} else if (this._state === 6 /* InClosingTagName */) { | |
this._stateInCloseingTagName(c); | |
} else if (this._state === 2 /* BeforeTagName */) { | |
this._stateBeforeTagName(c); | |
} else if (this._state === 10 /* AfterAttributeName */) { | |
this._stateAfterAttributeName(c); | |
} else if (this._state === 13 /* InAttributeValueSq */) { | |
this._stateInAttributeValueSingleQuotes(c); | |
} else if (this._state === 11 /* BeforeAttributeValue */) { | |
this._stateBeforeAttributeValue(c); | |
} else if (this._state === 5 /* BeforeClosingTagName */) { | |
this._stateBeforeCloseingTagName(c); | |
} else if (this._state === 7 /* AfterClosingTagName */) { | |
this._stateAfterCloseingTagName(c); | |
} else if (this._state === 31 /* BeforeSpecial */) { | |
this._stateBeforeSpecial(c); | |
} else if (this._state === 20 /* AfterComment1 */) { | |
this._stateAfterComment1(c); | |
} else if (this._state === 14 /* InAttributeValueNq */) { | |
this._stateInAttributeValueNoQuotes(c); | |
} else if (this._state === 4 /* InSelfClosingTag */) { | |
this._stateInSelfClosingTag(c); | |
} else if (this._state === 16 /* InDeclaration */) { | |
this._stateInDeclaration(c); | |
} else if (this._state === 15 /* BeforeDeclaration */) { | |
this._stateBeforeDeclaration(c); | |
} else if (this._state === 21 /* AfterComment2 */) { | |
this._stateAfterComment2(c); | |
} else if (this._state === 18 /* BeforeComment */) { | |
this._stateBeforeComment(c); | |
} else if (this._state === 32 /* BeforeSpecialEnd */) { | |
this._stateBeforeSpecialEnd(c); | |
} else if (this._state === 38 /* AfterScript1 */) { | |
stateAfterScript1(this, c); | |
} else if (this._state === 39 /* AfterScript2 */) { | |
stateAfterScript2(this, c); | |
} else if (this._state === 40 /* AfterScript3 */) { | |
stateAfterScript3(this, c); | |
} else if (this._state === 33 /* BeforeScript1 */) { | |
stateBeforeScript1(this, c); | |
} else if (this._state === 34 /* BeforeScript2 */) { | |
stateBeforeScript2(this, c); | |
} else if (this._state === 35 /* BeforeScript3 */) { | |
stateBeforeScript3(this, c); | |
} else if (this._state === 36 /* BeforeScript4 */) { | |
stateBeforeScript4(this, c); | |
} else if (this._state === 37 /* BeforeScript5 */) { | |
this._stateBeforeScript5(c); | |
} else if (this._state === 41 /* AfterScript4 */) { | |
stateAfterScript4(this, c); | |
} else if (this._state === 42 /* AfterScript5 */) { | |
this._stateAfterScript5(c); | |
} else if (this._state === 43 /* BeforeStyle1 */) { | |
stateBeforeStyle1(this, c); | |
} else if (this._state === 28 /* InCdata */) { | |
this._stateInCdata(c); | |
} else if (this._state === 44 /* BeforeStyle2 */) { | |
stateBeforeStyle2(this, c); | |
} else if (this._state === 45 /* BeforeStyle3 */) { | |
stateBeforeStyle3(this, c); | |
} else if (this._state === 46 /* BeforeStyle4 */) { | |
this._stateBeforeStyle4(c); | |
} else if (this._state === 47 /* AfterStyle1 */) { | |
stateAfterStyle1(this, c); | |
} else if (this._state === 48 /* AfterStyle2 */) { | |
stateAfterStyle2(this, c); | |
} else if (this._state === 49 /* AfterStyle3 */) { | |
stateAfterStyle3(this, c); | |
} else if (this._state === 50 /* AfterStyle4 */) { | |
this._stateAfterStyle4(c); | |
} else if (this._state === 17 /* InProcessingInstruction */) { | |
this._stateInProcessingInstruction(c); | |
} else if (this._state === 53 /* InNamedEntity */) { | |
this._stateInNamedEntity(c); | |
} else if (this._state === 22 /* BeforeCdata1 */) { | |
stateBeforeCdata1(this, c); | |
} else if (this._state === 51 /* BeforeEntity */) { | |
stateBeforeEntity(this, c); | |
} else if (this._state === 23 /* BeforeCdata2 */) { | |
stateBeforeCdata2(this, c); | |
} else if (this._state === 24 /* BeforeCdata3 */) { | |
stateBeforeCdata3(this, c); | |
} else if (this._state === 29 /* AfterCdata1 */) { | |
this._stateAfterCdata1(c); | |
} else if (this._state === 30 /* AfterCdata2 */) { | |
this._stateAfterCdata2(c); | |
} else if (this._state === 25 /* BeforeCdata4 */) { | |
stateBeforeCdata4(this, c); | |
} else if (this._state === 26 /* BeforeCdata5 */) { | |
stateBeforeCdata5(this, c); | |
} else if (this._state === 27 /* BeforeCdata6 */) { | |
this._stateBeforeCdata6(c); | |
} else if (this._state === 55 /* InHexEntity */) { | |
this._stateInHexEntity(c); | |
} else if (this._state === 54 /* InNumericEntity */) { | |
this._stateInNumericEntity(c); | |
} else if (this._state === 52 /* BeforeNumericEntity */) { | |
stateBeforeNumericEntity(this, c); | |
} else { | |
this._cbs.onerror(Error("unknown _state"), this._state); | |
} | |
this._index++; | |
} | |
this._cleanup(); | |
}; | |
Tokenizer.prototype.pause = function() { | |
this._running = false; | |
}; | |
Tokenizer.prototype.resume = function() { | |
this._running = true; | |
if (this._index < this._buffer.length) { | |
this._parse(); | |
} | |
if (this._ended) { | |
this._finish(); | |
} | |
}; | |
Tokenizer.prototype.end = function(chunk) { | |
if (this._ended) this._cbs.onerror(Error(".end() after done!")); | |
if (chunk) this.write(chunk); | |
this._ended = true; | |
if (this._running) this._finish(); | |
}; | |
Tokenizer.prototype._finish = function() { | |
//if there is remaining data, emit it in a reasonable way | |
if (this._sectionStart < this._index) { | |
this._handleTrailingData(); | |
} | |
this._cbs.onend(); | |
}; | |
Tokenizer.prototype._handleTrailingData = function() { | |
var data = this._buffer.substr(this._sectionStart); | |
if ( | |
this._state === 28 /* InCdata */ || | |
this._state === 29 /* AfterCdata1 */ || | |
this._state === 30 /* AfterCdata2 */ | |
) { | |
this._cbs.oncdata(data); | |
} else if ( | |
this._state === 19 /* InComment */ || | |
this._state === 20 /* AfterComment1 */ || | |
this._state === 21 /* AfterComment2 */ | |
) { | |
this._cbs.oncomment(data); | |
} else if ( | |
this._state === 53 /* InNamedEntity */ && | |
!this._xmlMode | |
) { | |
this._parseLegacyEntity(); | |
if (this._sectionStart < this._index) { | |
this._state = this._baseState; | |
this._handleTrailingData(); | |
} | |
} else if ( | |
this._state === 54 /* InNumericEntity */ && | |
!this._xmlMode | |
) { | |
this._decodeNumericEntity(2, 10); | |
if (this._sectionStart < this._index) { | |
this._state = this._baseState; | |
this._handleTrailingData(); | |
} | |
} else if ( | |
this._state === 55 /* InHexEntity */ && | |
!this._xmlMode | |
) { | |
this._decodeNumericEntity(3, 16); | |
if (this._sectionStart < this._index) { | |
this._state = this._baseState; | |
this._handleTrailingData(); | |
} | |
} else if ( | |
this._state !== 3 /* InTagName */ && | |
this._state !== 8 /* BeforeAttributeName */ && | |
this._state !== 11 /* BeforeAttributeValue */ && | |
this._state !== 10 /* AfterAttributeName */ && | |
this._state !== 9 /* InAttributeName */ && | |
this._state !== 13 /* InAttributeValueSq */ && | |
this._state !== 12 /* InAttributeValueDq */ && | |
this._state !== 14 /* InAttributeValueNq */ && | |
this._state !== 6 /* InClosingTagName */ | |
) { | |
this._cbs.ontext(data); | |
} | |
//else, ignore remaining data | |
//TODO add a way to remove current tag | |
}; | |
Tokenizer.prototype.getAbsoluteIndex = function() { | |
return this._bufferOffset + this._index; | |
}; | |
Tokenizer.prototype._getSection = function() { | |
return this._buffer.substring(this._sectionStart, this._index); | |
}; | |
Tokenizer.prototype._emitToken = function(name) { | |
this._cbs[name](this._getSection()); | |
this._sectionStart = -1; | |
}; | |
Tokenizer.prototype._emitPartial = function(value) { | |
if (this._baseState !== 1 /* Text */) { | |
this._cbs.onattribdata(value); //TODO implement the new event | |
} else { | |
this._cbs.ontext(value); | |
} | |
}; | |
return Tokenizer; | |
})(); | |
exports.default = Tokenizer; | |
}, | |
{ | |
"entities/lib/decode_codepoint": 23, | |
"entities/lib/maps/entities.json": 27, | |
"entities/lib/maps/legacy.json": 28, | |
"entities/lib/maps/xml.json": 29, | |
}, | |
], | |
8: [ | |
function(require, module, exports) { | |
"use strict"; | |
function __export(m) { | |
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; | |
} | |
var __importStar = | |
(this && this.__importStar) || | |
function(mod) { | |
if (mod && mod.__esModule) return mod; | |
var result = {}; | |
if (mod != null) | |
for (var k in mod) | |
if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; | |
result["default"] = mod; | |
return result; | |
}; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var Parser_1 = require("./Parser"); | |
exports.Parser = Parser_1.Parser; | |
var domhandler_1 = require("domhandler"); | |
exports.DomHandler = domhandler_1.DomHandler; | |
exports.DefaultHandler = domhandler_1.DomHandler; | |
// Helper methods | |
/** | |
* Parses data, returns the resulting DOM. | |
* | |
* @param data The data that should be parsed. | |
* @param options Optional options for the parser and DOM builder. | |
*/ | |
function parseDOM(data, options) { | |
var handler = new domhandler_1.DomHandler(void 0, options); | |
new Parser_1.Parser(handler, options).end(data); | |
return handler.dom; | |
} | |
exports.parseDOM = parseDOM; | |
/** | |
* Creates a parser instance, with an attached DOM handler. | |
* | |
* @param cb A callback that will be called once parsing has been completed. | |
* @param options Optional options for the parser and DOM builder. | |
* @param elementCb An optional callback that will be called every time a tag has been completed inside of the DOM. | |
*/ | |
function createDomStream(cb, options, elementCb) { | |
var handler = new domhandler_1.DomHandler(cb, options, elementCb); | |
return new Parser_1.Parser(handler, options); | |
} | |
exports.createDomStream = createDomStream; | |
var Tokenizer_1 = require("./Tokenizer"); | |
exports.Tokenizer = Tokenizer_1.default; | |
var ElementType = __importStar(require("domelementtype")); | |
exports.ElementType = ElementType; | |
/** | |
* List of all events that the parser emits. | |
* | |
* Format: eventname: number of arguments. | |
*/ | |
exports.EVENTS = { | |
attribute: 2, | |
cdatastart: 0, | |
cdataend: 0, | |
text: 1, | |
processinginstruction: 2, | |
comment: 1, | |
commentend: 0, | |
closetag: 1, | |
opentag: 2, | |
opentagname: 1, | |
error: 1, | |
end: 0, | |
}; | |
/* | |
All of the following exports exist for backwards-compatibility. | |
They should probably be removed eventually. | |
*/ | |
__export(require("./FeedHandler")); | |
__export(require("./WritableStream")); | |
__export(require("./CollectingHandler")); | |
var DomUtils = __importStar(require("domutils")); | |
exports.DomUtils = DomUtils; | |
var FeedHandler_1 = require("./FeedHandler"); | |
exports.RssHandler = FeedHandler_1.FeedHandler; | |
}, | |
{ | |
"./CollectingHandler": 3, | |
"./FeedHandler": 4, | |
"./Parser": 6, | |
"./Tokenizer": 7, | |
"./WritableStream": 1, | |
"domelementtype": 11, | |
"domhandler": 12, | |
"domutils": 15, | |
}, | |
], | |
9: [ | |
function(require, module, exports) { | |
module.exports = { | |
elementNames: { | |
altglyph: "altGlyph", | |
altglyphdef: "altGlyphDef", | |
altglyphitem: "altGlyphItem", | |
animatecolor: "animateColor", | |
animatemotion: "animateMotion", | |
animatetransform: "animateTransform", | |
clippath: "clipPath", | |
feblend: "feBlend", | |
fecolormatrix: "feColorMatrix", | |
fecomponenttransfer: "feComponentTransfer", | |
fecomposite: "feComposite", | |
feconvolvematrix: "feConvolveMatrix", | |
fediffuselighting: "feDiffuseLighting", | |
fedisplacementmap: "feDisplacementMap", | |
fedistantlight: "feDistantLight", | |
fedropshadow: "feDropShadow", | |
feflood: "feFlood", | |
fefunca: "feFuncA", | |
fefuncb: "feFuncB", | |
fefuncg: "feFuncG", | |
fefuncr: "feFuncR", | |
fegaussianblur: "feGaussianBlur", | |
feimage: "feImage", | |
femerge: "feMerge", | |
femergenode: "feMergeNode", | |
femorphology: "feMorphology", | |
feoffset: "feOffset", | |
fepointlight: "fePointLight", | |
fespecularlighting: "feSpecularLighting", | |
fespotlight: "feSpotLight", | |
fetile: "feTile", | |
feturbulence: "feTurbulence", | |
foreignobject: "foreignObject", | |
glyphref: "glyphRef", | |
lineargradient: "linearGradient", | |
radialgradient: "radialGradient", | |
textpath: "textPath", | |
}, | |
attributeNames: { | |
definitionurl: "definitionURL", | |
attributename: "attributeName", | |
attributetype: "attributeType", | |
basefrequency: "baseFrequency", | |
baseprofile: "baseProfile", | |
calcmode: "calcMode", | |
clippathunits: "clipPathUnits", | |
diffuseconstant: "diffuseConstant", | |
edgemode: "edgeMode", | |
filterunits: "filterUnits", | |
glyphref: "glyphRef", | |
gradienttransform: "gradientTransform", | |
gradientunits: "gradientUnits", | |
kernelmatrix: "kernelMatrix", | |
kernelunitlength: "kernelUnitLength", | |
keypoints: "keyPoints", | |
keysplines: "keySplines", | |
keytimes: "keyTimes", | |
lengthadjust: "lengthAdjust", | |
limitingconeangle: "limitingConeAngle", | |
markerheight: "markerHeight", | |
markerunits: "markerUnits", | |
markerwidth: "markerWidth", | |
maskcontentunits: "maskContentUnits", | |
maskunits: "maskUnits", | |
numoctaves: "numOctaves", | |
pathlength: "pathLength", | |
patterncontentunits: "patternContentUnits", | |
patterntransform: "patternTransform", | |
patternunits: "patternUnits", | |
pointsatx: "pointsAtX", | |
pointsaty: "pointsAtY", | |
pointsatz: "pointsAtZ", | |
preservealpha: "preserveAlpha", | |
preserveaspectratio: "preserveAspectRatio", | |
primitiveunits: "primitiveUnits", | |
refx: "refX", | |
refy: "refY", | |
repeatcount: "repeatCount", | |
repeatdur: "repeatDur", | |
requiredextensions: "requiredExtensions", | |
requiredfeatures: "requiredFeatures", | |
specularconstant: "specularConstant", | |
specularexponent: "specularExponent", | |
spreadmethod: "spreadMethod", | |
startoffset: "startOffset", | |
stddeviation: "stdDeviation", | |
stitchtiles: "stitchTiles", | |
surfacescale: "surfaceScale", | |
systemlanguage: "systemLanguage", | |
tablevalues: "tableValues", | |
targetx: "targetX", | |
targety: "targetY", | |
textlength: "textLength", | |
viewbox: "viewBox", | |
viewtarget: "viewTarget", | |
xchannelselector: "xChannelSelector", | |
ychannelselector: "yChannelSelector", | |
zoomandpan: "zoomAndPan", | |
}, | |
}; | |
}, | |
{}, | |
], | |
10: [ | |
function(require, module, exports) { | |
/* | |
Module dependencies | |
*/ | |
var ElementType = require("domelementtype"); | |
var entities = require("entities"); | |
/* mixed-case SVG and MathML tags & attributes | |
recognized by the HTML parser, see | |
https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign | |
*/ | |
var foreignNames = require("./foreignNames.json"); | |
foreignNames.elementNames.__proto__ = null; /* use as a simple dictionary */ | |
foreignNames.attributeNames.__proto__ = null; | |
var unencodedElements = { | |
__proto__: null, | |
style: true, | |
script: true, | |
xmp: true, | |
iframe: true, | |
noembed: true, | |
noframes: true, | |
plaintext: true, | |
noscript: true, | |
}; | |
/* | |
Format attributes | |
*/ | |
function formatAttrs(attributes, opts) { | |
if (!attributes) return; | |
var output = ""; | |
var value; | |
// Loop through the attributes | |
for (var key in attributes) { | |
value = attributes[key]; | |
if (output) { | |
output += " "; | |
} | |
if (opts.xmlMode === "foreign") { | |
/* fix up mixed-case attribute names */ | |
key = foreignNames.attributeNames[key] || key; | |
} | |
output += key; | |
if ((value !== null && value !== "") || opts.xmlMode) { | |
output += | |
'="' + | |
(opts.decodeEntities | |
? entities.encodeXML(value) | |
: value.replace(/\"/g, """)) + | |
'"'; | |
} | |
} | |
return output; | |
} | |
/* | |
Self-enclosing tags (stolen from node-htmlparser) | |
*/ | |
var singleTag = { | |
__proto__: null, | |
area: true, | |
base: true, | |
basefont: true, | |
br: true, | |
col: true, | |
command: true, | |
embed: true, | |
frame: true, | |
hr: true, | |
img: true, | |
input: true, | |
isindex: true, | |
keygen: true, | |
link: true, | |
meta: true, | |
param: true, | |
source: true, | |
track: true, | |
wbr: true, | |
}; | |
var render = (module.exports = function(dom, opts) { | |
if (!Array.isArray(dom) && !dom.cheerio) dom = [dom]; | |
opts = opts || {}; | |
var output = ""; | |
for (var i = 0; i < dom.length; i++) { | |
var elem = dom[i]; | |
if (elem.type === "root") output += render(elem.children, opts); | |
else if (ElementType.isTag(elem)) output += renderTag(elem, opts); | |
else if (elem.type === ElementType.Directive) | |
output += renderDirective(elem); | |
else if (elem.type === ElementType.Comment) | |
output += renderComment(elem); | |
else if (elem.type === ElementType.CDATA) | |
output += renderCdata(elem); | |
else output += renderText(elem, opts); | |
} | |
return output; | |
}); | |
var foreignModeIntegrationPoints = [ | |
"mi", | |
"mo", | |
"mn", | |
"ms", | |
"mtext", | |
"annotation-xml", | |
"foreignObject", | |
"desc", | |
"title", | |
]; | |
function renderTag(elem, opts) { | |
// Handle SVG / MathML in HTML | |
if (opts.xmlMode === "foreign") { | |
/* fix up mixed-case element names */ | |
elem.name = foreignNames.elementNames[elem.name] || elem.name; | |
/* exit foreign mode at integration points */ | |
if ( | |
elem.parent && | |
foreignModeIntegrationPoints.indexOf(elem.parent.name) >= 0 | |
) | |
opts = Object.assign({}, opts, { xmlMode: false }); | |
} | |
if (!opts.xmlMode && ["svg", "math"].indexOf(elem.name) >= 0) { | |
opts = Object.assign({}, opts, { xmlMode: "foreign" }); | |
} | |
var tag = "<" + elem.name; | |
var attribs = formatAttrs(elem.attribs, opts); | |
if (attribs) { | |
tag += " " + attribs; | |
} | |
if ( | |
opts.xmlMode && | |
(!elem.children || elem.children.length === 0) | |
) { | |
tag += "/>"; | |
} else { | |
tag += ">"; | |
if (elem.children) { | |
tag += render(elem.children, opts); | |
} | |
if (!singleTag[elem.name] || opts.xmlMode) { | |
tag += "</" + elem.name + ">"; | |
} | |
} | |
return tag; | |
} | |
function renderDirective(elem) { | |
return "<" + elem.data + ">"; | |
} | |
function renderText(elem, opts) { | |
var data = elem.data || ""; | |
// if entities weren't decoded, no need to encode them back | |
if ( | |
opts.decodeEntities && | |
!(elem.parent && elem.parent.name in unencodedElements) | |
) { | |
data = entities.encodeXML(data); | |
} | |
return data; | |
} | |
function renderCdata(elem) { | |
return "<![CDATA[" + elem.children[0].data + "]]>"; | |
} | |
function renderComment(elem) { | |
return "<!--" + elem.data + "-->"; | |
} | |
}, | |
{ "./foreignNames.json": 9, "domelementtype": 11, "entities": 25 }, | |
], | |
11: [ | |
function(require, module, exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
/** | |
* Tests whether an element is a tag or not. | |
* | |
* @param elem Element to test | |
*/ | |
function isTag(elem) { | |
return ( | |
elem.type === "tag" /* Tag */ || | |
elem.type === "script" /* Script */ || | |
elem.type === "style" /* Style */ | |
); | |
} | |
exports.isTag = isTag; | |
// Exports for backwards compatibility | |
exports.Text = "text" /* Text */; //Text | |
exports.Directive = "directive" /* Directive */; //<? ... ?> | |
exports.Comment = "comment" /* Comment */; //<!-- ... --> | |
exports.Script = "script" /* Script */; //<script> tags | |
exports.Style = "style" /* Style */; //<style> tags | |
exports.Tag = "tag" /* Tag */; //Any tag | |
exports.CDATA = "cdata" /* CDATA */; //<![CDATA[ ... ]]> | |
exports.Doctype = "doctype" /* Doctype */; | |
}, | |
{}, | |
], | |
12: [ | |
function(require, module, exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var node_1 = require("./node"); | |
exports.Node = node_1.Node; | |
exports.Element = node_1.Element; | |
exports.DataNode = node_1.DataNode; | |
exports.NodeWithChildren = node_1.NodeWithChildren; | |
var reWhitespace = /\s+/g; | |
// Default options | |
var defaultOpts = { | |
normalizeWhitespace: false, | |
withStartIndices: false, | |
withEndIndices: false, | |
}; | |
var DomHandler = /** @class */ (function() { | |
/** | |
* Initiate a new DomHandler. | |
* | |
* @param callback Called once parsing has completed. | |
* @param options Settings for the handler. | |
* @param elementCB Callback whenever a tag is closed. | |
*/ | |
function DomHandler(callback, options, elementCB) { | |
/** The constructed DOM */ | |
this.dom = []; | |
/** Indicated whether parsing has been completed. */ | |
this._done = false; | |
/** Stack of open tags. */ | |
this._tagStack = []; | |
/** A data node that is still being written to. */ | |
this._lastNode = null; | |
/** Reference to the parser instance. Used for location information. */ | |
this._parser = null; | |
// Make it possible to skip arguments, for backwards-compatibility | |
if (typeof options === "function") { | |
elementCB = options; | |
options = defaultOpts; | |
} | |
if (typeof callback === "object") { | |
options = callback; | |
callback = undefined; | |
} | |
this._callback = callback || null; | |
this._options = options || defaultOpts; | |
this._elementCB = elementCB || null; | |
} | |
DomHandler.prototype.onparserinit = function(parser) { | |
this._parser = parser; | |
}; | |
// Resets the handler back to starting state | |
DomHandler.prototype.onreset = function() { | |
this.dom = []; | |
this._done = false; | |
this._tagStack = []; | |
this._lastNode = null; | |
this._parser = this._parser || null; | |
}; | |
// Signals the handler that parsing is done | |
DomHandler.prototype.onend = function() { | |
if (this._done) return; | |
this._done = true; | |
this._parser = null; | |
this.handleCallback(null); | |
}; | |
DomHandler.prototype.onerror = function(error) { | |
this.handleCallback(error); | |
}; | |
DomHandler.prototype.onclosetag = function() { | |
this._lastNode = null; | |
// If(this._tagStack.pop().name !== name) this.handleCallback(Error("Tagname didn't match!")); | |
var elem = this._tagStack.pop(); | |
if (!elem || !this._parser) { | |
return; | |
} | |
if (this._options.withEndIndices) { | |
elem.endIndex = this._parser.endIndex; | |
} | |
if (this._elementCB) this._elementCB(elem); | |
}; | |
DomHandler.prototype.onopentag = function(name, attribs) { | |
var element = new node_1.Element(name, attribs); | |
this.addNode(element); | |
this._tagStack.push(element); | |
}; | |
DomHandler.prototype.ontext = function(data) { | |
var normalize = this._options.normalizeWhitespace; | |
var _lastNode = this._lastNode; | |
if (_lastNode && _lastNode.type === "text" /* Text */) { | |
if (normalize) { | |
_lastNode.data = (_lastNode.data + data).replace( | |
reWhitespace, | |
" ", | |
); | |
} else { | |
_lastNode.data += data; | |
} | |
} else { | |
if (normalize) { | |
data = data.replace(reWhitespace, " "); | |
} | |
var node = new node_1.DataNode("text" /* Text */, data); | |
this.addNode(node); | |
this._lastNode = node; | |
} | |
}; | |
DomHandler.prototype.oncomment = function(data) { | |
if ( | |
this._lastNode && | |
this._lastNode.type === "comment" /* Comment */ | |
) { | |
this._lastNode.data += data; | |
return; | |
} | |
var node = new node_1.DataNode("comment" /* Comment */, data); | |
this.addNode(node); | |
this._lastNode = node; | |
}; | |
DomHandler.prototype.oncommentend = function() { | |
this._lastNode = null; | |
}; | |
DomHandler.prototype.oncdatastart = function() { | |
var text = new node_1.DataNode("text" /* Text */, ""); | |
var node = new node_1.NodeWithChildren("cdata" /* CDATA */, [ | |
text, | |
]); | |
this.addNode(node); | |
text.parent = node; | |
this._lastNode = text; | |
}; | |
DomHandler.prototype.oncdataend = function() { | |
this._lastNode = null; | |
}; | |
DomHandler.prototype.onprocessinginstruction = function( | |
name, | |
data, | |
) { | |
var node = new node_1.ProcessingInstruction(name, data); | |
this.addNode(node); | |
}; | |
DomHandler.prototype.handleCallback = function(error) { | |
if (typeof this._callback === "function") { | |
this._callback(error, this.dom); | |
} else if (error) { | |
throw error; | |
} | |
}; | |
DomHandler.prototype.addNode = function(node) { | |
var parent = this._tagStack[this._tagStack.length - 1]; | |
var siblings = parent ? parent.children : this.dom; | |
var previousSibling = siblings[siblings.length - 1]; | |
if (this._parser) { | |
if (this._options.withStartIndices) { | |
node.startIndex = this._parser.startIndex; | |
} | |
if (this._options.withEndIndices) { | |
node.endIndex = this._parser.endIndex; | |
} | |
} | |
siblings.push(node); | |
if (previousSibling) { | |
node.prev = previousSibling; | |
previousSibling.next = node; | |
} | |
if (parent) { | |
node.parent = parent; | |
} | |
this._lastNode = null; | |
}; | |
DomHandler.prototype.addDataNode = function(node) { | |
this.addNode(node); | |
this._lastNode = node; | |
}; | |
return DomHandler; | |
})(); | |
exports.DomHandler = DomHandler; | |
exports.default = DomHandler; | |
}, | |
{ "./node": 13 }, | |
], | |
13: [ | |
function(require, module, exports) { | |
"use strict"; | |
var __extends = | |
(this && this.__extends) || | |
(function() { | |
var extendStatics = function(d, b) { | |
extendStatics = | |
Object.setPrototypeOf || | |
({ __proto__: [] } instanceof Array && | |
function(d, b) { | |
d.__proto__ = b; | |
}) || | |
function(d, b) { | |
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | |
}; | |
return extendStatics(d, b); | |
}; | |
return function(d, b) { | |
extendStatics(d, b); | |
function __() { | |
this.constructor = d; | |
} | |
d.prototype = | |
b === null | |
? Object.create(b) | |
: ((__.prototype = b.prototype), new __()); | |
}; | |
})(); | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var nodeTypes = new Map([ | |
["tag" /* Tag */, 1], | |
["script" /* Script */, 1], | |
["style" /* Style */, 1], | |
["directive" /* Directive */, 1], | |
["text" /* Text */, 3], | |
["cdata" /* CDATA */, 4], | |
["comment" /* Comment */, 8], | |
]); | |
// This object will be used as the prototype for Nodes when creating a | |
// DOM-Level-1-compliant structure. | |
var Node = /** @class */ (function() { | |
/** | |
* | |
* @param type The type of the node. | |
*/ | |
function Node(type) { | |
this.type = type; | |
/** Parent of the node */ | |
this.parent = null; | |
/** Previous sibling */ | |
this.prev = null; | |
/** Next sibling */ | |
this.next = null; | |
/** The start index of the node. Requires `withStartIndices` on the handler to be `true. */ | |
this.startIndex = null; | |
/** The end index of the node. Requires `withEndIndices` on the handler to be `true. */ | |
this.endIndex = null; | |
} | |
Object.defineProperty(Node.prototype, "nodeType", { | |
// Read-only aliases | |
get: function() { | |
return nodeTypes.get(this.type) || 1; | |
}, | |
enumerable: true, | |
configurable: true, | |
}); | |
Object.defineProperty(Node.prototype, "parentNode", { | |
// Read-write aliases for properties | |
get: function() { | |
return this.parent || null; | |
}, | |
set: function(parent) { | |
this.parent = parent; | |
}, | |
enumerable: true, | |
configurable: true, | |
}); | |
Object.defineProperty(Node.prototype, "previousSibling", { | |
get: function() { | |
return this.prev || null; | |
}, | |
set: function(prev) { | |
this.prev = prev; | |
}, | |
enumerable: true, | |
configurable: true, | |
}); | |
Object.defineProperty(Node.prototype, "nextSibling", { | |
get: function() { | |
return this.next || null; | |
}, | |
set: function(next) { | |
this.next = next; | |
}, | |
enumerable: true, | |
configurable: true, | |
}); | |
return Node; | |
})(); | |
exports.Node = Node; | |
var DataNode = /** @class */ (function(_super) { | |
__extends(DataNode, _super); | |
/** | |
* | |
* @param type The type of the node | |
* @param data The content of the data node | |
*/ | |
function DataNode(type, data) { | |
var _this = _super.call(this, type) || this; | |
_this.data = data; | |
return _this; | |
} | |
Object.defineProperty(DataNode.prototype, "nodeValue", { | |
get: function() { | |
return this.data; | |
}, | |
set: function(data) { | |
this.data = data; | |
}, | |
enumerable: true, | |
configurable: true, | |
}); | |
return DataNode; | |
})(Node); | |
exports.DataNode = DataNode; | |
var ProcessingInstruction = /** @class */ (function(_super) { | |
__extends(ProcessingInstruction, _super); | |
function ProcessingInstruction(name, data) { | |
var _this = | |
_super.call(this, "directive" /* Directive */, data) || this; | |
_this.name = name; | |
return _this; | |
} | |
return ProcessingInstruction; | |
})(DataNode); | |
exports.ProcessingInstruction = ProcessingInstruction; | |
var NodeWithChildren = /** @class */ (function(_super) { | |
__extends(NodeWithChildren, _super); | |
/** | |
* | |
* @param type Type of the node. | |
* @param children Children of the node. Only certain node types can have children. | |
*/ | |
function NodeWithChildren(type, children) { | |
var _this = _super.call(this, type) || this; | |
_this.children = children; | |
return _this; | |
} | |
Object.defineProperty(NodeWithChildren.prototype, "firstChild", { | |
// Aliases | |
get: function() { | |
return this.children[0] || null; | |
}, | |
enumerable: true, | |
configurable: true, | |
}); | |
Object.defineProperty(NodeWithChildren.prototype, "lastChild", { | |
get: function() { | |
return this.children[this.children.length - 1] || null; | |
}, | |
enumerable: true, | |
configurable: true, | |
}); | |
Object.defineProperty(NodeWithChildren.prototype, "childNodes", { | |
get: function() { | |
return this.children; | |
}, | |
set: function(children) { | |
this.children = children; | |
}, | |
enumerable: true, | |
configurable: true, | |
}); | |
return NodeWithChildren; | |
})(Node); | |
exports.NodeWithChildren = NodeWithChildren; | |
var Element = /** @class */ (function(_super) { | |
__extends(Element, _super); | |
/** | |
* | |
* @param name Name of the tag, eg. `div`, `span` | |
* @param attribs Object mapping attribute names to attribute values | |
*/ | |
function Element(name, attribs) { | |
var _this = | |
_super.call( | |
this, | |
name === "script" | |
? "script" /* Script */ | |
: name === "style" | |
? "style" /* Style */ | |
: "tag" /* Tag */, | |
[], | |
) || this; | |
_this.name = name; | |
_this.attribs = attribs; | |
_this.attribs = attribs; | |
return _this; | |
} | |
Object.defineProperty(Element.prototype, "tagName", { | |
// DOM Level 1 aliases | |
get: function() { | |
return this.name; | |
}, | |
set: function(name) { | |
this.name = name; | |
}, | |
enumerable: true, | |
configurable: true, | |
}); | |
return Element; | |
})(NodeWithChildren); | |
exports.Element = Element; | |
}, | |
{}, | |
], | |
14: [ | |
function(require, module, exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var tagtypes_1 = require("./tagtypes"); | |
/** | |
* Given an array of nodes, remove any member that is contained by another. | |
* | |
* @param nodes — Nodes to filter. | |
*/ | |
function removeSubsets(nodes) { | |
var idx = nodes.length; | |
// Check if each node (or one of its ancestors) is already contained in the | |
// array. | |
while (--idx >= 0) { | |
var node = nodes[idx]; | |
// Remove the node if it is not unique. | |
// We are going through the array from the end, so we only | |
// have to check nodes that preceed the node under consideration in the array. | |
if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) { | |
nodes.splice(idx, 1); | |
continue; | |
} | |
for ( | |
var ancestor = node.parent; | |
ancestor; | |
ancestor = ancestor.parent | |
) { | |
if (nodes.indexOf(ancestor) > -1) { | |
nodes.splice(idx, 1); | |
break; | |
} | |
} | |
} | |
return nodes; | |
} | |
exports.removeSubsets = removeSubsets; | |
/*** | |
* Compare the position of one node against another node in any other document. | |
* The return value is a bitmask with the following values: | |
* | |
* document order: | |
* > There is an ordering, document order, defined on all the nodes in the | |
* > document corresponding to the order in which the first character of the | |
* > XML representation of each node occurs in the XML representation of the | |
* > document after expansion of general entities. Thus, the document element | |
* > node will be the first node. Element nodes occur before their children. | |
* > Thus, document order orders element nodes in order of the occurrence of | |
* > their start-tag in the XML (after expansion of entities). The attribute | |
* > nodes of an element occur after the element and before its children. The | |
* > relative order of attribute nodes is implementation-dependent./ | |
* | |
* Source: | |
* http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order | |
* @argument nodaA The first node to use in the comparison | |
* @argument nodeB The second node to use in the comparison | |
* | |
* @return A bitmask describing the input nodes' relative position. | |
* | |
* See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for | |
* a description of these values. | |
*/ | |
function compareDocumentPosition(nodeA, nodeB) { | |
var aParents = []; | |
var bParents = []; | |
if (nodeA === nodeB) { | |
return 0; | |
} | |
var current = tagtypes_1.hasChildren(nodeA) ? nodeA : nodeA.parent; | |
while (current) { | |
aParents.unshift(current); | |
current = current.parent; | |
} | |
current = tagtypes_1.hasChildren(nodeB) ? nodeB : nodeB.parent; | |
while (current) { | |
bParents.unshift(current); | |
current = current.parent; | |
} | |
var idx = 0; | |
while (aParents[idx] === bParents[idx]) { | |
idx++; | |
} | |
if (idx === 0) { | |
return 1 /* DISCONNECTED */; | |
} | |
var sharedParent = aParents[idx - 1]; | |
var siblings = sharedParent.children; | |
var aSibling = aParents[idx]; | |
var bSibling = bParents[idx]; | |
if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) { | |
if (sharedParent === nodeB) { | |
return 4 /* FOLLOWING */ | 16 /* CONTAINED_BY */; | |
} | |
return 4 /* FOLLOWING */; | |
} else { | |
if (sharedParent === nodeA) { | |
return 2 /* PRECEDING */ | 8 /* CONTAINS */; | |
} | |
return 2 /* PRECEDING */; | |
} | |
} | |
exports.compareDocumentPosition = compareDocumentPosition; | |
/*** | |
* Sort an array of nodes based on their relative position in the document and | |
* remove any duplicate nodes. If the array contains nodes that do not belong | |
* to the same document, sort order is unspecified. | |
* | |
* @argument nodes Array of DOM nodes | |
* @returns collection of unique nodes, sorted in document order | |
*/ | |
function uniqueSort(nodes) { | |
nodes = nodes.filter(function(node, i, arr) { | |
return !arr.includes(node, i + 1); | |
}); | |
nodes.sort(function(a, b) { | |
var relative = compareDocumentPosition(a, b); | |
if (relative & 2 /* PRECEDING */) { | |
return -1; | |
} else if (relative & 4 /* FOLLOWING */) { | |
return 1; | |
} | |
return 0; | |
}); | |
return nodes; | |
} | |
exports.uniqueSort = uniqueSort; | |
}, | |
{ "./tagtypes": 20 }, | |
], | |
15: [ | |
function(require, module, exports) { | |
"use strict"; | |
function __export(m) { | |
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; | |
} | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
__export(require("./stringify")); | |
__export(require("./traversal")); | |
__export(require("./manipulation")); | |
__export(require("./querying")); | |
__export(require("./legacy")); | |
__export(require("./helpers")); | |
__export(require("./tagtypes")); | |
}, | |
{ | |
"./helpers": 14, | |
"./legacy": 16, | |
"./manipulation": 17, | |
"./querying": 18, | |
"./stringify": 19, | |
"./tagtypes": 20, | |
"./traversal": 21, | |
}, | |
], | |
16: [ | |
function(require, module, exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var querying_1 = require("./querying"); | |
var tagtypes_1 = require("./tagtypes"); | |
function isTextNode(node) { | |
return node.type === "text" /* Text */; | |
} | |
/* eslint-disable @typescript-eslint/camelcase */ | |
var Checks = { | |
tag_name: function(name) { | |
if (typeof name === "function") { | |
return function(elem) { | |
return tagtypes_1.isTag(elem) && name(elem.name); | |
}; | |
} else if (name === "*") { | |
return tagtypes_1.isTag; | |
} else { | |
return function(elem) { | |
return tagtypes_1.isTag(elem) && elem.name === name; | |
}; | |
} | |
}, | |
tag_type: function(type) { | |
if (typeof type === "function") { | |
return function(elem) { | |
return type(elem.type); | |
}; | |
} else { | |
return function(elem) { | |
return elem.type === type; | |
}; | |
} | |
}, | |
tag_contains: function(data) { | |
if (typeof data === "function") { | |
return function(elem) { | |
return isTextNode(elem) && data(elem.data); | |
}; | |
} else { | |
return function(elem) { | |
return isTextNode(elem) && elem.data === data; | |
}; | |
} | |
}, | |
}; | |
/* eslint-enable @typescript-eslint/camelcase */ | |
function getAttribCheck(attrib, value) { | |
if (typeof value === "function") { | |
return function(elem) { | |
return tagtypes_1.isTag(elem) && value(elem.attribs[attrib]); | |
}; | |
} else { | |
return function(elem) { | |
return tagtypes_1.isTag(elem) && elem.attribs[attrib] === value; | |
}; | |
} | |
} | |
function combineFuncs(a, b) { | |
return function(elem) { | |
return a(elem) || b(elem); | |
}; | |
} | |
function compileTest(options) { | |
var funcs = Object.keys(options).map(function(key) { | |
var value = options[key]; | |
// @ts-ignore | |
return key in Checks | |
? Checks[key](value) | |
: getAttribCheck(key, value); | |
}); | |
return funcs.length === 0 ? null : funcs.reduce(combineFuncs); | |
} | |
function testElement(options, element) { | |
var test = compileTest(options); | |
return test ? test(element) : true; | |
} | |
exports.testElement = testElement; | |
function getElements(options, element, recurse, limit) { | |
if (limit === void 0) { | |
limit = Infinity; | |
} | |
var test = compileTest(options); | |
return test ? querying_1.filter(test, element, recurse, limit) : []; | |
} | |
exports.getElements = getElements; | |
function getElementById(id, element, recurse) { | |
if (recurse === void 0) { | |
recurse = true; | |
} | |
if (!Array.isArray(element)) element = [element]; | |
return querying_1.findOne( | |
getAttribCheck("id", id), | |
element, | |
recurse, | |
); | |
} | |
exports.getElementById = getElementById; | |
function getElementsByTagName(name, element, recurse, limit) { | |
if (limit === void 0) { | |
limit = Infinity; | |
} | |
return querying_1.filter( | |
Checks.tag_name(name), | |
element, | |
recurse, | |
limit, | |
); | |
} | |
exports.getElementsByTagName = getElementsByTagName; | |
function getElementsByTagType(type, element, recurse, limit) { | |
if (recurse === void 0) { | |
recurse = true; | |
} | |
if (limit === void 0) { | |
limit = Infinity; | |
} | |
return querying_1.filter( | |
Checks.tag_type(type), | |
element, | |
recurse, | |
limit, | |
); | |
} | |
exports.getElementsByTagType = getElementsByTagType; | |
}, | |
{ "./querying": 18, "./tagtypes": 20 }, | |
], | |
17: [ | |
function(require, module, exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
/*** | |
* Remove an element from the dom | |
* | |
* @argument elem The element to be removed | |
*/ | |
function removeElement(elem) { | |
if (elem.prev) elem.prev.next = elem.next; | |
if (elem.next) elem.next.prev = elem.prev; | |
if (elem.parent) { | |
var childs = elem.parent.children; | |
childs.splice(childs.lastIndexOf(elem), 1); | |
} | |
} | |
exports.removeElement = removeElement; | |
/*** | |
* Replace an element in the dom | |
* | |
* @argument elem The element to be replaced | |
* @argument replacement The element to be added | |
*/ | |
function replaceElement(elem, replacement) { | |
var prev = (replacement.prev = elem.prev); | |
if (prev) { | |
prev.next = replacement; | |
} | |
var next = (replacement.next = elem.next); | |
if (next) { | |
next.prev = replacement; | |
} | |
var parent = (replacement.parent = elem.parent); | |
if (parent) { | |
var childs = parent.children; | |
childs[childs.lastIndexOf(elem)] = replacement; | |
} | |
} | |
exports.replaceElement = replaceElement; | |
/*** | |
* Append a child to an element | |
* | |
* @argument elem The element to append to | |
* @argument child The element to be added as a child | |
*/ | |
function appendChild(elem, child) { | |
child.parent = elem; | |
if (elem.children.push(child) !== 1) { | |
var sibling = elem.children[elem.children.length - 2]; | |
sibling.next = child; | |
child.prev = sibling; | |
child.next = null; | |
} | |
} | |
exports.appendChild = appendChild; | |
/*** | |
* Append an element after another | |
* | |
* @argument elem The element to append to | |
* @argument next The element be added | |
*/ | |
function append(elem, next) { | |
var parent = elem.parent, | |
currNext = elem.next; | |
next.next = currNext; | |
next.prev = elem; | |
elem.next = next; | |
next.parent = parent; | |
if (currNext) { | |
currNext.prev = next; | |
if (parent) { | |
var childs = parent.children; | |
childs.splice(childs.lastIndexOf(currNext), 0, next); | |
} | |
} else if (parent) { | |
parent.children.push(next); | |
} | |
} | |
exports.append = append; | |
/*** | |
* Prepend an element before another | |
* | |
* @argument elem The element to append to | |
* @argument prev The element be added | |
*/ | |
function prepend(elem, prev) { | |
var parent = elem.parent; | |
if (parent) { | |
var childs = parent.children; | |
childs.splice(childs.lastIndexOf(elem), 0, prev); | |
} | |
if (elem.prev) { | |
elem.prev.next = prev; | |
} | |
prev.parent = parent; | |
prev.prev = elem.prev; | |
prev.next = elem; | |
elem.prev = prev; | |
} | |
exports.prepend = prepend; | |
}, | |
{}, | |
], | |
18: [ | |
function(require, module, exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var tagtypes_1 = require("./tagtypes"); | |
function filter(test, element, recurse, limit) { | |
if (recurse === void 0) { | |
recurse = true; | |
} | |
if (limit === void 0) { | |
limit = Infinity; | |
} | |
if (!Array.isArray(element)) element = [element]; | |
return find(test, element, recurse, limit); | |
} | |
exports.filter = filter; | |
function find(test, elems, recurse, limit) { | |
var result = []; | |
for (var i = 0; i < elems.length; i++) { | |
var elem = elems[i]; | |
if (test(elem)) { | |
result.push(elem); | |
if (--limit <= 0) break; | |
} | |
if ( | |
recurse && | |
tagtypes_1.hasChildren(elem) && | |
elem.children.length > 0 | |
) { | |
var children = find(test, elem.children, recurse, limit); | |
result = result.concat(children); | |
limit -= children.length; | |
if (limit <= 0) break; | |
} | |
} | |
return result; | |
} | |
exports.find = find; | |
function findOneChild(test, elems) { | |
for (var i = 0; i < elems.length; i++) { | |
if (test(elems[i])) return elems[i]; | |
} | |
return null; | |
} | |
exports.findOneChild = findOneChild; | |
function findOne(test, elems, recurse) { | |
if (recurse === void 0) { | |
recurse = true; | |
} | |
var elem = null; | |
for (var i = 0; i < elems.length && !elem; i++) { | |
var checked = elems[i]; | |
if (!tagtypes_1.isTag(checked)) { | |
continue; | |
} else if (test(checked)) { | |
elem = checked; | |
} else if (recurse && checked.children.length > 0) { | |
elem = findOne(test, checked.children); | |
} | |
} | |
return elem; | |
} | |
exports.findOne = findOne; | |
function existsOne(test, elems) { | |
for (var i = 0; i < elems.length; i++) { | |
var checked = elems[i]; | |
if ( | |
tagtypes_1.isTag(checked) && | |
(test(checked) || | |
(checked.children.length > 0 && | |
existsOne(test, checked.children))) | |
) { | |
return true; | |
} | |
} | |
return false; | |
} | |
exports.existsOne = existsOne; | |
function findAll(test, rootElems) { | |
var result = []; | |
var stack = rootElems.slice(); | |
while (stack.length) { | |
var elem = stack.shift(); | |
if (!elem || !tagtypes_1.isTag(elem)) continue; | |
if (elem.children && elem.children.length > 0) { | |
stack.unshift.apply(stack, elem.children); | |
} | |
if (test(elem)) result.push(elem); | |
} | |
return result; | |
} | |
exports.findAll = findAll; | |
}, | |
{ "./tagtypes": 20 }, | |
], | |
19: [ | |
function(require, module, exports) { | |
"use strict"; | |
var __importDefault = | |
(this && this.__importDefault) || | |
function(mod) { | |
return mod && mod.__esModule ? mod : { default: mod }; | |
}; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var tagtypes_1 = require("./tagtypes"); | |
var dom_serializer_1 = __importDefault(require("dom-serializer")); | |
exports.getOuterHTML = dom_serializer_1.default; | |
function getInnerHTML(node, options) { | |
return tagtypes_1.hasChildren(node) | |
? node.children | |
.map(function(node) { | |
return exports.getOuterHTML(node, options); | |
}) | |
.join("") | |
: ""; | |
} | |
exports.getInnerHTML = getInnerHTML; | |
function getText(node) { | |
if (Array.isArray(node)) return node.map(getText).join(""); | |
if (tagtypes_1.isTag(node)) | |
return node.name === "br" ? "\n" : getText(node.children); | |
if (tagtypes_1.isCDATA(node)) return getText(node.children); | |
if (tagtypes_1.isText(node)) return node.data; | |
return ""; | |
} | |
exports.getText = getText; | |
}, | |
{ "./tagtypes": 20, "dom-serializer": 10 }, | |
], | |
20: [ | |
function(require, module, exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var domelementtype_1 = require("domelementtype"); | |
function isTag(node) { | |
return domelementtype_1.isTag(node); | |
} | |
exports.isTag = isTag; | |
function isCDATA(node) { | |
return "cdata" /* CDATA */ === node.type; | |
} | |
exports.isCDATA = isCDATA; | |
function isText(node) { | |
return node.type === "text" /* Text */; | |
} | |
exports.isText = isText; | |
function isComment(node) { | |
return node.type === "comment" /* Comment */; | |
} | |
exports.isComment = isComment; | |
function hasChildren(node) { | |
return Object.prototype.hasOwnProperty.call(node, "children"); | |
} | |
exports.hasChildren = hasChildren; | |
}, | |
{ domelementtype: 11 }, | |
], | |
21: [ | |
function(require, module, exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
function getChildren(elem) { | |
// @ts-ignore | |
return elem.children || null; | |
} | |
exports.getChildren = getChildren; | |
function getParent(elem) { | |
return elem.parent || null; | |
} | |
exports.getParent = getParent; | |
function getSiblings(elem) { | |
var parent = getParent(elem); | |
return parent ? getChildren(parent) : [elem]; | |
} | |
exports.getSiblings = getSiblings; | |
function getAttributeValue(elem, name) { | |
return elem.attribs && elem.attribs[name]; | |
} | |
exports.getAttributeValue = getAttributeValue; | |
function hasAttrib(elem, name) { | |
return !!getAttributeValue(elem, name); | |
} | |
exports.hasAttrib = hasAttrib; | |
/*** | |
* Returns the name property of an element | |
* | |
* @argument elem The element to get the name for | |
*/ | |
function getName(elem) { | |
return elem.name; | |
} | |
exports.getName = getName; | |
}, | |
{}, | |
], | |
22: [ | |
function(require, module, exports) { | |
"use strict"; | |
var __importDefault = | |
(this && this.__importDefault) || | |
function(mod) { | |
return mod && mod.__esModule ? mod : { default: mod }; | |
}; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var entities_json_1 = __importDefault( | |
require("./maps/entities.json"), | |
); | |
var legacy_json_1 = __importDefault(require("./maps/legacy.json")); | |
var xml_json_1 = __importDefault(require("./maps/xml.json")); | |
var decode_codepoint_1 = __importDefault( | |
require("./decode_codepoint"), | |
); | |
exports.decodeXML = getStrictDecoder(xml_json_1.default); | |
exports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default); | |
function getStrictDecoder(map) { | |
var keys = Object.keys(map).join("|"); | |
var replace = getReplacer(map); | |
keys += "|#[xX][\\da-fA-F]+|#\\d+"; | |
var re = new RegExp("&(?:" + keys + ");", "g"); | |
return function(str) { | |
return String(str).replace(re, replace); | |
}; | |
} | |
var sorter = function(a, b) { | |
return a < b ? 1 : -1; | |
}; | |
exports.decodeHTML = (function() { | |
var legacy = Object.keys(legacy_json_1.default).sort(sorter); | |
var keys = Object.keys(entities_json_1.default).sort(sorter); | |
for (var i = 0, j = 0; i < keys.length; i++) { | |
if (legacy[j] === keys[i]) { | |
keys[i] += ";?"; | |
j++; | |
} else { | |
keys[i] += ";"; | |
} | |
} | |
var re = new RegExp( | |
"&(?:" + keys.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", | |
"g", | |
); | |
var replace = getReplacer(entities_json_1.default); | |
function replacer(str) { | |
if (str.substr(-1) !== ";") str += ";"; | |
return replace(str); | |
} | |
//TODO consider creating a merged map | |
return function(str) { | |
return String(str).replace(re, replacer); | |
}; | |
})(); | |
function getReplacer(map) { | |
return function replace(str) { | |
if (str.charAt(1) === "#") { | |
if (str.charAt(2) === "X" || str.charAt(2) === "x") { | |
return decode_codepoint_1.default( | |
parseInt(str.substr(3), 16), | |
); | |
} | |
return decode_codepoint_1.default(parseInt(str.substr(2), 10)); | |
} | |
return map[str.slice(1, -1)]; | |
}; | |
} | |
}, | |
{ | |
"./decode_codepoint": 23, | |
"./maps/entities.json": 27, | |
"./maps/legacy.json": 28, | |
"./maps/xml.json": 29, | |
}, | |
], | |
23: [ | |
function(require, module, exports) { | |
"use strict"; | |
var __importDefault = | |
(this && this.__importDefault) || | |
function(mod) { | |
return mod && mod.__esModule ? mod : { default: mod }; | |
}; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var decode_json_1 = __importDefault(require("./maps/decode.json")); | |
// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119 | |
function decodeCodePoint(codePoint) { | |
if ( | |
(codePoint >= 0xd800 && codePoint <= 0xdfff) || | |
codePoint > 0x10ffff | |
) { | |
return "\uFFFD"; | |
} | |
if (codePoint in decode_json_1.default) { | |
// @ts-ignore | |
codePoint = decode_json_1.default[codePoint]; | |
} | |
var output = ""; | |
if (codePoint > 0xffff) { | |
codePoint -= 0x10000; | |
output += String.fromCharCode( | |
((codePoint >>> 10) & 0x3ff) | 0xd800, | |
); | |
codePoint = 0xdc00 | (codePoint & 0x3ff); | |
} | |
output += String.fromCharCode(codePoint); | |
return output; | |
} | |
exports.default = decodeCodePoint; | |
}, | |
{ "./maps/decode.json": 26 }, | |
], | |
24: [ | |
function(require, module, exports) { | |
"use strict"; | |
var __importDefault = | |
(this && this.__importDefault) || | |
function(mod) { | |
return mod && mod.__esModule ? mod : { default: mod }; | |
}; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var xml_json_1 = __importDefault(require("./maps/xml.json")); | |
var inverseXML = getInverseObj(xml_json_1.default); | |
var xmlReplacer = getInverseReplacer(inverseXML); | |
exports.encodeXML = getInverse(inverseXML, xmlReplacer); | |
var entities_json_1 = __importDefault( | |
require("./maps/entities.json"), | |
); | |
var inverseHTML = getInverseObj(entities_json_1.default); | |
var htmlReplacer = getInverseReplacer(inverseHTML); | |
exports.encodeHTML = getInverse(inverseHTML, htmlReplacer); | |
function getInverseObj(obj) { | |
return Object.keys(obj) | |
.sort() | |
.reduce(function(inverse, name) { | |
inverse[obj[name]] = "&" + name + ";"; | |
return inverse; | |
}, {}); | |
} | |
function getInverseReplacer(inverse) { | |
var single = []; | |
var multiple = []; | |
Object.keys(inverse).forEach(function(k) { | |
return k.length === 1 | |
? // Add value to single array | |
single.push("\\" + k) | |
: // Add value to multiple array | |
multiple.push(k); | |
}); | |
//TODO add ranges | |
multiple.unshift("[" + single.join("") + "]"); | |
return new RegExp(multiple.join("|"), "g"); | |
} | |
var reNonASCII = /[^\0-\x7F]/g; | |
var reAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; | |
function singleCharReplacer(c) { | |
return ( | |
"&#x" + | |
c | |
.charCodeAt(0) | |
.toString(16) | |
.toUpperCase() + | |
";" | |
); | |
} | |
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any | |
function astralReplacer(c, _) { | |
// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae | |
var high = c.charCodeAt(0); | |
var low = c.charCodeAt(1); | |
var codePoint = (high - 0xd800) * 0x400 + low - 0xdc00 + 0x10000; | |
return "&#x" + codePoint.toString(16).toUpperCase() + ";"; | |
} | |
function getInverse(inverse, re) { | |
return function(data) { | |
return data | |
.replace(re, function(name) { | |
return inverse[name]; | |
}) | |
.replace(reAstralSymbols, astralReplacer) | |
.replace(reNonASCII, singleCharReplacer); | |
}; | |
} | |
var reXmlChars = getInverseReplacer(inverseXML); | |
function escape(data) { | |
return data | |
.replace(reXmlChars, singleCharReplacer) | |
.replace(reAstralSymbols, astralReplacer) | |
.replace(reNonASCII, singleCharReplacer); | |
} | |
exports.escape = escape; | |
}, | |
{ "./maps/entities.json": 27, "./maps/xml.json": 29 }, | |
], | |
25: [ | |
function(require, module, exports) { | |
"use strict"; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var decode_1 = require("./decode"); | |
var encode_1 = require("./encode"); | |
function decode(data, level) { | |
return (!level || level <= 0 | |
? decode_1.decodeXML | |
: decode_1.decodeHTML)(data); | |
} | |
exports.decode = decode; | |
function decodeStrict(data, level) { | |
return (!level || level <= 0 | |
? decode_1.decodeXML | |
: decode_1.decodeHTMLStrict)(data); | |
} | |
exports.decodeStrict = decodeStrict; | |
function encode(data, level) { | |
return (!level || level <= 0 | |
? encode_1.encodeXML | |
: encode_1.encodeHTML)(data); | |
} | |
exports.encode = encode; | |
var encode_2 = require("./encode"); | |
exports.encodeXML = encode_2.encodeXML; | |
exports.encodeHTML = encode_2.encodeHTML; | |
exports.escape = encode_2.escape; | |
// Legacy aliases | |
exports.encodeHTML4 = encode_2.encodeHTML; | |
exports.encodeHTML5 = encode_2.encodeHTML; | |
var decode_2 = require("./decode"); | |
exports.decodeXML = decode_2.decodeXML; | |
exports.decodeHTML = decode_2.decodeHTML; | |
exports.decodeHTMLStrict = decode_2.decodeHTMLStrict; | |
// Legacy aliases | |
exports.decodeHTML4 = decode_2.decodeHTML; | |
exports.decodeHTML5 = decode_2.decodeHTML; | |
exports.decodeHTML4Strict = decode_2.decodeHTMLStrict; | |
exports.decodeHTML5Strict = decode_2.decodeHTMLStrict; | |
exports.decodeXMLStrict = decode_2.decodeXML; | |
}, | |
{ "./decode": 22, "./encode": 24 }, | |
], | |
26: [ | |
function(require, module, exports) { | |
module.exports = { | |
"0": 65533, | |
"128": 8364, | |
"130": 8218, | |
"131": 402, | |
"132": 8222, | |
"133": 8230, | |
"134": 8224, | |
"135": 8225, | |
"136": 710, | |
"137": 8240, | |
"138": 352, | |
"139": 8249, | |
"140": 338, | |
"142": 381, | |
"145": 8216, | |
"146": 8217, | |
"147": 8220, | |
"148": 8221, | |
"149": 8226, | |
"150": 8211, | |
"151": 8212, | |
"152": 732, | |
"153": 8482, | |
"154": 353, | |
"155": 8250, | |
"156": 339, | |
"158": 382, | |
"159": 376, | |
}; | |
}, | |
{}, | |
], | |
27: [ | |
function(require, module, exports) { | |
module.exports = { | |
Aacute: "\u00C1", | |
aacute: "\u00E1", | |
Abreve: "\u0102", | |
abreve: "\u0103", | |
ac: "\u223E", | |
acd: "\u223F", | |
acE: "\u223E\u0333", | |
Acirc: "\u00C2", | |
acirc: "\u00E2", | |
acute: "\u00B4", | |
Acy: "\u0410", | |
acy: "\u0430", | |
AElig: "\u00C6", | |
aelig: "\u00E6", | |
af: "\u2061", | |
Afr: "\uD835\uDD04", | |
afr: "\uD835\uDD1E", | |
Agrave: "\u00C0", | |
agrave: "\u00E0", | |
alefsym: "\u2135", | |
aleph: "\u2135", | |
Alpha: "\u0391", | |
alpha: "\u03B1", | |
Amacr: "\u0100", | |
amacr: "\u0101", | |
amalg: "\u2A3F", | |
amp: "&", | |
AMP: "&", | |
andand: "\u2A55", | |
And: "\u2A53", | |
and: "\u2227", | |
andd: "\u2A5C", | |
andslope: "\u2A58", | |
andv: "\u2A5A", | |
ang: "\u2220", | |
ange: "\u29A4", | |
angle: "\u2220", | |
angmsdaa: "\u29A8", | |
angmsdab: "\u29A9", | |
angmsdac: "\u29AA", | |
angmsdad: "\u29AB", | |
angmsdae: "\u29AC", | |
angmsdaf: "\u29AD", | |
angmsdag: "\u29AE", | |
angmsdah: "\u29AF", | |
angmsd: "\u2221", | |
angrt: "\u221F", | |
angrtvb: "\u22BE", | |
angrtvbd: "\u299D", | |
angsph: "\u2222", | |
angst: "\u00C5", | |
angzarr: "\u237C", | |
Aogon: "\u0104", | |
aogon: "\u0105", | |
Aopf: "\uD835\uDD38", | |
aopf: "\uD835\uDD52", | |
apacir: "\u2A6F", | |
ap: "\u2248", | |
apE: "\u2A70", | |
ape: "\u224A", | |
apid: "\u224B", | |
apos: "'", | |
ApplyFunction: "\u2061", | |
approx: "\u2248", | |
approxeq: "\u224A", | |
Aring: "\u00C5", | |
aring: "\u00E5", | |
Ascr: "\uD835\uDC9C", | |
ascr: "\uD835\uDCB6", | |
Assign: "\u2254", | |
ast: "*", | |
asymp: "\u2248", | |
asympeq: "\u224D", | |
Atilde: "\u00C3", | |
atilde: "\u00E3", | |
Auml: "\u00C4", | |
auml: "\u00E4", | |
awconint: "\u2233", | |
awint: "\u2A11", | |
backcong: "\u224C", | |
backepsilon: "\u03F6", | |
backprime: "\u2035", | |
backsim: "\u223D", | |
backsimeq: "\u22CD", | |
Backslash: "\u2216", | |
Barv: "\u2AE7", | |
barvee: "\u22BD", | |
barwed: "\u2305", | |
Barwed: "\u2306", | |
barwedge: "\u2305", | |
bbrk: "\u23B5", | |
bbrktbrk: "\u23B6", | |
bcong: "\u224C", | |
Bcy: "\u0411", | |
bcy: "\u0431", | |
bdquo: "\u201E", | |
becaus: "\u2235", | |
because: "\u2235", | |
Because: "\u2235", | |
bemptyv: "\u29B0", | |
bepsi: "\u03F6", | |
bernou: "\u212C", | |
Bernoullis: "\u212C", | |
Beta: "\u0392", | |
beta: "\u03B2", | |
beth: "\u2136", | |
between: "\u226C", | |
Bfr: "\uD835\uDD05", | |
bfr: "\uD835\uDD1F", | |
bigcap: "\u22C2", | |
bigcirc: "\u25EF", | |
bigcup: "\u22C3", | |
bigodot: "\u2A00", | |
bigoplus: "\u2A01", | |
bigotimes: "\u2A02", | |
bigsqcup: "\u2A06", | |
bigstar: "\u2605", | |
bigtriangledown: "\u25BD", | |
bigtriangleup: "\u25B3", | |
biguplus: "\u2A04", | |
bigvee: "\u22C1", | |
bigwedge: "\u22C0", | |
bkarow: "\u290D", | |
blacklozenge: "\u29EB", | |
blacksquare: "\u25AA", | |
blacktriangle: "\u25B4", | |
blacktriangledown: "\u25BE", | |
blacktriangleleft: "\u25C2", | |
blacktriangleright: "\u25B8", | |
blank: "\u2423", | |
blk12: "\u2592", | |
blk14: "\u2591", | |
blk34: "\u2593", | |
block: "\u2588", | |
bne: "=\u20E5", | |
bnequiv: "\u2261\u20E5", | |
bNot: "\u2AED", | |
bnot: "\u2310", | |
Bopf: "\uD835\uDD39", | |
bopf: "\uD835\uDD53", | |
bot: "\u22A5", | |
bottom: "\u22A5", | |
bowtie: "\u22C8", | |
boxbox: "\u29C9", | |
boxdl: "\u2510", | |
boxdL: "\u2555", | |
boxDl: "\u2556", | |
boxDL: "\u2557", | |
boxdr: "\u250C", | |
boxdR: "\u2552", | |
boxDr: "\u2553", | |
boxDR: "\u2554", | |
boxh: "\u2500", | |
boxH: "\u2550", | |
boxhd: "\u252C", | |
boxHd: "\u2564", | |
boxhD: "\u2565", | |
boxHD: "\u2566", | |
boxhu: "\u2534", | |
boxHu: "\u2567", | |
boxhU: "\u2568", | |
boxHU: "\u2569", | |
boxminus: "\u229F", | |
boxplus: "\u229E", | |
boxtimes: "\u22A0", | |
boxul: "\u2518", | |
boxuL: "\u255B", | |
boxUl: "\u255C", | |
boxUL: "\u255D", | |
boxur: "\u2514", | |
boxuR: "\u2558", | |
boxUr: "\u2559", | |
boxUR: "\u255A", | |
boxv: "\u2502", | |
boxV: "\u2551", | |
boxvh: "\u253C", | |
boxvH: "\u256A", | |
boxVh: "\u256B", | |
boxVH: "\u256C", | |
boxvl: "\u2524", | |
boxvL: "\u2561", | |
boxVl: "\u2562", | |
boxVL: "\u2563", | |
boxvr: "\u251C", | |
boxvR: "\u255E", | |
boxVr: "\u255F", | |
boxVR: "\u2560", | |
bprime: "\u2035", | |
breve: "\u02D8", | |
Breve: "\u02D8", | |
brvbar: "\u00A6", | |
bscr: "\uD835\uDCB7", | |
Bscr: "\u212C", | |
bsemi: "\u204F", | |
bsim: "\u223D", | |
bsime: "\u22CD", | |
bsolb: "\u29C5", | |
bsol: "\\", | |
bsolhsub: "\u27C8", | |
bull: "\u2022", | |
bullet: "\u2022", | |
bump: "\u224E", | |
bumpE: "\u2AAE", | |
bumpe: "\u224F", | |
Bumpeq: "\u224E", | |
bumpeq: "\u224F", | |
Cacute: "\u0106", | |
cacute: "\u0107", | |
capand: "\u2A44", | |
capbrcup: "\u2A49", | |
capcap: "\u2A4B", | |
cap: "\u2229", | |
Cap: "\u22D2", | |
capcup: "\u2A47", | |
capdot: "\u2A40", | |
CapitalDifferentialD: "\u2145", | |
caps: "\u2229\uFE00", | |
caret: "\u2041", | |
caron: "\u02C7", | |
Cayleys: "\u212D", | |
ccaps: "\u2A4D", | |
Ccaron: "\u010C", | |
ccaron: "\u010D", | |
Ccedil: "\u00C7", | |
ccedil: "\u00E7", | |
Ccirc: "\u0108", | |
ccirc: "\u0109", | |
Cconint: "\u2230", | |
ccups: "\u2A4C", | |
ccupssm: "\u2A50", | |
Cdot: "\u010A", | |
cdot: "\u010B", | |
cedil: "\u00B8", | |
Cedilla: "\u00B8", | |
cemptyv: "\u29B2", | |
cent: "\u00A2", | |
centerdot: "\u00B7", | |
CenterDot: "\u00B7", | |
cfr: "\uD835\uDD20", | |
Cfr: "\u212D", | |
CHcy: "\u0427", | |
chcy: "\u0447", | |
check: "\u2713", | |
checkmark: "\u2713", | |
Chi: "\u03A7", | |
chi: "\u03C7", | |
circ: "\u02C6", | |
circeq: "\u2257", | |
circlearrowleft: "\u21BA", | |
circlearrowright: "\u21BB", | |
circledast: "\u229B", | |
circledcirc: "\u229A", | |
circleddash: "\u229D", | |
CircleDot: "\u2299", | |
circledR: "\u00AE", | |
circledS: "\u24C8", | |
CircleMinus: "\u2296", | |
CirclePlus: "\u2295", | |
CircleTimes: "\u2297", | |
cir: "\u25CB", | |
cirE: "\u29C3", | |
cire: "\u2257", | |
cirfnint: "\u2A10", | |
cirmid: "\u2AEF", | |
cirscir: "\u29C2", | |
ClockwiseContourIntegral: "\u2232", | |
CloseCurlyDoubleQuote: "\u201D", | |
CloseCurlyQuote: "\u2019", | |
clubs: "\u2663", | |
clubsuit: "\u2663", | |
colon: ":", | |
Colon: "\u2237", | |
Colone: "\u2A74", | |
colone: "\u2254", | |
coloneq: "\u2254", | |
comma: ",", | |
commat: "@", | |
comp: "\u2201", | |
compfn: "\u2218", | |
complement: "\u2201", | |
complexes: "\u2102", | |
cong: "\u2245", | |
congdot: "\u2A6D", | |
Congruent: "\u2261", | |
conint: "\u222E", | |
Conint: "\u222F", | |
ContourIntegral: "\u222E", | |
copf: "\uD835\uDD54", | |
Copf: "\u2102", | |
coprod: "\u2210", | |
Coproduct: "\u2210", | |
copy: "\u00A9", | |
COPY: "\u00A9", | |
copysr: "\u2117", | |
CounterClockwiseContourIntegral: "\u2233", | |
crarr: "\u21B5", | |
cross: "\u2717", | |
Cross: "\u2A2F", | |
Cscr: "\uD835\uDC9E", | |
cscr: "\uD835\uDCB8", | |
csub: "\u2ACF", | |
csube: "\u2AD1", | |
csup: "\u2AD0", | |
csupe: "\u2AD2", | |
ctdot: "\u22EF", | |
cudarrl: "\u2938", | |
cudarrr: "\u2935", | |
cuepr: "\u22DE", | |
cuesc: "\u22DF", | |
cularr: "\u21B6", | |
cularrp: "\u293D", | |
cupbrcap: "\u2A48", | |
cupcap: "\u2A46", | |
CupCap: "\u224D", | |
cup: "\u222A", | |
Cup: "\u22D3", | |
cupcup: "\u2A4A", | |
cupdot: "\u228D", | |
cupor: "\u2A45", | |
cups: "\u222A\uFE00", | |
curarr: "\u21B7", | |
curarrm: "\u293C", | |
curlyeqprec: "\u22DE", | |
curlyeqsucc: "\u22DF", | |
curlyvee: "\u22CE", | |
curlywedge: "\u22CF", | |
curren: "\u00A4", | |
curvearrowleft: "\u21B6", | |
curvearrowright: "\u21B7", | |
cuvee: "\u22CE", | |
cuwed: "\u22CF", | |
cwconint: "\u2232", | |
cwint: "\u2231", | |
cylcty: "\u232D", | |
dagger: "\u2020", | |
Dagger: "\u2021", | |
daleth: "\u2138", | |
darr: "\u2193", | |
Darr: "\u21A1", | |
dArr: "\u21D3", | |
dash: "\u2010", | |
Dashv: "\u2AE4", | |
dashv: "\u22A3", | |
dbkarow: "\u290F", | |
dblac: "\u02DD", | |
Dcaron: "\u010E", | |
dcaron: "\u010F", | |
Dcy: "\u0414", | |
dcy: "\u0434", | |
ddagger: "\u2021", | |
ddarr: "\u21CA", | |
DD: "\u2145", | |
dd: "\u2146", | |
DDotrahd: "\u2911", | |
ddotseq: "\u2A77", | |
deg: "\u00B0", | |
Del: "\u2207", | |
Delta: "\u0394", | |
delta: "\u03B4", | |
demptyv: "\u29B1", | |
dfisht: "\u297F", | |
Dfr: "\uD835\uDD07", | |
dfr: "\uD835\uDD21", | |
dHar: "\u2965", | |
dharl: "\u21C3", | |
dharr: "\u21C2", | |
DiacriticalAcute: "\u00B4", | |
DiacriticalDot: "\u02D9", | |
DiacriticalDoubleAcute: "\u02DD", | |
DiacriticalGrave: "`", | |
DiacriticalTilde: "\u02DC", | |
diam: "\u22C4", | |
diamond: "\u22C4", | |
Diamond: "\u22C4", | |
diamondsuit: "\u2666", | |
diams: "\u2666", | |
die: "\u00A8", | |
DifferentialD: "\u2146", | |
digamma: "\u03DD", | |
disin: "\u22F2", | |
div: "\u00F7", | |
divide: "\u00F7", | |
divideontimes: "\u22C7", | |
divonx: "\u22C7", | |
DJcy: "\u0402", | |
djcy: "\u0452", | |
dlcorn: "\u231E", | |
dlcrop: "\u230D", | |
dollar: "$", | |
Dopf: "\uD835\uDD3B", | |
dopf: "\uD835\uDD55", | |
Dot: "\u00A8", | |
dot: "\u02D9", | |
DotDot: "\u20DC", | |
doteq: "\u2250", | |
doteqdot: "\u2251", | |
DotEqual: "\u2250", | |
dotminus: "\u2238", | |
dotplus: "\u2214", | |
dotsquare: "\u22A1", | |
doublebarwedge: "\u2306", | |
DoubleContourIntegral: "\u222F", | |
DoubleDot: "\u00A8", | |
DoubleDownArrow: "\u21D3", | |
DoubleLeftArrow: "\u21D0", | |
DoubleLeftRightArrow: "\u21D4", | |
DoubleLeftTee: "\u2AE4", | |
DoubleLongLeftArrow: "\u27F8", | |
DoubleLongLeftRightArrow: "\u27FA", | |
DoubleLongRightArrow: "\u27F9", | |
DoubleRightArrow: "\u21D2", | |
DoubleRightTee: "\u22A8", | |
DoubleUpArrow: "\u21D1", | |
DoubleUpDownArrow: "\u21D5", | |
DoubleVerticalBar: "\u2225", | |
DownArrowBar: "\u2913", | |
downarrow: "\u2193", | |
DownArrow: "\u2193", | |
Downarrow: "\u21D3", | |
DownArrowUpArrow: "\u21F5", | |
DownBreve: "\u0311", | |
downdownarrows: "\u21CA", | |
downharpoonleft: "\u21C3", | |
downharpoonright: "\u21C2", | |
DownLeftRightVector: "\u2950", | |
DownLeftTeeVector: "\u295E", | |
DownLeftVectorBar: "\u2956", | |
DownLeftVector: "\u21BD", | |
DownRightTeeVector: "\u295F", | |
DownRightVectorBar: "\u2957", | |
DownRightVector: "\u21C1", | |
DownTeeArrow: "\u21A7", | |
DownTee: "\u22A4", | |
drbkarow: "\u2910", | |
drcorn: "\u231F", | |
drcrop: "\u230C", | |
Dscr: "\uD835\uDC9F", | |
dscr: "\uD835\uDCB9", | |
DScy: "\u0405", | |
dscy: "\u0455", | |
dsol: "\u29F6", | |
Dstrok: "\u0110", | |
dstrok: "\u0111", | |
dtdot: "\u22F1", | |
dtri: "\u25BF", | |
dtrif: "\u25BE", | |
duarr: "\u21F5", | |
duhar: "\u296F", | |
dwangle: "\u29A6", | |
DZcy: "\u040F", | |
dzcy: "\u045F", | |
dzigrarr: "\u27FF", | |
Eacute: "\u00C9", | |
eacute: "\u00E9", | |
easter: "\u2A6E", | |
Ecaron: "\u011A", | |
ecaron: "\u011B", | |
Ecirc: "\u00CA", | |
ecirc: "\u00EA", | |
ecir: "\u2256", | |
ecolon: "\u2255", | |
Ecy: "\u042D", | |
ecy: "\u044D", | |
eDDot: "\u2A77", | |
Edot: "\u0116", | |
edot: "\u0117", | |
eDot: "\u2251", | |
ee: "\u2147", | |
efDot: "\u2252", | |
Efr: "\uD835\uDD08", | |
efr: "\uD835\uDD22", | |
eg: "\u2A9A", | |
Egrave: "\u00C8", | |
egrave: "\u00E8", | |
egs: "\u2A96", | |
egsdot: "\u2A98", | |
el: "\u2A99", | |
Element: "\u2208", | |
elinters: "\u23E7", | |
ell: "\u2113", | |
els: "\u2A95", | |
elsdot: "\u2A97", | |
Emacr: "\u0112", | |
emacr: "\u0113", | |
empty: "\u2205", | |
emptyset: "\u2205", | |
EmptySmallSquare: "\u25FB", | |
emptyv: "\u2205", | |
EmptyVerySmallSquare: "\u25AB", | |
emsp13: "\u2004", | |
emsp14: "\u2005", | |
emsp: "\u2003", | |
ENG: "\u014A", | |
eng: "\u014B", | |
ensp: "\u2002", | |
Eogon: "\u0118", | |
eogon: "\u0119", | |
Eopf: "\uD835\uDD3C", | |
eopf: "\uD835\uDD56", | |
epar: "\u22D5", | |
eparsl: "\u29E3", | |
eplus: "\u2A71", | |
epsi: "\u03B5", | |
Epsilon: "\u0395", | |
epsilon: "\u03B5", | |
epsiv: "\u03F5", | |
eqcirc: "\u2256", | |
eqcolon: "\u2255", | |
eqsim: "\u2242", | |
eqslantgtr: "\u2A96", | |
eqslantless: "\u2A95", | |
Equal: "\u2A75", | |
equals: "=", | |
EqualTilde: "\u2242", | |
equest: "\u225F", | |
Equilibrium: "\u21CC", | |
equiv: "\u2261", | |
equivDD: "\u2A78", | |
eqvparsl: "\u29E5", | |
erarr: "\u2971", | |
erDot: "\u2253", | |
escr: "\u212F", | |
Escr: "\u2130", | |
esdot: "\u2250", | |
Esim: "\u2A73", | |
esim: "\u2242", | |
Eta: "\u0397", | |
eta: "\u03B7", | |
ETH: "\u00D0", | |
eth: "\u00F0", | |
Euml: "\u00CB", | |
euml: "\u00EB", | |
euro: "\u20AC", | |
excl: "!", | |
exist: "\u2203", | |
Exists: "\u2203", | |
expectation: "\u2130", | |
exponentiale: "\u2147", | |
ExponentialE: "\u2147", | |
fallingdotseq: "\u2252", | |
Fcy: "\u0424", | |
fcy: "\u0444", | |
female: "\u2640", | |
ffilig: "\uFB03", | |
fflig: "\uFB00", | |
ffllig: "\uFB04", | |
Ffr: "\uD835\uDD09", | |
ffr: "\uD835\uDD23", | |
filig: "\uFB01", | |
FilledSmallSquare: "\u25FC", | |
FilledVerySmallSquare: "\u25AA", | |
fjlig: "fj", | |
flat: "\u266D", | |
fllig: "\uFB02", | |
fltns: "\u25B1", | |
fnof: "\u0192", | |
Fopf: "\uD835\uDD3D", | |
fopf: "\uD835\uDD57", | |
forall: "\u2200", | |
ForAll: "\u2200", | |
fork: "\u22D4", | |
forkv: "\u2AD9", | |
Fouriertrf: "\u2131", | |
fpartint: "\u2A0D", | |
frac12: "\u00BD", | |
frac13: "\u2153", | |
frac14: "\u00BC", | |
frac15: "\u2155", | |
frac16: "\u2159", | |
frac18: "\u215B", | |
frac23: "\u2154", | |
frac25: "\u2156", | |
frac34: "\u00BE", | |
frac35: "\u2157", | |
frac38: "\u215C", | |
frac45: "\u2158", | |
frac56: "\u215A", | |
frac58: "\u215D", | |
frac78: "\u215E", | |
frasl: "\u2044", | |
frown: "\u2322", | |
fscr: "\uD835\uDCBB", | |
Fscr: "\u2131", | |
gacute: "\u01F5", | |
Gamma: "\u0393", | |
gamma: "\u03B3", | |
Gammad: "\u03DC", | |
gammad: "\u03DD", | |
gap: "\u2A86", | |
Gbreve: "\u011E", | |
gbreve: "\u011F", | |
Gcedil: "\u0122", | |
Gcirc: "\u011C", | |
gcirc: "\u011D", | |
Gcy: "\u0413", | |
gcy: "\u0433", | |
Gdot: "\u0120", | |
gdot: "\u0121", | |
ge: "\u2265", | |
gE: "\u2267", | |
gEl: "\u2A8C", | |
gel: "\u22DB", | |
geq: "\u2265", | |
geqq: "\u2267", | |
geqslant: "\u2A7E", | |
gescc: "\u2AA9", | |
ges: "\u2A7E", | |
gesdot: "\u2A80", | |
gesdoto: "\u2A82", | |
gesdotol: "\u2A84", | |
gesl: "\u22DB\uFE00", | |
gesles: "\u2A94", | |
Gfr: "\uD835\uDD0A", | |
gfr: "\uD835\uDD24", | |
gg: "\u226B", | |
Gg: "\u22D9", | |
ggg: "\u22D9", | |
gimel: "\u2137", | |
GJcy: "\u0403", | |
gjcy: "\u0453", | |
gla: "\u2AA5", | |
gl: "\u2277", | |
glE: "\u2A92", | |
glj: "\u2AA4", | |
gnap: "\u2A8A", | |
gnapprox: "\u2A8A", | |
gne: "\u2A88", | |
gnE: "\u2269", | |
gneq: "\u2A88", | |
gneqq: "\u2269", | |
gnsim: "\u22E7", | |
Gopf: "\uD835\uDD3E", | |
gopf: "\uD835\uDD58", | |
grave: "`", | |
GreaterEqual: "\u2265", | |
GreaterEqualLess: "\u22DB", | |
GreaterFullEqual: "\u2267", | |
GreaterGreater: "\u2AA2", | |
GreaterLess: "\u2277", | |
GreaterSlantEqual: "\u2A7E", | |
GreaterTilde: "\u2273", | |
Gscr: "\uD835\uDCA2", | |
gscr: "\u210A", | |
gsim: "\u2273", | |
gsime: "\u2A8E", | |
gsiml: "\u2A90", | |
gtcc: "\u2AA7", | |
gtcir: "\u2A7A", | |
gt: ">", | |
GT: ">", | |
Gt: "\u226B", | |
gtdot: "\u22D7", | |
gtlPar: "\u2995", | |
gtquest: "\u2A7C", | |
gtrapprox: "\u2A86", | |
gtrarr: "\u2978", | |
gtrdot: "\u22D7", | |
gtreqless: "\u22DB", | |
gtreqqless: "\u2A8C", | |
gtrless: "\u2277", | |
gtrsim: "\u2273", | |
gvertneqq: "\u2269\uFE00", | |
gvnE: "\u2269\uFE00", | |
Hacek: "\u02C7", | |
hairsp: "\u200A", | |
half: "\u00BD", | |
hamilt: "\u210B", | |
HARDcy: "\u042A", | |
hardcy: "\u044A", | |
harrcir: "\u2948", | |
harr: "\u2194", | |
hArr: "\u21D4", | |
harrw: "\u21AD", | |
Hat: "^", | |
hbar: "\u210F", | |
Hcirc: "\u0124", | |
hcirc: "\u0125", | |
hearts: "\u2665", | |
heartsuit: "\u2665", | |
hellip: "\u2026", | |
hercon: "\u22B9", | |
hfr: "\uD835\uDD25", | |
Hfr: "\u210C", | |
HilbertSpace: "\u210B", | |
hksearow: "\u2925", | |
hkswarow: "\u2926", | |
hoarr: "\u21FF", | |
homtht: "\u223B", | |
hookleftarrow: "\u21A9", | |
hookrightarrow: "\u21AA", | |
hopf: "\uD835\uDD59", | |
Hopf: "\u210D", | |
horbar: "\u2015", | |
HorizontalLine: "\u2500", | |
hscr: "\uD835\uDCBD", | |
Hscr: "\u210B", | |
hslash: "\u210F", | |
Hstrok: "\u0126", | |
hstrok: "\u0127", | |
HumpDownHump: "\u224E", | |
HumpEqual: "\u224F", | |
hybull: "\u2043", | |
hyphen: "\u2010", | |
Iacute: "\u00CD", | |
iacute: "\u00ED", | |
ic: "\u2063", | |
Icirc: "\u00CE", | |
icirc: "\u00EE", | |
Icy: "\u0418", | |
icy: "\u0438", | |
Idot: "\u0130", | |
IEcy: "\u0415", | |
iecy: "\u0435", | |
iexcl: "\u00A1", | |
iff: "\u21D4", | |
ifr: "\uD835\uDD26", | |
Ifr: "\u2111", | |
Igrave: "\u00CC", | |
igrave: "\u00EC", | |
ii: "\u2148", | |
iiiint: "\u2A0C", | |
iiint: "\u222D", | |
iinfin: "\u29DC", | |
iiota: "\u2129", | |
IJlig: "\u0132", | |
ijlig: "\u0133", | |
Imacr: "\u012A", | |
imacr: "\u012B", | |
image: "\u2111", | |
ImaginaryI: "\u2148", | |
imagline: "\u2110", | |
imagpart: "\u2111", | |
imath: "\u0131", | |
Im: "\u2111", | |
imof: "\u22B7", | |
imped: "\u01B5", | |
Implies: "\u21D2", | |
incare: "\u2105", | |
in: "\u2208", | |
infin: "\u221E", | |
infintie: "\u29DD", | |
inodot: "\u0131", | |
intcal: "\u22BA", | |
int: "\u222B", | |
Int: "\u222C", | |
integers: "\u2124", | |
Integral: "\u222B", | |
intercal: "\u22BA", | |
Intersection: "\u22C2", | |
intlarhk: "\u2A17", | |
intprod: "\u2A3C", | |
InvisibleComma: "\u2063", | |
InvisibleTimes: "\u2062", | |
IOcy: "\u0401", | |
iocy: "\u0451", | |
Iogon: "\u012E", | |
iogon: "\u012F", | |
Iopf: "\uD835\uDD40", | |
iopf: "\uD835\uDD5A", | |
Iota: "\u0399", | |
iota: "\u03B9", | |
iprod: "\u2A3C", | |
iquest: "\u00BF", | |
iscr: "\uD835\uDCBE", | |
Iscr: "\u2110", | |
isin: "\u2208", | |
isindot: "\u22F5", | |
isinE: "\u22F9", | |
isins: "\u22F4", | |
isinsv: "\u22F3", | |
isinv: "\u2208", | |
it: "\u2062", | |
Itilde: "\u0128", | |
itilde: "\u0129", | |
Iukcy: "\u0406", | |
iukcy: "\u0456", | |
Iuml: "\u00CF", | |
iuml: "\u00EF", | |
Jcirc: "\u0134", | |
jcirc: "\u0135", | |
Jcy: "\u0419", | |
jcy: "\u0439", | |
Jfr: "\uD835\uDD0D", | |
jfr: "\uD835\uDD27", | |
jmath: "\u0237", | |
Jopf: "\uD835\uDD41", | |
jopf: "\uD835\uDD5B", | |
Jscr: "\uD835\uDCA5", | |
jscr: "\uD835\uDCBF", | |
Jsercy: "\u0408", | |
jsercy: "\u0458", | |
Jukcy: "\u0404", | |
jukcy: "\u0454", | |
Kappa: "\u039A", | |
kappa: "\u03BA", | |
kappav: "\u03F0", | |
Kcedil: "\u0136", | |
kcedil: "\u0137", | |
Kcy: "\u041A", | |
kcy: "\u043A", | |
Kfr: "\uD835\uDD0E", | |
kfr: "\uD835\uDD28", | |
kgreen: "\u0138", | |
KHcy: "\u0425", | |
khcy: "\u0445", | |
KJcy: "\u040C", | |
kjcy: "\u045C", | |
Kopf: "\uD835\uDD42", | |
kopf: "\uD835\uDD5C", | |
Kscr: "\uD835\uDCA6", | |
kscr: "\uD835\uDCC0", | |
lAarr: "\u21DA", | |
Lacute: "\u0139", | |
lacute: "\u013A", | |
laemptyv: "\u29B4", | |
lagran: "\u2112", | |
Lambda: "\u039B", | |
lambda: "\u03BB", | |
lang: "\u27E8", | |
Lang: "\u27EA", | |
langd: "\u2991", | |
langle: "\u27E8", | |
lap: "\u2A85", | |
Laplacetrf: "\u2112", | |
laquo: "\u00AB", | |
larrb: "\u21E4", | |
larrbfs: "\u291F", | |
larr: "\u2190", | |
Larr: "\u219E", | |
lArr: "\u21D0", | |
larrfs: "\u291D", | |
larrhk: "\u21A9", | |
larrlp: "\u21AB", | |
larrpl: "\u2939", | |
larrsim: "\u2973", | |
larrtl: "\u21A2", | |
latail: "\u2919", | |
lAtail: "\u291B", | |
lat: "\u2AAB", | |
late: "\u2AAD", | |
lates: "\u2AAD\uFE00", | |
lbarr: "\u290C", | |
lBarr: "\u290E", | |
lbbrk: "\u2772", | |
lbrace: "{", | |
lbrack: "[", | |
lbrke: "\u298B", | |
lbrksld: "\u298F", | |
lbrkslu: "\u298D", | |
Lcaron: "\u013D", | |
lcaron: "\u013E", | |
Lcedil: "\u013B", | |
lcedil: "\u013C", | |
lceil: "\u2308", | |
lcub: "{", | |
Lcy: "\u041B", | |
lcy: "\u043B", | |
ldca: "\u2936", | |
ldquo: "\u201C", | |
ldquor: "\u201E", | |
ldrdhar: "\u2967", | |
ldrushar: "\u294B", | |
ldsh: "\u21B2", | |
le: "\u2264", | |
lE: "\u2266", | |
LeftAngleBracket: "\u27E8", | |
LeftArrowBar: "\u21E4", | |
leftarrow: "\u2190", | |
LeftArrow: "\u2190", | |
Leftarrow: "\u21D0", | |
LeftArrowRightArrow: "\u21C6", | |
leftarrowtail: "\u21A2", | |
LeftCeiling: "\u2308", | |
LeftDoubleBracket: "\u27E6", | |
LeftDownTeeVector: "\u2961", | |
LeftDownVectorBar: "\u2959", | |
LeftDownVector: "\u21C3", | |
LeftFloor: "\u230A", | |
leftharpoondown: "\u21BD", | |
leftharpoonup: "\u21BC", | |
leftleftarrows: "\u21C7", | |
leftrightarrow: "\u2194", | |
LeftRightArrow: "\u2194", | |
Leftrightarrow: "\u21D4", | |
leftrightarrows: "\u21C6", | |
leftrightharpoons: "\u21CB", | |
leftrightsquigarrow: "\u21AD", | |
LeftRightVector: "\u294E", | |
LeftTeeArrow: "\u21A4", | |
LeftTee: "\u22A3", | |
LeftTeeVector: "\u295A", | |
leftthreetimes: "\u22CB", | |
LeftTriangleBar: "\u29CF", | |
LeftTriangle: "\u22B2", | |
LeftTriangleEqual: "\u22B4", | |
LeftUpDownVector: "\u2951", | |
LeftUpTeeVector: "\u2960", | |
LeftUpVectorBar: "\u2958", | |
LeftUpVector: "\u21BF", | |
LeftVectorBar: "\u2952", | |
LeftVector: "\u21BC", | |
lEg: "\u2A8B", | |
leg: "\u22DA", | |
leq: "\u2264", | |
leqq: "\u2266", | |
leqslant: "\u2A7D", | |
lescc: "\u2AA8", | |
les: "\u2A7D", | |
lesdot: "\u2A7F", | |
lesdoto: "\u2A81", | |
lesdotor: "\u2A83", | |
lesg: "\u22DA\uFE00", | |
lesges: "\u2A93", | |
lessapprox: "\u2A85", | |
lessdot: "\u22D6", | |
lesseqgtr: "\u22DA", | |
lesseqqgtr: "\u2A8B", | |
LessEqualGreater: "\u22DA", | |
LessFullEqual: "\u2266", | |
LessGreater: "\u2276", | |
lessgtr: "\u2276", | |
LessLess: "\u2AA1", | |
lesssim: "\u2272", | |
LessSlantEqual: "\u2A7D", | |
LessTilde: "\u2272", | |
lfisht: "\u297C", | |
lfloor: "\u230A", | |
Lfr: "\uD835\uDD0F", | |
lfr: "\uD835\uDD29", | |
lg: "\u2276", | |
lgE: "\u2A91", | |
lHar: "\u2962", | |
lhard: "\u21BD", | |
lharu: "\u21BC", | |
lharul: "\u296A", | |
lhblk: "\u2584", | |
LJcy: "\u0409", | |
ljcy: "\u0459", | |
llarr: "\u21C7", | |
ll: "\u226A", | |
Ll: "\u22D8", | |
llcorner: "\u231E", | |
Lleftarrow: "\u21DA", | |
llhard: "\u296B", | |
lltri: "\u25FA", | |
Lmidot: "\u013F", | |
lmidot: "\u0140", | |
lmoustache: "\u23B0", | |
lmoust: "\u23B0", | |
lnap: "\u2A89", | |
lnapprox: "\u2A89", | |
lne: "\u2A87", | |
lnE: "\u2268", | |
lneq: "\u2A87", | |
lneqq: "\u2268", | |
lnsim: "\u22E6", | |
loang: "\u27EC", | |
loarr: "\u21FD", | |
lobrk: "\u27E6", | |
longleftarrow: "\u27F5", | |
LongLeftArrow: "\u27F5", | |
Longleftarrow: "\u27F8", | |
longleftrightarrow: "\u27F7", | |
LongLeftRightArrow: "\u27F7", | |
Longleftrightarrow: "\u27FA", | |
longmapsto: "\u27FC", | |
longrightarrow: "\u27F6", | |
LongRightArrow: "\u27F6", | |
Longrightarrow: "\u27F9", | |
looparrowleft: "\u21AB", | |
looparrowright: "\u21AC", | |
lopar: "\u2985", | |
Lopf: "\uD835\uDD43", | |
lopf: "\uD835\uDD5D", | |
loplus: "\u2A2D", | |
lotimes: "\u2A34", | |
lowast: "\u2217", | |
lowbar: "_", | |
LowerLeftArrow: "\u2199", | |
LowerRightArrow: "\u2198", | |
loz: "\u25CA", | |
lozenge: "\u25CA", | |
lozf: "\u29EB", | |
lpar: "(", | |
lparlt: "\u2993", | |
lrarr: "\u21C6", | |
lrcorner: "\u231F", | |
lrhar: "\u21CB", | |
lrhard: "\u296D", | |
lrm: "\u200E", | |
lrtri: "\u22BF", | |
lsaquo: "\u2039", | |
lscr: "\uD835\uDCC1", | |
Lscr: "\u2112", | |
lsh: "\u21B0", | |
Lsh: "\u21B0", | |
lsim: "\u2272", | |
lsime: "\u2A8D", | |
lsimg: "\u2A8F", | |
lsqb: "[", | |
lsquo: "\u2018", | |
lsquor: "\u201A", | |
Lstrok: "\u0141", | |
lstrok: "\u0142", | |
ltcc: "\u2AA6", | |
ltcir: "\u2A79", | |
lt: "<", | |
LT: "<", | |
Lt: "\u226A", | |
ltdot: "\u22D6", | |
lthree: "\u22CB", | |
ltimes: "\u22C9", | |
ltlarr: "\u2976", | |
ltquest: "\u2A7B", | |
ltri: "\u25C3", | |
ltrie: "\u22B4", | |
ltrif: "\u25C2", | |
ltrPar: "\u2996", | |
lurdshar: "\u294A", | |
luruhar: "\u2966", | |
lvertneqq: "\u2268\uFE00", | |
lvnE: "\u2268\uFE00", | |
macr: "\u00AF", | |
male: "\u2642", | |
malt: "\u2720", | |
maltese: "\u2720", | |
Map: "\u2905", | |
map: "\u21A6", | |
mapsto: "\u21A6", | |
mapstodown: "\u21A7", | |
mapstoleft: "\u21A4", | |
mapstoup: "\u21A5", | |
marker: "\u25AE", | |
mcomma: "\u2A29", | |
Mcy: "\u041C", | |
mcy: "\u043C", | |
mdash: "\u2014", | |
mDDot: "\u223A", | |
measuredangle: "\u2221", | |
MediumSpace: "\u205F", | |
Mellintrf: "\u2133", | |
Mfr: "\uD835\uDD10", | |
mfr: "\uD835\uDD2A", | |
mho: "\u2127", | |
micro: "\u00B5", | |
midast: "*", | |
midcir: "\u2AF0", | |
mid: "\u2223", | |
middot: "\u00B7", | |
minusb: "\u229F", | |
minus: "\u2212", | |
minusd: "\u2238", | |
minusdu: "\u2A2A", | |
MinusPlus: "\u2213", | |
mlcp: "\u2ADB", | |
mldr: "\u2026", | |
mnplus: "\u2213", | |
models: "\u22A7", | |
Mopf: "\uD835\uDD44", | |
mopf: "\uD835\uDD5E", | |
mp: "\u2213", | |
mscr: "\uD835\uDCC2", | |
Mscr: "\u2133", | |
mstpos: "\u223E", | |
Mu: "\u039C", | |
mu: "\u03BC", | |
multimap: "\u22B8", | |
mumap: "\u22B8", | |
nabla: "\u2207", | |
Nacute: "\u0143", | |
nacute: "\u0144", | |
nang: "\u2220\u20D2", | |
nap: "\u2249", | |
napE: "\u2A70\u0338", | |
napid: "\u224B\u0338", | |
napos: "\u0149", | |
napprox: "\u2249", | |
natural: "\u266E", | |
naturals: "\u2115", | |
natur: "\u266E", | |
nbsp: "\u00A0", | |
nbump: "\u224E\u0338", | |
nbumpe: "\u224F\u0338", | |
ncap: "\u2A43", | |
Ncaron: "\u0147", | |
ncaron: "\u0148", | |
Ncedil: "\u0145", | |
ncedil: "\u0146", | |
ncong: "\u2247", | |
ncongdot: "\u2A6D\u0338", | |
ncup: "\u2A42", | |
Ncy: "\u041D", | |
ncy: "\u043D", | |
ndash: "\u2013", | |
nearhk: "\u2924", | |
nearr: "\u2197", | |
neArr: "\u21D7", | |
nearrow: "\u2197", | |
ne: "\u2260", | |
nedot: "\u2250\u0338", | |
NegativeMediumSpace: "\u200B", | |
NegativeThickSpace: "\u200B", | |
NegativeThinSpace: "\u200B", | |
NegativeVeryThinSpace: "\u200B", | |
nequiv: "\u2262", | |
nesear: "\u2928", | |
nesim: "\u2242\u0338", | |
NestedGreaterGreater: "\u226B", | |
NestedLessLess: "\u226A", | |
NewLine: "\n", | |
nexist: "\u2204", | |
nexists: "\u2204", | |
Nfr: "\uD835\uDD11", | |
nfr: "\uD835\uDD2B", | |
ngE: "\u2267\u0338", | |
nge: "\u2271", | |
ngeq: "\u2271", | |
ngeqq: "\u2267\u0338", | |
ngeqslant: "\u2A7E\u0338", | |
nges: "\u2A7E\u0338", | |
nGg: "\u22D9\u0338", | |
ngsim: "\u2275", | |
nGt: "\u226B\u20D2", | |
ngt: "\u226F", | |
ngtr: "\u226F", | |
nGtv: "\u226B\u0338", | |
nharr: "\u21AE", | |
nhArr: "\u21CE", | |
nhpar: "\u2AF2", | |
ni: "\u220B", | |
nis: "\u22FC", | |
nisd: "\u22FA", | |
niv: "\u220B", | |
NJcy: "\u040A", | |
njcy: "\u045A", | |
nlarr: "\u219A", | |
nlArr: "\u21CD", | |
nldr: "\u2025", | |
nlE: "\u2266\u0338", | |
nle: "\u2270", | |
nleftarrow: "\u219A", | |
nLeftarrow: "\u21CD", | |
nleftrightarrow: "\u21AE", | |
nLeftrightarrow: "\u21CE", | |
nleq: "\u2270", | |
nleqq: "\u2266\u0338", | |
nleqslant: "\u2A7D\u0338", | |
nles: "\u2A7D\u0338", | |
nless: "\u226E", | |
nLl: "\u22D8\u0338", | |
nlsim: "\u2274", | |
nLt: "\u226A\u20D2", | |
nlt: "\u226E", | |
nltri: "\u22EA", | |
nltrie: "\u22EC", | |
nLtv: "\u226A\u0338", | |
nmid: "\u2224", | |
NoBreak: "\u2060", | |
NonBreakingSpace: "\u00A0", | |
nopf: "\uD835\uDD5F", | |
Nopf: "\u2115", | |
Not: "\u2AEC", | |
not: "\u00AC", | |
NotCongruent: "\u2262", | |
NotCupCap: "\u226D", | |
NotDoubleVerticalBar: "\u2226", | |
NotElement: "\u2209", | |
NotEqual: "\u2260", | |
NotEqualTilde: "\u2242\u0338", | |
NotExists: "\u2204", | |
NotGreater: "\u226F", | |
NotGreaterEqual: "\u2271", | |
NotGreaterFullEqual: "\u2267\u0338", | |
NotGreaterGreater: "\u226B\u0338", | |
NotGreaterLess: "\u2279", | |
NotGreaterSlantEqual: "\u2A7E\u0338", | |
NotGreaterTilde: "\u2275", | |
NotHumpDownHump: "\u224E\u0338", | |
NotHumpEqual: "\u224F\u0338", | |
notin: "\u2209", | |
notindot: "\u22F5\u0338", | |
notinE: "\u22F9\u0338", | |
notinva: "\u2209", | |
notinvb: "\u22F7", | |
notinvc: "\u22F6", | |
NotLeftTriangleBar: "\u29CF\u0338", | |
NotLeftTriangle: "\u22EA", | |
NotLeftTriangleEqual: "\u22EC", | |
NotLess: "\u226E", | |
NotLessEqual: "\u2270", | |
NotLessGreater: "\u2278", | |
NotLessLess: "\u226A\u0338", | |
NotLessSlantEqual: "\u2A7D\u0338", | |
NotLessTilde: "\u2274", | |
NotNestedGreaterGreater: "\u2AA2\u0338", | |
NotNestedLessLess: "\u2AA1\u0338", | |
notni: "\u220C", | |
notniva: "\u220C", | |
notnivb: "\u22FE", | |
notnivc: "\u22FD", | |
NotPrecedes: "\u2280", | |
NotPrecedesEqual: "\u2AAF\u0338", | |
NotPrecedesSlantEqual: "\u22E0", | |
NotReverseElement: "\u220C", | |
NotRightTriangleBar: "\u29D0\u0338", | |
NotRightTriangle: "\u22EB", | |
NotRightTriangleEqual: "\u22ED", | |
NotSquareSubset: "\u228F\u0338", | |
NotSquareSubsetEqual: "\u22E2", | |
NotSquareSuperset: "\u2290\u0338", | |
NotSquareSupersetEqual: "\u22E3", | |
NotSubset: "\u2282\u20D2", | |
NotSubsetEqual: "\u2288", | |
NotSucceeds: "\u2281", | |
NotSucceedsEqual: "\u2AB0\u0338", | |
NotSucceedsSlantEqual: "\u22E1", | |
NotSucceedsTilde: "\u227F\u0338", | |
NotSuperset: "\u2283\u20D2", | |
NotSupersetEqual: "\u2289", | |
NotTilde: "\u2241", | |
NotTildeEqual: "\u2244", | |
NotTildeFullEqual: "\u2247", | |
NotTildeTilde: "\u2249", | |
NotVerticalBar: "\u2224", | |
nparallel: "\u2226", | |
npar: "\u2226", | |
nparsl: "\u2AFD\u20E5", | |
npart: "\u2202\u0338", | |
npolint: "\u2A14", | |
npr: "\u2280", | |
nprcue: "\u22E0", | |
nprec: "\u2280", | |
npreceq: "\u2AAF\u0338", | |
npre: "\u2AAF\u0338", | |
nrarrc: "\u2933\u0338", | |
nrarr: "\u219B", | |
nrArr: "\u21CF", | |
nrarrw: "\u219D\u0338", | |
nrightarrow: "\u219B", | |
nRightarrow: "\u21CF", | |
nrtri: "\u22EB", | |
nrtrie: "\u22ED", | |
nsc: "\u2281", | |
nsccue: "\u22E1", | |
nsce: "\u2AB0\u0338", | |
Nscr: "\uD835\uDCA9", | |
nscr: "\uD835\uDCC3", | |
nshortmid: "\u2224", | |
nshortparallel: "\u2226", | |
nsim: "\u2241", | |
nsime: "\u2244", | |
nsimeq: "\u2244", | |
nsmid: "\u2224", | |
nspar: "\u2226", | |
nsqsube: "\u22E2", | |
nsqsupe: "\u22E3", | |
nsub: "\u2284", | |
nsubE: "\u2AC5\u0338", | |
nsube: "\u2288", | |
nsubset: "\u2282\u20D2", | |
nsubseteq: "\u2288", | |
nsubseteqq: "\u2AC5\u0338", | |
nsucc: "\u2281", | |
nsucceq: "\u2AB0\u0338", | |
nsup: "\u2285", | |
nsupE: "\u2AC6\u0338", | |
nsupe: "\u2289", | |
nsupset: "\u2283\u20D2", | |
nsupseteq: "\u2289", | |
nsupseteqq: "\u2AC6\u0338", | |
ntgl: "\u2279", | |
Ntilde: "\u00D1", | |
ntilde: "\u00F1", | |
ntlg: "\u2278", | |
ntriangleleft: "\u22EA", | |
ntrianglelefteq: "\u22EC", | |
ntriangleright: "\u22EB", | |
ntrianglerighteq: "\u22ED", | |
Nu: "\u039D", | |
nu: "\u03BD", | |
num: "#", | |
numero: "\u2116", | |
numsp: "\u2007", | |
nvap: "\u224D\u20D2", | |
nvdash: "\u22AC", | |
nvDash: "\u22AD", | |
nVdash: "\u22AE", | |
nVDash: "\u22AF", | |
nvge: "\u2265\u20D2", | |
nvgt: ">\u20D2", | |
nvHarr: "\u2904", | |
nvinfin: "\u29DE", | |
nvlArr: "\u2902", | |
nvle: "\u2264\u20D2", | |
nvlt: "<\u20D2", | |
nvltrie: "\u22B4\u20D2", | |
nvrArr: "\u2903", | |
nvrtrie: "\u22B5\u20D2", | |
nvsim: "\u223C\u20D2", | |
nwarhk: "\u2923", | |
nwarr: "\u2196", | |
nwArr: "\u21D6", | |
nwarrow: "\u2196", | |
nwnear: "\u2927", | |
Oacute: "\u00D3", | |
oacute: "\u00F3", | |
oast: "\u229B", | |
Ocirc: "\u00D4", | |
ocirc: "\u00F4", | |
ocir: "\u229A", | |
Ocy: "\u041E", | |
ocy: "\u043E", | |
odash: "\u229D", | |
Odblac: "\u0150", | |
odblac: "\u0151", | |
odiv: "\u2A38", | |
odot: "\u2299", | |
odsold: "\u29BC", | |
OElig: "\u0152", | |
oelig: "\u0153", | |
ofcir: "\u29BF", | |
Ofr: "\uD835\uDD12", | |
ofr: "\uD835\uDD2C", | |
ogon: "\u02DB", | |
Ograve: "\u00D2", | |
ograve: "\u00F2", | |
ogt: "\u29C1", | |
ohbar: "\u29B5", | |
ohm: "\u03A9", | |
oint: "\u222E", | |
olarr: "\u21BA", | |
olcir: "\u29BE", | |
olcross: "\u29BB", | |
oline: "\u203E", | |
olt: "\u29C0", | |
Omacr: "\u014C", | |
omacr: "\u014D", | |
Omega: "\u03A9", | |
omega: "\u03C9", | |
Omicron: "\u039F", | |
omicron: "\u03BF", | |
omid: "\u29B6", | |
ominus: "\u2296", | |
Oopf: "\uD835\uDD46", | |
oopf: "\uD835\uDD60", | |
opar: "\u29B7", | |
OpenCurlyDoubleQuote: "\u201C", | |
OpenCurlyQuote: "\u2018", | |
operp: "\u29B9", | |
oplus: "\u2295", | |
orarr: "\u21BB", | |
Or: "\u2A54", | |
or: "\u2228", | |
ord: "\u2A5D", | |
order: "\u2134", | |
orderof: "\u2134", | |
ordf: "\u00AA", | |
ordm: "\u00BA", | |
origof: "\u22B6", | |
oror: "\u2A56", | |
orslope: "\u2A57", | |
orv: "\u2A5B", | |
oS: "\u24C8", | |
Oscr: "\uD835\uDCAA", | |
oscr: "\u2134", | |
Oslash: "\u00D8", | |
oslash: "\u00F8", | |
osol: "\u2298", | |
Otilde: "\u00D5", | |
otilde: "\u00F5", | |
otimesas: "\u2A36", | |
Otimes: "\u2A37", | |
otimes: "\u2297", | |
Ouml: "\u00D6", | |
ouml: "\u00F6", | |
ovbar: "\u233D", | |
OverBar: "\u203E", | |
OverBrace: "\u23DE", | |
OverBracket: "\u23B4", | |
OverParenthesis: "\u23DC", | |
para: "\u00B6", | |
parallel: "\u2225", | |
par: "\u2225", | |
parsim: "\u2AF3", | |
parsl: "\u2AFD", | |
part: "\u2202", | |
PartialD: "\u2202", | |
Pcy: "\u041F", | |
pcy: "\u043F", | |
percnt: "%", | |
period: ".", | |
permil: "\u2030", | |
perp: "\u22A5", | |
pertenk: "\u2031", | |
Pfr: "\uD835\uDD13", | |
pfr: "\uD835\uDD2D", | |
Phi: "\u03A6", | |
phi: "\u03C6", | |
phiv: "\u03D5", | |
phmmat: "\u2133", | |
phone: "\u260E", | |
Pi: "\u03A0", | |
pi: "\u03C0", | |
pitchfork: "\u22D4", | |
piv: "\u03D6", | |
planck: "\u210F", | |
planckh: "\u210E", | |
plankv: "\u210F", | |
plusacir: "\u2A23", | |
plusb: "\u229E", | |
pluscir: "\u2A22", | |
plus: "+", | |
plusdo: "\u2214", | |
plusdu: "\u2A25", | |
pluse: "\u2A72", | |
PlusMinus: "\u00B1", | |
plusmn: "\u00B1", | |
plussim: "\u2A26", | |
plustwo: "\u2A27", | |
pm: "\u00B1", | |
Poincareplane: "\u210C", | |
pointint: "\u2A15", | |
popf: "\uD835\uDD61", | |
Popf: "\u2119", | |
pound: "\u00A3", | |
prap: "\u2AB7", | |
Pr: "\u2ABB", | |
pr: "\u227A", | |
prcue: "\u227C", | |
precapprox: "\u2AB7", | |
prec: "\u227A", | |
preccurlyeq: "\u227C", | |
Precedes: "\u227A", | |
PrecedesEqual: "\u2AAF", | |
PrecedesSlantEqual: "\u227C", | |
PrecedesTilde: "\u227E", | |
preceq: "\u2AAF", | |
precnapprox: "\u2AB9", | |
precneqq: "\u2AB5", | |
precnsim: "\u22E8", | |
pre: "\u2AAF", | |
prE: "\u2AB3", | |
precsim: "\u227E", | |
prime: "\u2032", | |
Prime: "\u2033", | |
primes: "\u2119", | |
prnap: "\u2AB9", | |
prnE: "\u2AB5", | |
prnsim: "\u22E8", | |
prod: "\u220F", | |
Product: "\u220F", | |
profalar: "\u232E", | |
profline: "\u2312", | |
profsurf: "\u2313", | |
prop: "\u221D", | |
Proportional: "\u221D", | |
Proportion: "\u2237", | |
propto: "\u221D", | |
prsim: "\u227E", | |
prurel: "\u22B0", | |
Pscr: "\uD835\uDCAB", | |
pscr: "\uD835\uDCC5", | |
Psi: "\u03A8", | |
psi: "\u03C8", | |
puncsp: "\u2008", | |
Qfr: "\uD835\uDD14", | |
qfr: "\uD835\uDD2E", | |
qint: "\u2A0C", | |
qopf: "\uD835\uDD62", | |
Qopf: "\u211A", | |
qprime: "\u2057", | |
Qscr: "\uD835\uDCAC", | |
qscr: "\uD835\uDCC6", | |
quaternions: "\u210D", | |
quatint: "\u2A16", | |
quest: "?", | |
questeq: "\u225F", | |
quot: '"', | |
QUOT: '"', | |
rAarr: "\u21DB", | |
race: "\u223D\u0331", | |
Racute: "\u0154", | |
racute: "\u0155", | |
radic: "\u221A", | |
raemptyv: "\u29B3", | |
rang: "\u27E9", | |
Rang: "\u27EB", | |
rangd: "\u2992", | |
range: "\u29A5", | |
rangle: "\u27E9", | |
raquo: "\u00BB", | |
rarrap: "\u2975", | |
rarrb: "\u21E5", | |
rarrbfs: "\u2920", | |
rarrc: "\u2933", | |
rarr: "\u2192", | |
Rarr: "\u21A0", | |
rArr: "\u21D2", | |
rarrfs: "\u291E", | |
rarrhk: "\u21AA", | |
rarrlp: "\u21AC", | |
rarrpl: "\u2945", | |
rarrsim: "\u2974", | |
Rarrtl: "\u2916", | |
rarrtl: "\u21A3", | |
rarrw: "\u219D", | |
ratail: "\u291A", | |
rAtail: "\u291C", | |
ratio: "\u2236", | |
rationals: "\u211A", | |
rbarr: "\u290D", | |
rBarr: "\u290F", | |
RBarr: "\u2910", | |
rbbrk: "\u2773", | |
rbrace: "}", | |
rbrack: "]", | |
rbrke: "\u298C", | |
rbrksld: "\u298E", | |
rbrkslu: "\u2990", | |
Rcaron: "\u0158", | |
rcaron: "\u0159", | |
Rcedil: "\u0156", | |
rcedil: "\u0157", | |
rceil: "\u2309", | |
rcub: "}", | |
Rcy: "\u0420", | |
rcy: "\u0440", | |
rdca: "\u2937", | |
rdldhar: "\u2969", | |
rdquo: "\u201D", | |
rdquor: "\u201D", | |
rdsh: "\u21B3", | |
real: "\u211C", | |
realine: "\u211B", | |
realpart: "\u211C", | |
reals: "\u211D", | |
Re: "\u211C", | |
rect: "\u25AD", | |
reg: "\u00AE", | |
REG: "\u00AE", | |
ReverseElement: "\u220B", | |
ReverseEquilibrium: "\u21CB", | |
ReverseUpEquilibrium: "\u296F", | |
rfisht: "\u297D", | |
rfloor: "\u230B", | |
rfr: "\uD835\uDD2F", | |
Rfr: "\u211C", | |
rHar: "\u2964", | |
rhard: "\u21C1", | |
rharu: "\u21C0", | |
rharul: "\u296C", | |
Rho: "\u03A1", | |
rho: "\u03C1", | |
rhov: "\u03F1", | |
RightAngleBracket: "\u27E9", | |
RightArrowBar: "\u21E5", | |
rightarrow: "\u2192", | |
RightArrow: "\u2192", | |
Rightarrow: "\u21D2", | |
RightArrowLeftArrow: "\u21C4", | |
rightarrowtail: "\u21A3", | |
RightCeiling: "\u2309", | |
RightDoubleBracket: "\u27E7", | |
RightDownTeeVector: "\u295D", | |
RightDownVectorBar: "\u2955", | |
RightDownVector: "\u21C2", | |
RightFloor: "\u230B", | |
rightharpoondown: "\u21C1", | |
rightharpoonup: "\u21C0", | |
rightleftarrows: "\u21C4", | |
rightleftharpoons: "\u21CC", | |
rightrightarrows: "\u21C9", | |
rightsquigarrow: "\u219D", | |
RightTeeArrow: "\u21A6", | |
RightTee: "\u22A2", | |
RightTeeVector: "\u295B", | |
rightthreetimes: "\u22CC", | |
RightTriangleBar: "\u29D0", | |
RightTriangle: "\u22B3", | |
RightTriangleEqual: "\u22B5", | |
RightUpDownVector: "\u294F", | |
RightUpTeeVector: "\u295C", | |
RightUpVectorBar: "\u2954", | |
RightUpVector: "\u21BE", | |
RightVectorBar: "\u2953", | |
RightVector: "\u21C0", | |
ring: "\u02DA", | |
risingdotseq: "\u2253", | |
rlarr: "\u21C4", | |
rlhar: "\u21CC", | |
rlm: "\u200F", | |
rmoustache: "\u23B1", | |
rmoust: "\u23B1", | |
rnmid: "\u2AEE", | |
roang: "\u27ED", | |
roarr: "\u21FE", | |
robrk: "\u27E7", | |
ropar: "\u2986", | |
ropf: "\uD835\uDD63", | |
Ropf: "\u211D", | |
roplus: "\u2A2E", | |
rotimes: "\u2A35", | |
RoundImplies: "\u2970", | |
rpar: ")", | |
rpargt: "\u2994", | |
rppolint: "\u2A12", | |
rrarr: "\u21C9", | |
Rrightarrow: "\u21DB", | |
rsaquo: "\u203A", | |
rscr: "\uD835\uDCC7", | |
Rscr: "\u211B", | |
rsh: "\u21B1", | |
Rsh: "\u21B1", | |
rsqb: "]", | |
rsquo: "\u2019", | |
rsquor: "\u2019", | |
rthree: "\u22CC", | |
rtimes: "\u22CA", | |
rtri: "\u25B9", | |
rtrie: "\u22B5", | |
rtrif: "\u25B8", | |
rtriltri: "\u29CE", | |
RuleDelayed: "\u29F4", | |
ruluhar: "\u2968", | |
rx: "\u211E", | |
Sacute: "\u015A", | |
sacute: "\u015B", | |
sbquo: "\u201A", | |
scap: "\u2AB8", | |
Scaron: "\u0160", | |
scaron: "\u0161", | |
Sc: "\u2ABC", | |
sc: "\u227B", | |
sccue: "\u227D", | |
sce: "\u2AB0", | |
scE: "\u2AB4", | |
Scedil: "\u015E", | |
scedil: "\u015F", | |
Scirc: "\u015C", | |
scirc: "\u015D", | |
scnap: "\u2ABA", | |
scnE: "\u2AB6", | |
scnsim: "\u22E9", | |
scpolint: "\u2A13", | |
scsim: "\u227F", | |
Scy: "\u0421", | |
scy: "\u0441", | |
sdotb: "\u22A1", | |
sdot: "\u22C5", | |
sdote: "\u2A66", | |
searhk: "\u2925", | |
searr: "\u2198", | |
seArr: "\u21D8", | |
searrow: "\u2198", | |
sect: "\u00A7", | |
semi: ";", | |
seswar: "\u2929", | |
setminus: "\u2216", | |
setmn: "\u2216", | |
sext: "\u2736", | |
Sfr: "\uD835\uDD16", | |
sfr: "\uD835\uDD30", | |
sfrown: "\u2322", | |
sharp: "\u266F", | |
SHCHcy: "\u0429", | |
shchcy: "\u0449", | |
SHcy: "\u0428", | |
shcy: "\u0448", | |
ShortDownArrow: "\u2193", | |
ShortLeftArrow: "\u2190", | |
shortmid: "\u2223", | |
shortparallel: "\u2225", | |
ShortRightArrow: "\u2192", | |
ShortUpArrow: "\u2191", | |
shy: "\u00AD", | |
Sigma: "\u03A3", | |
sigma: "\u03C3", | |
sigmaf: "\u03C2", | |
sigmav: "\u03C2", | |
sim: "\u223C", | |
simdot: "\u2A6A", | |
sime: "\u2243", | |
simeq: "\u2243", | |
simg: "\u2A9E", | |
simgE: "\u2AA0", | |
siml: "\u2A9D", | |
simlE: "\u2A9F", | |
simne: "\u2246", | |
simplus: "\u2A24", | |
simrarr: "\u2972", | |
slarr: "\u2190", | |
SmallCircle: "\u2218", | |
smallsetminus: "\u2216", | |
smashp: "\u2A33", | |
smeparsl: "\u29E4", | |
smid: "\u2223", | |
smile: "\u2323", | |
smt: "\u2AAA", | |
smte: "\u2AAC", | |
smtes: "\u2AAC\uFE00", | |
SOFTcy: "\u042C", | |
softcy: "\u044C", | |
solbar: "\u233F", | |
solb: "\u29C4", | |
sol: "/", | |
Sopf: "\uD835\uDD4A", | |
sopf: "\uD835\uDD64", | |
spades: "\u2660", | |
spadesuit: "\u2660", | |
spar: "\u2225", | |
sqcap: "\u2293", | |
sqcaps: "\u2293\uFE00", | |
sqcup: "\u2294", | |
sqcups: "\u2294\uFE00", | |
Sqrt: "\u221A", | |
sqsub: "\u228F", | |
sqsube: "\u2291", | |
sqsubset: "\u228F", | |
sqsubseteq: "\u2291", | |
sqsup: "\u2290", | |
sqsupe: "\u2292", | |
sqsupset: "\u2290", | |
sqsupseteq: "\u2292", | |
square: "\u25A1", | |
Square: "\u25A1", | |
SquareIntersection: "\u2293", | |
SquareSubset: "\u228F", | |
SquareSubsetEqual: "\u2291", | |
SquareSuperset: "\u2290", | |
SquareSupersetEqual: "\u2292", | |
SquareUnion: "\u2294", | |
squarf: "\u25AA", | |
squ: "\u25A1", | |
squf: "\u25AA", | |
srarr: "\u2192", | |
Sscr: "\uD835\uDCAE", | |
sscr: "\uD835\uDCC8", | |
ssetmn: "\u2216", | |
ssmile: "\u2323", | |
sstarf: "\u22C6", | |
Star: "\u22C6", | |
star: "\u2606", | |
starf: "\u2605", | |
straightepsilon: "\u03F5", | |
straightphi: "\u03D5", | |
strns: "\u00AF", | |
sub: "\u2282", | |
Sub: "\u22D0", | |
subdot: "\u2ABD", | |
subE: "\u2AC5", | |
sube: "\u2286", | |
subedot: "\u2AC3", | |
submult: "\u2AC1", | |
subnE: "\u2ACB", | |
subne: "\u228A", | |
subplus: "\u2ABF", | |
subrarr: "\u2979", | |
subset: "\u2282", | |
Subset: "\u22D0", | |
subseteq: "\u2286", | |
subseteqq: "\u2AC5", | |
SubsetEqual: "\u2286", | |
subsetneq: "\u228A", | |
subsetneqq: "\u2ACB", | |
subsim: "\u2AC7", | |
subsub: "\u2AD5", | |
subsup: "\u2AD3", | |
succapprox: "\u2AB8", | |
succ: "\u227B", | |
succcurlyeq: "\u227D", | |
Succeeds: "\u227B", | |
SucceedsEqual: "\u2AB0", | |
SucceedsSlantEqual: "\u227D", | |
SucceedsTilde: "\u227F", | |
succeq: "\u2AB0", | |
succnapprox: "\u2ABA", | |
succneqq: "\u2AB6", | |
succnsim: "\u22E9", | |
succsim: "\u227F", | |
SuchThat: "\u220B", | |
sum: "\u2211", | |
Sum: "\u2211", | |
sung: "\u266A", | |
sup1: "\u00B9", | |
sup2: "\u00B2", | |
sup3: "\u00B3", | |
sup: "\u2283", | |
Sup: "\u22D1", | |
supdot: "\u2ABE", | |
supdsub: "\u2AD8", | |
supE: "\u2AC6", | |
supe: "\u2287", | |
supedot: "\u2AC4", | |
Superset: "\u2283", | |
SupersetEqual: "\u2287", | |
suphsol: "\u27C9", | |
suphsub: "\u2AD7", | |
suplarr: "\u297B", | |
supmult: "\u2AC2", | |
supnE: "\u2ACC", | |
supne: "\u228B", | |
supplus: "\u2AC0", | |
supset: "\u2283", | |
Supset: "\u22D1", | |
supseteq: "\u2287", | |
supseteqq: "\u2AC6", | |
supsetneq: "\u228B", | |
supsetneqq: "\u2ACC", | |
supsim: "\u2AC8", | |
supsub: "\u2AD4", | |
supsup: "\u2AD6", | |
swarhk: "\u2926", | |
swarr: "\u2199", | |
swArr: "\u21D9", | |
swarrow: "\u2199", | |
swnwar: "\u292A", | |
szlig: "\u00DF", | |
Tab: "\t", | |
target: "\u2316", | |
Tau: "\u03A4", | |
tau: "\u03C4", | |
tbrk: "\u23B4", | |
Tcaron: "\u0164", | |
tcaron: "\u0165", | |
Tcedil: "\u0162", | |
tcedil: "\u0163", | |
Tcy: "\u0422", | |
tcy: "\u0442", | |
tdot: "\u20DB", | |
telrec: "\u2315", | |
Tfr: "\uD835\uDD17", | |
tfr: "\uD835\uDD31", | |
there4: "\u2234", | |
therefore: "\u2234", | |
Therefore: "\u2234", | |
Theta: "\u0398", | |
theta: "\u03B8", | |
thetasym: "\u03D1", | |
thetav: "\u03D1", | |
thickapprox: "\u2248", | |
thicksim: "\u223C", | |
ThickSpace: "\u205F\u200A", | |
ThinSpace: "\u2009", | |
thinsp: "\u2009", | |
thkap: "\u2248", | |
thksim: "\u223C", | |
THORN: "\u00DE", | |
thorn: "\u00FE", | |
tilde: "\u02DC", | |
Tilde: "\u223C", | |
TildeEqual: "\u2243", | |
TildeFullEqual: "\u2245", | |
TildeTilde: "\u2248", | |
timesbar: "\u2A31", | |
timesb: "\u22A0", | |
times: "\u00D7", | |
timesd: "\u2A30", | |
tint: "\u222D", | |
toea: "\u2928", | |
topbot: "\u2336", | |
topcir: "\u2AF1", | |
top: "\u22A4", | |
Topf: "\uD835\uDD4B", | |
topf: "\uD835\uDD65", | |
topfork: "\u2ADA", | |
tosa: "\u2929", | |
tprime: "\u2034", | |
trade: "\u2122", | |
TRADE: "\u2122", | |
triangle: "\u25B5", | |
triangledown: "\u25BF", | |
triangleleft: "\u25C3", | |
trianglelefteq: "\u22B4", | |
triangleq: "\u225C", | |
triangleright: "\u25B9", | |
trianglerighteq: "\u22B5", | |
tridot: "\u25EC", | |
trie: "\u225C", | |
triminus: "\u2A3A", | |
TripleDot: "\u20DB", | |
triplus: "\u2A39", | |
trisb: "\u29CD", | |
tritime: "\u2A3B", | |
trpezium: "\u23E2", | |
Tscr: "\uD835\uDCAF", | |
tscr: "\uD835\uDCC9", | |
TScy: "\u0426", | |
tscy: "\u0446", | |
TSHcy: "\u040B", | |
tshcy: "\u045B", | |
Tstrok: "\u0166", | |
tstrok: "\u0167", | |
twixt: "\u226C", | |
twoheadleftarrow: "\u219E", | |
twoheadrightarrow: "\u21A0", | |
Uacute: "\u00DA", | |
uacute: "\u00FA", | |
uarr: "\u2191", | |
Uarr: "\u219F", | |
uArr: "\u21D1", | |
Uarrocir: "\u2949", | |
Ubrcy: "\u040E", | |
ubrcy: "\u045E", | |
Ubreve: "\u016C", | |
ubreve: "\u016D", | |
Ucirc: "\u00DB", | |
ucirc: "\u00FB", | |
Ucy: "\u0423", | |
ucy: "\u0443", | |
udarr: "\u21C5", | |
Udblac: "\u0170", | |
udblac: "\u0171", | |
udhar: "\u296E", | |
ufisht: "\u297E", | |
Ufr: "\uD835\uDD18", | |
ufr: "\uD835\uDD32", | |
Ugrave: "\u00D9", | |
ugrave: "\u00F9", | |
uHar: "\u2963", | |
uharl: "\u21BF", | |
uharr: "\u21BE", | |
uhblk: "\u2580", | |
ulcorn: "\u231C", | |
ulcorner: "\u231C", | |
ulcrop: "\u230F", | |
ultri: "\u25F8", | |
Umacr: "\u016A", | |
umacr: "\u016B", | |
uml: "\u00A8", | |
UnderBar: "_", | |
UnderBrace: "\u23DF", | |
UnderBracket: "\u23B5", | |
UnderParenthesis: "\u23DD", | |
Union: "\u22C3", | |
UnionPlus: "\u228E", | |
Uogon: "\u0172", | |
uogon: "\u0173", | |
Uopf: "\uD835\uDD4C", | |
uopf: "\uD835\uDD66", | |
UpArrowBar: "\u2912", | |
uparrow: "\u2191", | |
UpArrow: "\u2191", | |
Uparrow: "\u21D1", | |
UpArrowDownArrow: "\u21C5", | |
updownarrow: "\u2195", | |
UpDownArrow: "\u2195", | |
Updownarrow: "\u21D5", | |
UpEquilibrium: "\u296E", | |
upharpoonleft: "\u21BF", | |
upharpoonright: "\u21BE", | |
uplus: "\u228E", | |
UpperLeftArrow: "\u2196", | |
UpperRightArrow: "\u2197", | |
upsi: "\u03C5", | |
Upsi: "\u03D2", | |
upsih: "\u03D2", | |
Upsilon: "\u03A5", | |
upsilon: "\u03C5", | |
UpTeeArrow: "\u21A5", | |
UpTee: "\u22A5", | |
upuparrows: "\u21C8", | |
urcorn: "\u231D", | |
urcorner: "\u231D", | |
urcrop: "\u230E", | |
Uring: "\u016E", | |
uring: "\u016F", | |
urtri: "\u25F9", | |
Uscr: "\uD835\uDCB0", | |
uscr: "\uD835\uDCCA", | |
utdot: "\u22F0", | |
Utilde: "\u0168", | |
utilde: "\u0169", | |
utri: "\u25B5", | |
utrif: "\u25B4", | |
uuarr: "\u21C8", | |
Uuml: "\u00DC", | |
uuml: "\u00FC", | |
uwangle: "\u29A7", | |
vangrt: "\u299C", | |
varepsilon: "\u03F5", | |
varkappa: "\u03F0", | |
varnothing: "\u2205", | |
varphi: "\u03D5", | |
varpi: "\u03D6", | |
varpropto: "\u221D", | |
varr: "\u2195", | |
vArr: "\u21D5", | |
varrho: "\u03F1", | |
varsigma: "\u03C2", | |
varsubsetneq: "\u228A\uFE00", | |
varsubsetneqq: "\u2ACB\uFE00", | |
varsupsetneq: "\u228B\uFE00", | |
varsupsetneqq: "\u2ACC\uFE00", | |
vartheta: "\u03D1", | |
vartriangleleft: "\u22B2", | |
vartriangleright: "\u22B3", | |
vBar: "\u2AE8", | |
Vbar: "\u2AEB", | |
vBarv: "\u2AE9", | |
Vcy: "\u0412", | |
vcy: "\u0432", | |
vdash: "\u22A2", | |
vDash: "\u22A8", | |
Vdash: "\u22A9", | |
VDash: "\u22AB", | |
Vdashl: "\u2AE6", | |
veebar: "\u22BB", | |
vee: "\u2228", | |
Vee: "\u22C1", | |
veeeq: "\u225A", | |
vellip: "\u22EE", | |
verbar: "|", | |
Verbar: "\u2016", | |
vert: "|", | |
Vert: "\u2016", | |
VerticalBar: "\u2223", | |
VerticalLine: "|", | |
VerticalSeparator: "\u2758", | |
VerticalTilde: "\u2240", | |
VeryThinSpace: "\u200A", | |
Vfr: "\uD835\uDD19", | |
vfr: "\uD835\uDD33", | |
vltri: "\u22B2", | |
vnsub: "\u2282\u20D2", | |
vnsup: "\u2283\u20D2", | |
Vopf: "\uD835\uDD4D", | |
vopf: "\uD835\uDD67", | |
vprop: "\u221D", | |
vrtri: "\u22B3", | |
Vscr: "\uD835\uDCB1", | |
vscr: "\uD835\uDCCB", | |
vsubnE: "\u2ACB\uFE00", | |
vsubne: "\u228A\uFE00", | |
vsupnE: "\u2ACC\uFE00", | |
vsupne: "\u228B\uFE00", | |
Vvdash: "\u22AA", | |
vzigzag: "\u299A", | |
Wcirc: "\u0174", | |
wcirc: "\u0175", | |
wedbar: "\u2A5F", | |
wedge: "\u2227", | |
Wedge: "\u22C0", | |
wedgeq: "\u2259", | |
weierp: "\u2118", | |
Wfr: "\uD835\uDD1A", | |
wfr: "\uD835\uDD34", | |
Wopf: "\uD835\uDD4E", | |
wopf: "\uD835\uDD68", | |
wp: "\u2118", | |
wr: "\u2240", | |
wreath: "\u2240", | |
Wscr: "\uD835\uDCB2", | |
wscr: "\uD835\uDCCC", | |
xcap: "\u22C2", | |
xcirc: "\u25EF", | |
xcup: "\u22C3", | |
xdtri: "\u25BD", | |
Xfr: "\uD835\uDD1B", | |
xfr: "\uD835\uDD35", | |
xharr: "\u27F7", | |
xhArr: "\u27FA", | |
Xi: "\u039E", | |
xi: "\u03BE", | |
xlarr: "\u27F5", | |
xlArr: "\u27F8", | |
xmap: "\u27FC", | |
xnis: "\u22FB", | |
xodot: "\u2A00", | |
Xopf: "\uD835\uDD4F", | |
xopf: "\uD835\uDD69", | |
xoplus: "\u2A01", | |
xotime: "\u2A02", | |
xrarr: "\u27F6", | |
xrArr: "\u27F9", | |
Xscr: "\uD835\uDCB3", | |
xscr: "\uD835\uDCCD", | |
xsqcup: "\u2A06", | |
xuplus: "\u2A04", | |
xutri: "\u25B3", | |
xvee: "\u22C1", | |
xwedge: "\u22C0", | |
Yacute: "\u00DD", | |
yacute: "\u00FD", | |
YAcy: "\u042F", | |
yacy: "\u044F", | |
Ycirc: "\u0176", | |
ycirc: "\u0177", | |
Ycy: "\u042B", | |
ycy: "\u044B", | |
yen: "\u00A5", | |
Yfr: "\uD835\uDD1C", | |
yfr: "\uD835\uDD36", | |
YIcy: "\u0407", | |
yicy: "\u0457", | |
Yopf: "\uD835\uDD50", | |
yopf: "\uD835\uDD6A", | |
Yscr: "\uD835\uDCB4", | |
yscr: "\uD835\uDCCE", | |
YUcy: "\u042E", | |
yucy: "\u044E", | |
yuml: "\u00FF", | |
Yuml: "\u0178", | |
Zacute: "\u0179", | |
zacute: "\u017A", | |
Zcaron: "\u017D", | |
zcaron: "\u017E", | |
Zcy: "\u0417", | |
zcy: "\u0437", | |
Zdot: "\u017B", | |
zdot: "\u017C", | |
zeetrf: "\u2128", | |
ZeroWidthSpace: "\u200B", | |
Zeta: "\u0396", | |
zeta: "\u03B6", | |
zfr: "\uD835\uDD37", | |
Zfr: "\u2128", | |
ZHcy: "\u0416", | |
zhcy: "\u0436", | |
zigrarr: "\u21DD", | |
zopf: "\uD835\uDD6B", | |
Zopf: "\u2124", | |
Zscr: "\uD835\uDCB5", | |
zscr: "\uD835\uDCCF", | |
zwj: "\u200D", | |
zwnj: "\u200C", | |
}; | |
}, | |
{}, | |
], | |
28: [ | |
function(require, module, exports) { | |
module.exports = { | |
Aacute: "\u00C1", | |
aacute: "\u00E1", | |
Acirc: "\u00C2", | |
acirc: "\u00E2", | |
acute: "\u00B4", | |
AElig: "\u00C6", | |
aelig: "\u00E6", | |
Agrave: "\u00C0", | |
agrave: "\u00E0", | |
amp: "&", | |
AMP: "&", | |
Aring: "\u00C5", | |
aring: "\u00E5", | |
Atilde: "\u00C3", | |
atilde: "\u00E3", | |
Auml: "\u00C4", | |
auml: "\u00E4", | |
brvbar: "\u00A6", | |
Ccedil: "\u00C7", | |
ccedil: "\u00E7", | |
cedil: "\u00B8", | |
cent: "\u00A2", | |
copy: "\u00A9", | |
COPY: "\u00A9", | |
curren: "\u00A4", | |
deg: "\u00B0", | |
divide: "\u00F7", | |
Eacute: "\u00C9", | |
eacute: "\u00E9", | |
Ecirc: "\u00CA", | |
ecirc: "\u00EA", | |
Egrave: "\u00C8", | |
egrave: "\u00E8", | |
ETH: "\u00D0", | |
eth: "\u00F0", | |
Euml: "\u00CB", | |
euml: "\u00EB", | |
frac12: "\u00BD", | |
frac14: "\u00BC", | |
frac34: "\u00BE", | |
gt: ">", | |
GT: ">", | |
Iacute: "\u00CD", | |
iacute: "\u00ED", | |
Icirc: "\u00CE", | |
icirc: "\u00EE", | |
iexcl: "\u00A1", | |
Igrave: "\u00CC", | |
igrave: "\u00EC", | |
iquest: "\u00BF", | |
Iuml: "\u00CF", | |
iuml: "\u00EF", | |
laquo: "\u00AB", | |
lt: "<", | |
LT: "<", | |
macr: "\u00AF", | |
micro: "\u00B5", | |
middot: "\u00B7", | |
nbsp: "\u00A0", | |
not: "\u00AC", | |
Ntilde: "\u00D1", | |
ntilde: "\u00F1", | |
Oacute: "\u00D3", | |
oacute: "\u00F3", | |
Ocirc: "\u00D4", | |
ocirc: "\u00F4", | |
Ograve: "\u00D2", | |
ograve: "\u00F2", | |
ordf: "\u00AA", | |
ordm: "\u00BA", | |
Oslash: "\u00D8", | |
oslash: "\u00F8", | |
Otilde: "\u00D5", | |
otilde: "\u00F5", | |
Ouml: "\u00D6", | |
ouml: "\u00F6", | |
para: "\u00B6", | |
plusmn: "\u00B1", | |
pound: "\u00A3", | |
quot: '"', | |
QUOT: '"', | |
raquo: "\u00BB", | |
reg: "\u00AE", | |
REG: "\u00AE", | |
sect: "\u00A7", | |
shy: "\u00AD", | |
sup1: "\u00B9", | |
sup2: "\u00B2", | |
sup3: "\u00B3", | |
szlig: "\u00DF", | |
THORN: "\u00DE", | |
thorn: "\u00FE", | |
times: "\u00D7", | |
Uacute: "\u00DA", | |
uacute: "\u00FA", | |
Ucirc: "\u00DB", | |
ucirc: "\u00FB", | |
Ugrave: "\u00D9", | |
ugrave: "\u00F9", | |
uml: "\u00A8", | |
Uuml: "\u00DC", | |
uuml: "\u00FC", | |
Yacute: "\u00DD", | |
yacute: "\u00FD", | |
yen: "\u00A5", | |
yuml: "\u00FF", | |
}; | |
}, | |
{}, | |
], | |
29: [ | |
function(require, module, exports) { | |
module.exports = { amp: "&", apos: "'", gt: ">", lt: "<", quot: '"' }; | |
}, | |
{}, | |
], | |
}, | |
{}, | |
[8], | |
)(8); | |
}); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<body> | |
<style> | |
:root { | |
color: #fff; | |
font-family: "Courier New", Courier, monospace; | |
} | |
* { | |
box-sizing: border-box; | |
} | |
body { | |
margin: 0; | |
width: 100vw; | |
min-height: 100vh; | |
overflow: hidden; | |
} | |
sink { | |
display: flex; | |
justify-content: space-between; | |
height: 8vh; | |
background: turquoise; | |
width: 100%; | |
padding: 1rem; | |
padding-left: 2rem; | |
} | |
sink h1 { | |
font-size: 1.2rem; | |
float: left; | |
} | |
button { | |
float: right; | |
top: 2rem; | |
right: 2rem; | |
background: inherit; | |
border: none; | |
padding: 0.5rem; | |
cursor: pointer; | |
color: rgb(0, 137, 200); | |
padding-left: 2rem; | |
border-left: 2px solid rgb(0, 137, 200); | |
} | |
button:hover { | |
color: white; | |
border-left: 2px solid white; | |
} | |
main { | |
width: 100%; | |
height: 92vh; | |
display: flex; | |
} | |
textarea, | |
output { | |
width: 50%; | |
height: 100%; | |
overflow: hidden; | |
font-size: 12px; | |
display: flex; | |
flex-direction: column; | |
border: none; | |
} | |
textarea { | |
resize: none; | |
padding: 2rem; | |
border: none; | |
margin: 0; | |
} | |
sink, | |
textarea, | |
hyper, | |
elements { | |
border: 2px solid #222; | |
} | |
textarea, | |
hyper, | |
elements { | |
color: white; | |
background: #000; | |
} | |
textarea, | |
hyper { | |
overflow: auto; | |
} | |
textarea, | |
hyper content { | |
white-space: pre; | |
} | |
hyper { | |
height: 90%; | |
} | |
elements { | |
height: 10%; | |
overflow: auto; | |
} | |
content { | |
display: block; | |
margin: 2rem; | |
} | |
</style> | |
<sink> | |
<h1>HTML to Hyperscript (mithril-toolset compatible)</h1> | |
<button onclick="copy('hyper content')">Copy Hyperscript</button> | |
</sink> | |
<main> | |
<textarea class="arrow">Type something here</textarea> | |
<output> | |
<hyper> | |
<content></content> | |
</hyper> | |
<elements> | |
<content></content> | |
</elements> | |
</output> | |
</main> | |
<script src="/htmlparser2.js"></script> | |
<script src="/compile.js"></script> | |
<script> | |
const input = document.querySelector("textarea"); | |
const output = document.querySelector("hyper content"); | |
const tags = document.querySelector("elements content"); | |
input.addEventListener("input", () => { | |
const content = input.value; | |
let out = ``; | |
const stream = { | |
write: (...chunk) => (out += chunk.join("")), | |
pop: () => (out = out.slice(0, -1)), | |
end: () => (output.textContent = out), | |
}; | |
const { elements } = window.compile(content, stream); | |
tags.textContent = [...elements].join(", "); | |
}); | |
function copy(query) { | |
const el = document.querySelector(query); | |
navigator.clipboard.writeText(el.textContent); | |
} | |
</script> | |
</body> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment