validate-chord
Version:
🎼 Validates a chord (scientific pitch notation) and throws errors if needed
48 lines (31 loc) • 1.39 kB
JavaScript
;
exports.__esModule = true;
var _validateNote = require('validate-note');
var _validateNote2 = _interopRequireDefault(_validateNote);
var _types = require('./data/types');
var _types2 = _interopRequireDefault(_types);
var _getNote = require('./lib/getNote');
var _getNote2 = _interopRequireDefault(_getNote);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = function (chord) {
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref$maxOctave = _ref.maxOctave,
maxOctave = _ref$maxOctave === undefined ? 8 : _ref$maxOctave,
_ref$flatToSharp = _ref.flatToSharp,
flatToSharp = _ref$flatToSharp === undefined ? false : _ref$flatToSharp;
if (typeof chord !== 'string') {
throw new Error('\'' + chord + '\' is not a valid chord');
}
var note = (0, _getNote2.default)(chord);
var sNote = (0, _validateNote2.default)(note, { maxOctave: maxOctave, flatToSharp: flatToSharp, octave: true });
var type = _types2.default[chord.split(note)[1].toLowerCase()];
if (!type) throw new Error('\'' + chord.split(note)[1] + '\' is not a valid chord type');
Object.keys(sNote).forEach(function (key) {
return !sNote[key] && delete sNote[key];
});
return {
note: sNote,
type: type
};
};
module.exports = exports['default'];