je-transcore
Version:
tool for je score transferring
48 lines (36 loc) • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = bdLex;
var _lex = require('lex');
var _lex2 = _interopRequireDefault(_lex);
var _Token = require('../model/Token');
var _Token2 = _interopRequireDefault(_Token);
var _Note = require('../model/Note');
var _Note2 = _interopRequireDefault(_Note);
var _constants = require('../constants');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var TEXT = _Token2.default.TEXT,
NOTE = _Token2.default.NOTE,
WS = _Token2.default.WS;
function bdLex(source) {
var tokens = [];
var lexer = new _lex2.default();
lexer.addRule(/[bdBD]\d+'?|\([bdBD]\d+'?\)/, function (text) {
if (!_constants.bdTable[text]) {
throw new Error('Unrecognized note "' + text + '"');
}
var note = new _Note2.default(_constants.bdTable[text]);
tokens.push(new _Token2.default(NOTE, note));
});
lexer.addRule(/\s|\n/, function (text) {
tokens.push(new _Token2.default(WS, text));
});
lexer.addRule(/./, function (text) {
tokens.push(new _Token2.default(TEXT, text));
});
lexer.setInput(source).lex();
return tokens;
}
module.exports = exports['default'];