@dbml/core
Version:
> TODO: description
55 lines (54 loc) • 1.8 kB
JavaScript
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
var P = require('parsimmon');
var _ = require('lodash');
var _require = require('./keyword_parsers'),
LParen = _require.LParen,
RParen = _require.RParen,
Comma = _require.Comma;
var wss = require('./whitespaces');
exports.makeNode = function () {
return function (parser) {
return P.seqMap(P.index, parser, P.index, function (start, value, end) {
if (!value) return parser;
if (_typeof(value.value) !== 'object') value.value = {
value: value.value
};
value.value.token = {
start: start,
end: end
};
return value;
}).skip(wss);
};
};
exports.makeList = function (parser) {
var isZero = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var seperator = parser.sepBy1(Comma);
if (isZero) seperator = parser.sepBy(Comma);
return P.seq(LParen, seperator, RParen).map(function (value) {
return value[1];
});
};
exports.streamline = function (type) {
return function (parser) {
return parser.skip(wss).map(function (value) {
// eslint-disable-next-line no-param-reassign
if (value !== 0 && !value) value = '';
return {
type: type,
value: value
};
});
};
};
exports.getFullTableName = function (nameList) {
var schemaName = null;
if (nameList.length > 1) {
schemaName = nameList[nameList.length - 2];
}
return {
name: _.last(nameList),
schemaName: schemaName
};
};
;