libsqlite
Version:
Legacy SQLITE library for browser
182 lines (158 loc) • 6.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SQLiteParser = undefined;
var _getIterator2 = require("babel-runtime/core-js/get-iterator");
var _getIterator3 = _interopRequireDefault(_getIterator2);
var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck");
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require("babel-runtime/helpers/createClass");
var _createClass3 = _interopRequireDefault(_createClass2);
var _event = require("eventslib/lib/event");
var _aggregate = require("eventslib/lib/aggregate");
var _http = require("libhttp/lib/http");
var _event2 = require("./event");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/** @babel */
var SQLiteParser = exports.SQLiteParser = function () {
function SQLiteParser() {
(0, _classCallCheck3.default)(this, SQLiteParser);
this.mListeners = new _aggregate.EventListenerAggregate(_event2.SQLiteParserListener);
this.inComment = false;
this.mStatements = [];
}
(0, _createClass3.default)(SQLiteParser, [{
key: "addListener",
value: function addListener(listener) {
this.mListeners.add(listener);
}
}, {
key: "getStatements",
value: function getStatements() {
return this.mStatements;
}
}, {
key: "loadFile",
value: function loadFile(path) {
var _this = this;
new _http.HTTPConnection({
url: path,
method: "GET",
responseType: "text",
handler: {
onHandleRequest: function onHandleRequest(event) {
var type = event.type;
if (type === _http.LOAD_END_STATE) {
_this.parse(event.response.getMessageBody());
}
}
}
});
}
}, {
key: "notifyListeners",
value: function notifyListeners() {
var listeners = this.mListeners.getListenersInternal();
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = (0, _getIterator3.default)(listeners), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var listener = _step.value;
listener.onParseEvent(new _event2.SQLiteParseEvent({
source: this,
id: _event2.SQLiteParseEvent.PARSE,
data: this.mStatements
}));
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
}, {
key: "parse",
value: function parse(data) {
var lines = data.split("\n");
var statement = "";
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = (0, _getIterator3.default)(lines), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var line = _step2.value;
line = SQLiteParser.stripOffTrailingComment(line).trim();
if (line.length === 0) {
continue;
}
if (line.indexOf(SQLiteParser.BLOCK_COMMENT_START_CHARACTERS) === 0) {
this.mInComment = true;
continue;
}
if (this.mInComment && line.indexOf(SQLiteParser.BLOCK_COMMENT_END_CHARACTERS) === line.length - 1) {
this.inComment = false;
continue;
}
if (this.mInComment) {
continue;
}
statement += line;
if (!(line.indexOf(SQLiteParser.STATEMENT_END_CHARACTER) === line.length - 1)) {
statement += SQLiteParser.LINE_CONCATENATION_CHARACTER;
continue;
}
this.mStatements.push(statement);
statement = "";
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
this.notifyListeners();
}
}, {
key: "removeListener",
value: function removeListener(listener) {
this.mListeners.remove(listener);
}
}], [{
key: "stripOffTrailingComment",
value: function stripOffTrailingComment(line) {
var commentStartIndex = line.indexOf(SQLiteParser.LINE_COMMENT_START_CHARACTERS);
if (commentStartIndex !== -1) {
return line.substring(0, commentStartIndex);
}
return line;
}
}]);
return SQLiteParser;
}();
SQLiteParser.DEFAULT_CREATE_MODEL_FILE = "create_model.sql";
SQLiteParser.DEFAULT_DROP_MODEL_FILE = "drop_model.sql";
SQLiteParser.STATEMENT_END_CHARACTER = ";";
SQLiteParser.LINE_COMMENT_START_CHARACTERS = "--";
SQLiteParser.BLOCK_COMMENT_START_CHARACTERS = "/*";
SQLiteParser.BLOCK_COMMENT_END_CHARACTERS = "*/";
SQLiteParser.LINE_CONCATENATION_CHARACTER = " ";
SQLiteParser.LINE_END = " ";