UNPKG

@dbml/core

Version:
55 lines (54 loc) 1.8 kB
"use strict"; 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 }; };