node-nlp
Version:
Library for NLU (Natural Language Understanding) done in Node.js
740 lines (737 loc) • 21.6 kB
JavaScript
var q = null;
window.PR_SHOULD_USE_CONTINUATION = !0;
(function() {
function L(a) {
function m(a) {
var f = a.charCodeAt(0);
if (f !== 92) return f;
var b = a.charAt(1);
return (f = r[b])
? f
: "0" <= b && b <= "7"
? parseInt(a.substring(1), 8)
: b === "u" || b === "x"
? parseInt(a.substring(2), 16)
: a.charCodeAt(1);
}
function e(a) {
if (a < 32) return (a < 16 ? "\\x0" : "\\x") + a.toString(16);
a = String.fromCharCode(a);
if (a === "\\" || a === "-" || a === "[" || a === "]") a = "\\" + a;
return a;
}
function h(a) {
for (
var f = a
.substring(1, a.length - 1)
.match(
/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g
),
a = [],
b = [],
o = f[0] === "^",
c = o ? 1 : 0,
i = f.length;
c < i;
++c
) {
var j = f[c];
if (/\\[bdsw]/i.test(j)) a.push(j);
else {
var j = m(j),
d;
c + 2 < i && "-" === f[c + 1]
? ((d = m(f[c + 2])), (c += 2))
: (d = j);
b.push([j, d]);
d < 65 ||
j > 122 ||
(d < 65 ||
j > 90 ||
b.push([Math.max(65, j) | 32, Math.min(d, 90) | 32]),
d < 97 ||
j > 122 ||
b.push([Math.max(97, j) & -33, Math.min(d, 122) & -33]));
}
}
b.sort(function(a, f) {
return a[0] - f[0] || f[1] - a[1];
});
f = [];
j = [NaN, NaN];
for (c = 0; c < b.length; ++c)
(i = b[c]),
i[0] <= j[1] + 1 ? (j[1] = Math.max(j[1], i[1])) : f.push((j = i));
b = ["["];
o && b.push("^");
b.push.apply(b, a);
for (c = 0; c < f.length; ++c)
(i = f[c]),
b.push(e(i[0])),
i[1] > i[0] && (i[1] + 1 > i[0] && b.push("-"), b.push(e(i[1])));
b.push("]");
return b.join("");
}
function y(a) {
for (
var f = a.source.match(
/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g
),
b = f.length,
d = [],
c = 0,
i = 0;
c < b;
++c
) {
var j = f[c];
j === "("
? ++i
: "\\" === j.charAt(0) &&
(j = +j.substring(1)) &&
j <= i &&
(d[j] = -1);
}
for (c = 1; c < d.length; ++c) -1 === d[c] && (d[c] = ++t);
for (i = c = 0; c < b; ++c)
(j = f[c]),
j === "("
? (++i, d[i] === void 0 && (f[c] = "(?:"))
: "\\" === j.charAt(0) &&
(j = +j.substring(1)) &&
j <= i &&
(f[c] = "\\" + d[i]);
for (i = c = 0; c < b; ++c)
"^" === f[c] && "^" !== f[c + 1] && (f[c] = "");
if (a.ignoreCase && s)
for (c = 0; c < b; ++c)
(j = f[c]),
(a = j.charAt(0)),
j.length >= 2 && a === "["
? (f[c] = h(j))
: a !== "\\" &&
(f[c] = j.replace(/[A-Za-z]/g, function(a) {
a = a.charCodeAt(0);
return "[" + String.fromCharCode(a & -33, a | 32) + "]";
}));
return f.join("");
}
for (var t = 0, s = !1, l = !1, p = 0, d = a.length; p < d; ++p) {
var g = a[p];
if (g.ignoreCase) l = !0;
else if (
/[a-z]/i.test(
g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi, "")
)
) {
s = !0;
l = !1;
break;
}
}
for (
var r = { b: 8, t: 9, n: 10, v: 11, f: 12, r: 13 },
n = [],
p = 0,
d = a.length;
p < d;
++p
) {
g = a[p];
if (g.global || g.multiline) throw Error("" + g);
n.push("(?:" + y(g) + ")");
}
return RegExp(n.join("|"), l ? "gi" : "g");
}
function M(a) {
function m(a) {
switch (a.nodeType) {
case 1:
if (e.test(a.className)) break;
for (var g = a.firstChild; g; g = g.nextSibling) m(g);
g = a.nodeName;
if ("BR" === g || "LI" === g)
(h[s] = "\n"), (t[s << 1] = y++), (t[(s++ << 1) | 1] = a);
break;
case 3:
case 4:
(g = a.nodeValue),
g.length &&
((g = p
? g.replace(/\r\n?/g, "\n")
: g.replace(/[\t\n\r ]+/g, " ")),
(h[s] = g),
(t[s << 1] = y),
(y += g.length),
(t[(s++ << 1) | 1] = a));
}
}
var e = /(?:^|\s)nocode(?:\s|$)/,
h = [],
y = 0,
t = [],
s = 0,
l;
a.currentStyle
? (l = a.currentStyle.whiteSpace)
: window.getComputedStyle &&
(l = document.defaultView
.getComputedStyle(a, q)
.getPropertyValue("white-space"));
var p = l && "pre" === l.substring(0, 3);
m(a);
return { a: h.join("").replace(/\n$/, ""), c: t };
}
function B(a, m, e, h) {
m && ((a = { a: m, d: a }), e(a), h.push.apply(h, a.e));
}
function x(a, m) {
function e(a) {
for (
var l = a.d,
p = [l, "pln"],
d = 0,
g = a.a.match(y) || [],
r = {},
n = 0,
z = g.length;
n < z;
++n
) {
var f = g[n],
b = r[f],
o = void 0,
c;
if (typeof b === "string") c = !1;
else {
var i = h[f.charAt(0)];
if (i) (o = f.match(i[1])), (b = i[0]);
else {
for (c = 0; c < t; ++c)
if (((i = m[c]), (o = f.match(i[1])))) {
b = i[0];
break;
}
o || (b = "pln");
}
if (
(c = b.length >= 5 && "lang-" === b.substring(0, 5)) &&
!(o && typeof o[1] === "string")
)
(c = !1), (b = "src");
c || (r[f] = b);
}
i = d;
d += f.length;
if (c) {
c = o[1];
var j = f.indexOf(c),
k = j + c.length;
o[2] && ((k = f.length - o[2].length), (j = k - c.length));
b = b.substring(5);
B(l + i, f.substring(0, j), e, p);
B(l + i + j, c, C(b, c), p);
B(l + i + k, f.substring(k), e, p);
} else p.push(l + i, b);
}
a.e = p;
}
var h = {},
y;
(function() {
for (
var e = a.concat(m), l = [], p = {}, d = 0, g = e.length;
d < g;
++d
) {
var r = e[d],
n = r[3];
if (n) for (var k = n.length; --k >= 0; ) h[n.charAt(k)] = r;
r = r[1];
n = "" + r;
p.hasOwnProperty(n) || (l.push(r), (p[n] = q));
}
l.push(/[\S\s]/);
y = L(l);
})();
var t = m.length;
return e;
}
function u(a) {
var m = [],
e = [];
a.tripleQuotedStrings
? m.push([
"str",
/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,
q,
"'\""
])
: a.multiLineStrings
? m.push([
"str",
/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
q,
"'\"`"
])
: m.push([
"str",
/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,
q,
"\"'"
]);
a.verbatimStrings && e.push(["str", /^@"(?:[^"]|"")*(?:"|$)/, q]);
var h = a.hashComments;
h &&
(a.cStyleComments
? (h > 1
? m.push(["com", /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, q, "#"])
: m.push([
"com",
/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,
q,
"#"
]),
e.push([
"str",
/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
q
]))
: m.push(["com", /^#[^\n\r]*/, q, "#"]));
a.cStyleComments &&
(e.push(["com", /^\/\/[^\n\r]*/, q]),
e.push(["com", /^\/\*[\S\s]*?(?:\*\/|$)/, q]));
a.regexLiterals &&
e.push([
"lang-regex",
/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/
]);
(h = a.types) && e.push(["typ", h]);
a = ("" + a.keywords).replace(/^ | $/g, "");
a.length &&
e.push(["kwd", RegExp("^(?:" + a.replace(/[\s,]+/g, "|") + ")\\b"), q]);
m.push(["pln", /^\s+/, q, " \r\n\t\xa0"]);
e.push(
["lit", /^@[$_a-z][\w$@]*/i, q],
["typ", /^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/, q],
["pln", /^[$_a-z][\w$@]*/i, q],
[
"lit",
/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,
q,
"0123456789"
],
["pln", /^\\[\S\s]?/, q],
["pun", /^.[^\s\w"-$'./@\\`]*/, q]
);
return x(m, e);
}
function D(a, m) {
function e(a) {
switch (a.nodeType) {
case 1:
if (k.test(a.className)) break;
if ("BR" === a.nodeName)
h(a), a.parentNode && a.parentNode.removeChild(a);
else for (a = a.firstChild; a; a = a.nextSibling) e(a);
break;
case 3:
case 4:
if (p) {
var b = a.nodeValue,
d = b.match(t);
if (d) {
var c = b.substring(0, d.index);
a.nodeValue = c;
(b = b.substring(d.index + d[0].length)) &&
a.parentNode.insertBefore(s.createTextNode(b), a.nextSibling);
h(a);
c || a.parentNode.removeChild(a);
}
}
}
}
function h(a) {
function b(a, d) {
var e = d ? a.cloneNode(!1) : a,
f = a.parentNode;
if (f) {
var f = b(f, 1),
g = a.nextSibling;
f.appendChild(e);
for (var h = g; h; h = g) (g = h.nextSibling), f.appendChild(h);
}
return e;
}
for (; !a.nextSibling; ) if (((a = a.parentNode), !a)) return;
for (
var a = b(a.nextSibling, 0), e;
(e = a.parentNode) && e.nodeType === 1;
)
a = e;
d.push(a);
}
var k = /(?:^|\s)nocode(?:\s|$)/,
t = /\r\n?|\n/,
s = a.ownerDocument,
l;
a.currentStyle
? (l = a.currentStyle.whiteSpace)
: window.getComputedStyle &&
(l = s.defaultView
.getComputedStyle(a, q)
.getPropertyValue("white-space"));
var p = l && "pre" === l.substring(0, 3);
for (l = s.createElement("LI"); a.firstChild; ) l.appendChild(a.firstChild);
for (var d = [l], g = 0; g < d.length; ++g) e(d[g]);
m === (m | 0) && d[0].setAttribute("value", m);
var r = s.createElement("OL");
r.className = "linenums";
for (var n = Math.max(0, (m - 1) | 0) || 0, g = 0, z = d.length; g < z; ++g)
(l = d[g]),
(l.className = "L" + ((g + n) % 10)),
l.firstChild || l.appendChild(s.createTextNode("\xa0")),
r.appendChild(l);
a.appendChild(r);
}
function k(a, m) {
for (var e = m.length; --e >= 0; ) {
var h = m[e];
A.hasOwnProperty(h)
? window.console &&
console.warn("cannot override language handler %s", h)
: (A[h] = a);
}
}
function C(a, m) {
if (!a || !A.hasOwnProperty(a))
a = /^\s*</.test(m) ? "default-markup" : "default-code";
return A[a];
}
function E(a) {
var m = a.g;
try {
var e = M(a.h),
h = e.a;
a.a = h;
a.c = e.c;
a.d = 0;
C(m, h)(a);
var k = /\bMSIE\b/.test(navigator.userAgent),
m = /\n/g,
t = a.a,
s = t.length,
e = 0,
l = a.c,
p = l.length,
h = 0,
d = a.e,
g = d.length,
a = 0;
d[g] = s;
var r, n;
for (n = r = 0; n < g; )
d[n] !== d[n + 2] ? ((d[r++] = d[n++]), (d[r++] = d[n++])) : (n += 2);
g = r;
for (n = r = 0; n < g; ) {
for (
var z = d[n], f = d[n + 1], b = n + 2;
b + 2 <= g && d[b + 1] === f;
)
b += 2;
d[r++] = z;
d[r++] = f;
n = b;
}
for (d.length = r; h < p; ) {
var o = l[h + 2] || s,
c = d[a + 2] || s,
b = Math.min(o, c),
i = l[h + 1],
j;
if (i.nodeType !== 1 && (j = t.substring(e, b))) {
k && (j = j.replace(m, "\r"));
i.nodeValue = j;
var u = i.ownerDocument,
v = u.createElement("SPAN");
v.className = d[a + 1];
var x = i.parentNode;
x.replaceChild(v, i);
v.appendChild(i);
e < o &&
((l[h + 1] = i = u.createTextNode(t.substring(b, o))),
x.insertBefore(i, v.nextSibling));
}
e = b;
e >= o && (h += 2);
e >= c && (a += 2);
}
} catch (w) {
"console" in window && console.log(w && w.stack ? w.stack : w);
}
}
var v = ["break,continue,do,else,for,if,return,while"],
w = [
[
v,
"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"
],
"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"
],
F = [
w,
"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"
],
G = [
w,
"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"
],
H = [
G,
"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"
],
w = [
w,
"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"
],
I = [
v,
"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"
],
J = [
v,
"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"
],
v = [v, "case,done,elif,esac,eval,fi,function,in,local,set,then,until"],
K = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,
N = /\S/,
O = u({
keywords: [
F,
H,
w,
"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END" +
I,
J,
v
],
hashComments: !0,
cStyleComments: !0,
multiLineStrings: !0,
regexLiterals: !0
}),
A = {};
k(O, ["default-code"]);
k(
x(
[],
[
["pln", /^[^<?]+/],
["dec", /^<!\w[^>]*(?:>|$)/],
["com", /^<\!--[\S\s]*?(?:--\>|$)/],
["lang-", /^<\?([\S\s]+?)(?:\?>|$)/],
["lang-", /^<%([\S\s]+?)(?:%>|$)/],
["pun", /^(?:<[%?]|[%?]>)/],
["lang-", /^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],
["lang-js", /^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],
["lang-css", /^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],
["lang-in.tag", /^(<\/?[a-z][^<>]*>)/i]
]
),
["default-markup", "htm", "html", "mxml", "xhtml", "xml", "xsl"]
);
k(
x(
[
["pln", /^\s+/, q, " \t\r\n"],
["atv", /^(?:"[^"]*"?|'[^']*'?)/, q, "\"'"]
],
[
["tag", /^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],
["atn", /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
["lang-uq.val", /^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],
["pun", /^[/<->]+/],
["lang-js", /^on\w+\s*=\s*"([^"]+)"/i],
["lang-js", /^on\w+\s*=\s*'([^']+)'/i],
["lang-js", /^on\w+\s*=\s*([^\s"'>]+)/i],
["lang-css", /^style\s*=\s*"([^"]+)"/i],
["lang-css", /^style\s*=\s*'([^']+)'/i],
["lang-css", /^style\s*=\s*([^\s"'>]+)/i]
]
),
["in.tag"]
);
k(x([], [["atv", /^[\S\s]+/]]), ["uq.val"]);
k(u({ keywords: F, hashComments: !0, cStyleComments: !0, types: K }), [
"c",
"cc",
"cpp",
"cxx",
"cyc",
"m"
]);
k(u({ keywords: "null,true,false" }), ["json"]);
k(
u({
keywords: H,
hashComments: !0,
cStyleComments: !0,
verbatimStrings: !0,
types: K
}),
["cs"]
);
k(u({ keywords: G, cStyleComments: !0 }), ["java"]);
k(u({ keywords: v, hashComments: !0, multiLineStrings: !0 }), [
"bsh",
"csh",
"sh"
]);
k(
u({
keywords: I,
hashComments: !0,
multiLineStrings: !0,
tripleQuotedStrings: !0
}),
["cv", "py"]
);
k(
u({
keywords:
"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",
hashComments: !0,
multiLineStrings: !0,
regexLiterals: !0
}),
["perl", "pl", "pm"]
);
k(
u({
keywords: J,
hashComments: !0,
multiLineStrings: !0,
regexLiterals: !0
}),
["rb"]
);
k(u({ keywords: w, cStyleComments: !0, regexLiterals: !0 }), ["js"]);
k(
u({
keywords:
"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
hashComments: 3,
cStyleComments: !0,
multilineStrings: !0,
tripleQuotedStrings: !0,
regexLiterals: !0
}),
["coffee"]
);
k(x([], [["str", /^[\S\s]+/]]), ["regex"]);
window.prettyPrintOne = function(a, m, e) {
var h = document.createElement("PRE");
h.innerHTML = a;
e && D(h, e);
E({ g: m, i: e, h: h });
return h.innerHTML;
};
window.prettyPrint = function(a) {
function m() {
for (
var e = window.PR_SHOULD_USE_CONTINUATION ? l.now() + 250 : Infinity;
p < h.length && l.now() < e;
p++
) {
var n = h[p],
k = n.className;
if (k.indexOf("prettyprint") >= 0) {
var k = k.match(g),
f,
b;
if ((b = !k)) {
b = n;
for (var o = void 0, c = b.firstChild; c; c = c.nextSibling)
var i = c.nodeType,
o =
i === 1
? o
? b
: c
: i === 3
? N.test(c.nodeValue)
? b
: o
: o;
b = (f = o === b ? void 0 : o) && "CODE" === f.tagName;
}
b && (k = f.className.match(g));
k && (k = k[1]);
b = !1;
for (o = n.parentNode; o; o = o.parentNode)
if (
(o.tagName === "pre" ||
o.tagName === "code" ||
o.tagName === "xmp") &&
o.className &&
o.className.indexOf("prettyprint") >= 0
) {
b = !0;
break;
}
b ||
((b = (b = n.className.match(/\blinenums\b(?::(\d+))?/))
? b[1] && b[1].length
? +b[1]
: !0
: !1) && D(n, b),
(d = { g: k, h: n, i: b }),
E(d));
}
}
p < h.length ? setTimeout(m, 250) : a && a();
}
for (
var e = [
document.getElementsByTagName("pre"),
document.getElementsByTagName("code"),
document.getElementsByTagName("xmp")
],
h = [],
k = 0;
k < e.length;
++k
)
for (var t = 0, s = e[k].length; t < s; ++t) h.push(e[k][t]);
var e = q,
l = Date;
l.now ||
(l = {
now: function() {
return +new Date();
}
});
var p = 0,
d,
g = /\blang(?:uage)?-([\w.]+)(?!\S)/;
m();
};
window.PR = {
createSimpleLexer: x,
registerLangHandler: k,
sourceDecorator: u,
PR_ATTRIB_NAME: "atn",
PR_ATTRIB_VALUE: "atv",
PR_COMMENT: "com",
PR_DECLARATION: "dec",
PR_KEYWORD: "kwd",
PR_LITERAL: "lit",
PR_NOCODE: "nocode",
PR_PLAIN: "pln",
PR_PUNCTUATION: "pun",
PR_SOURCE: "src",
PR_STRING: "str",
PR_TAG: "tag",
PR_TYPE: "typ"
};
})();