molstar
Version:
A comprehensive macromolecular library.
48 lines • 2.06 kB
JavaScript
/*
* Copyright (c) 2018 Mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
*/
import { Expression } from './expression';
export function Argument(type, params) {
var _a = params || {}, _b = _a.description, description = _b === void 0 ? void 0 : _b, _c = _a.isOptional, isOptional = _c === void 0 ? false : _c, _d = _a.isRest, isRest = _d === void 0 ? false : _d, _e = _a.defaultValue, defaultValue = _e === void 0 ? void 0 : _e;
return { type: type, isOptional: isOptional, isRest: isRest, defaultValue: defaultValue, description: description };
}
export var Arguments;
(function (Arguments) {
Arguments.None = Dictionary({});
function Dictionary(map) {
return { kind: 'dictionary', map: map, '@type': 0 };
}
Arguments.Dictionary = Dictionary;
function List(type, params) {
var _a = (params || {}).nonEmpty, nonEmpty = _a === void 0 ? false : _a;
return { kind: 'list', type: type, nonEmpty: nonEmpty, '@type': 0 };
}
Arguments.List = List;
})(Arguments || (Arguments = {}));
export function MSymbol(name, args, type, description) {
var symbol = function (args) {
return Expression.Apply(Expression.Symbol(symbol.id), args);
};
symbol.info = { namespace: '', name: name, description: description };
symbol.id = '';
symbol.args = args;
symbol.type = type;
return symbol;
}
export function CustomPropSymbol(namespace, name, type, description) {
var symbol = function (args) {
return Expression.Apply(Expression.Symbol(symbol.id), args);
};
symbol.info = { namespace: namespace, name: name, description: description };
symbol.id = namespace + "." + name;
symbol.args = Arguments.None;
symbol.type = type;
return symbol;
}
export function isSymbol(x) {
var s = x;
return typeof s === 'function' && !!s.info && !!s.args && typeof s.info.namespace === 'string' && !!s.type;
}
//# sourceMappingURL=symbol.js.map