alasql
Version:
AlaSQL.js - JavaScript SQL database library for relational and graph data manipulation with support of localStorage, IndexedDB, and Excel
70 lines (63 loc) • 1.59 kB
JavaScript
var fs = require('fs');
var alasql = require('..');
var s = fs.readFileSync('../dist/alasql.min.js').toString();
var state = "ANY";
var idx = 0;
var ilen = s.length;
var w = '';
var dict = {};
var dotdict = {};
for(var i=0; i<ilen;i++) {
var ch = s[i];
var a = ch.toUpperCase();
if(state == "ANY") {
if(ch == '.') {
state="DOTLITERAL";
w += '.';
continue;
} else if((a >= 'A' && a <= 'Z') || (a == '_')) {
state="LITERAL";
w += ch;
continue;
} else {
state = 'ANY';
w = '';
continue;
}
} else if(state == "LITERAL") {
if(ch == '.') {
state="DOTLITERAL";
w = '.';
continue;
} else if((a >= 'A' && a <= 'Z') || (a >= '0' && a <= '9') || (a == '_')) {
state="LITERAL";
w += ch;
continue;
} else {
state = 'ANY';
if(w.length > 1) {
dict["_"+w] = (dict["_"+w]||0)+1;
}
w = '';
continue;
}
} else if(state == "DOTLITERAL") {
if((a >= 'A' && a <= 'Z') || (a >= '0' && a <= '9') || (a == '_')) {
state="DOTLITERAL";
w += ch;
continue;
} else {
state = 'ANY';
dotdict["_"+w] = (dotdict["_"+w]||0)+1;
w = '';
continue;
}
}
};
console.log(alasql('SELECT TOP 10 [0] AS w, [1] as q, \
(LEN([0])-2)*[1] as e FROM ? WHERE LEN([0])>5 ORDER BY e DESC',[dict]));
console.log(alasql('SELECT TOP 10 [0] AS w, [1] as q, \
(LEN([0])-3)*[1] as e FROM ? \
WHERE LEN([0])>3 ORDER BY e DESC',[dotdict]));
console.log(alasql('SELECT SUM((LEN([0])-2)*[1]) as e FROM ? WHERE LEN([0])>5 ',[dict]));
console.log(alasql('SELECT SUM((LEN([0])-3)*[1]) as e FROM ? WHERE LEN([0])>5 ',[dotdict]));