mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
7 lines
29 KiB
JavaScript
7 lines
29 KiB
JavaScript
|
/*!
|
||
|
* SQLParser 1.1.0
|
||
|
* Copyright 2012-2015 Andy Kent <andy@forward.co.uk>
|
||
|
* Copyright 2015-2016 Damien "Mistic" Sorel (http://www.strangeplanet.fr)
|
||
|
* Licensed under MIT (http://opensource.org/licenses/MIT)
|
||
|
*/
|
||
|
!function(t){var e=function(){function t(e){return t[e]}return t["./lexer"]=new function(){var t=this;(function(){var e;e=function(){function t(t,e){var n,i;for(null==e&&(e={}),this.sql=t,this.preserveWhitespace=e.preserveWhitespace||!1,this.tokens=[],this.currentLine=1,i=0;this.chunk=t.slice(i);){if((n=this.keywordToken()||this.starToken()||this.booleanToken()||this.functionToken()||this.windowExtension()||this.sortOrderToken()||this.seperatorToken()||this.operatorToken()||this.mathToken()||this.dotToken()||this.conditionalToken()||this.betweenToken()||this.subSelectOpToken()||this.subSelectUnaryOpToken()||this.numberToken()||this.stringToken()||this.parameterToken()||this.parensToken()||this.whitespaceToken()||this.literalToken())<1)throw new Error("NOTHING CONSUMED: Stopped at - '"+this.chunk.slice(0,30)+"'");i+=n}this.token("EOF",""),this.postProcess()}var e,n,i,r,o,s,u,a,h,c,l,p,f,k,T,E,g,S;return t.prototype.postProcess=function(){var t,e,n,i,r,o,s;for(o=this.tokens,s=[],t=i=0,r=o.length;i<r;t=++i)n=o[t],"STAR"===n[0]?(e=this.tokens[t+1],"SEPARATOR"!==e[0]&&"FROM"!==e[0]?s.push(n[0]="MATH_MULTI"):s.push(void 0)):s.push(void 0);return s},t.prototype.token=function(t,e){return this.tokens.push([t,e,this.currentLine])},t.prototype.tokenizeFromStringRegex=function(t,e,n,i,r){var o,s;return null==n&&(n=0),null==i&&(i=n),null==r&&(r=!0),(o=e.exec(this.chunk))?(s=o[n].replace(/''/g,"'"),r&&this.token(t,s),o[i].length):0},t.prototype.tokenizeFromRegex=function(t,e,n,i,r){var o,s;return null==n&&(n=0),null==i&&(i=n),null==r&&(r=!0),(o=e.exec(this.chunk))?(s=o[n],r&&this.token(t,s),o[i].length):0},t.prototype.tokenizeFromWord=function(t,e){var n,i;return null==e&&(e=t),e=this.regexEscape(e),i=/^\w+$/.test(e)?new RegExp("^("+e+")\\b","ig"):new RegExp("^("+e+")","ig"),(n=i.exec(this.chunk))?(this.token(t,n[1]),n[1].length):0},t.prototype.tokenizeFromList=function(t,e){var n,i,r,o;for(i=0,r=0,o=e.length;r<o&&(n=e[r],!((i=this.tokenizeFromWord(t,n))>0));r++);return i},t.prototype.keywordToken=function(){return this.tokenizeFromWord("SELECT")||this.tokenizeFromWord("INSERT")||this.tokenizeFromWord("INTO")||this.tokenizeFromWord("DEFAULT")||this.tokenizeFromWord("VALUES")||this.tokenizeFromWord("DISTINCT")||this.tokenizeFromWord("FROM")||this.tokenizeFromWord("WHERE")||this.tokenizeFromWord("GROUP")||this.tokenizeFromWord("ORDER")||this.tokenizeFromWord("BY")||this.tokenizeFromWord("HAVING")||this.tokenizeFromWord("LIMIT")||this.tokenizeFromWord("JOIN")||this.tokenizeFromWord("LEFT")||this.tokenizeFromWord("RIGHT")||this.tokenizeFromWord("INNER")||this.tokenizeFromWord("OUTER")||this.tokenizeFromWord("ON")||this.tokenizeFromWord("AS")||this.tokenizeFromWord("UNION")||this.tokenizeFromWord("ALL")||this.tokenizeFromWord("LIMIT")||this.tokenizeFromWord("OFFSET")||this.tokenizeFromWord("FETCH")||this.tokenizeFromWord("ROW")||this.tokenizeFromWord("ROWS")||this.tokenizeFromWord("ONLY")||this.tokenizeFromWord("NEXT")||this.tokenizeFromWord("FIRST")},t.prototype.dotToken=function(){return this.tokenizeFromWord("DOT",".")},t.prototype.operatorToken=function(){return this.tokenizeFromList("OPERATOR",p)},t.prototype.mathToken=function(){return this.tokenizeFromList("MATH",r)||this.tokenizeFromList("MATH_MULTI",o)},t.prototype.conditionalToken=function(){return this.tokenizeFromList("CONDITIONAL",c)},t.prototype.betweenToken=function(){return this.tokenizeFromList("BETWEEN",h)},t.prototype.subSelectOpToken=function(){return this.tokenizeFromList("SUB_SELECT_OP",E)},t.prototype.subSelectUnaryOpToken=function(){return this.tokenizeFromList("SUB_SELECT_UNARY_OP",g)},t.prototype.functionToken=function(){return this.tokenizeFromList("FUNCTION",l)},t.prototype.sortOrderToken=function(){return this.tokenizeFromList("DIRECTION",f)},t.prototype.booleanToken=function(){return this.tokenizeFromList("BOOLEAN",e)},t.prototype.starToken=function(){return this.tokenizeFromRegex("STAR",k)},t.prototype.seperatorToken=function(){return this.tokenizeFromRegex("SEPARATOR",a)},t.prototype.literalToken=function(){return this.tokenizeFromRegex("LITERAL",i,1,0)},t
|