molstar
Version:
A comprehensive macromolecular library.
57 lines • 2.28 kB
JavaScript
/**
* Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Script = void 0;
var symbols_1 = require("./script/mol-script/symbols");
var parser_1 = require("./language/parser");
var structure_1 = require("../mol-model/structure");
var compiler_1 = require("./runtime/query/compiler");
var builder_1 = require("./language/builder");
function Script(expression, language) {
return { expression: expression, language: language };
}
exports.Script = Script;
(function (Script) {
function is(x) {
return !!x && typeof x.expression === 'string' && !!x.language;
}
Script.is = is;
function areEqual(a, b) {
return a.language === b.language && a.expression === b.expression;
}
Script.areEqual = areEqual;
function toExpression(script) {
switch (script.language) {
case 'mol-script':
var parsed = (0, parser_1.parseMolScript)(script.expression);
if (parsed.length === 0)
throw new Error('No query');
return (0, symbols_1.transpileMolScript)(parsed[0]);
}
throw new Error('unsupported script language');
}
Script.toExpression = toExpression;
function toQuery(script) {
var expression = toExpression(script);
return (0, compiler_1.compile)(expression);
}
Script.toQuery = toQuery;
function toLoci(script, structure) {
var query = toQuery(script);
var result = query(new structure_1.QueryContext(structure));
return structure_1.StructureSelection.toLociWithSourceUnits(result);
}
Script.toLoci = toLoci;
function getStructureSelection(expr, structure, options) {
var e = typeof expr === 'function' ? expr(builder_1.MolScriptBuilder) : expr;
var query = (0, compiler_1.compile)(e);
return query(new structure_1.QueryContext(structure, options));
}
Script.getStructureSelection = getStructureSelection;
})(Script || (Script = {}));
exports.Script = Script;
//# sourceMappingURL=script.js.map
;