UNPKG

libsqlite

Version:

Legacy SQLITE library for browser

182 lines (158 loc) 6.38 kB
"use strict"; 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 = " ";