molstar
Version:
A comprehensive macromolecular library.
53 lines • 2.08 kB
JavaScript
/**
* Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
import { transpileMolScript } from './script/mol-script/symbols';
import { parseMolScript } from './language/parser';
import { QueryContext, StructureSelection } from '../mol-model/structure';
import { compile } from './runtime/query/compiler';
import { MolScriptBuilder } from './language/builder';
export { Script };
function Script(expression, language) {
return { expression: expression, language: language };
}
(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 = parseMolScript(script.expression);
if (parsed.length === 0)
throw new Error('No query');
return transpileMolScript(parsed[0]);
}
throw new Error('unsupported script language');
}
Script.toExpression = toExpression;
function toQuery(script) {
var expression = toExpression(script);
return compile(expression);
}
Script.toQuery = toQuery;
function toLoci(script, structure) {
var query = toQuery(script);
var result = query(new QueryContext(structure));
return StructureSelection.toLociWithSourceUnits(result);
}
Script.toLoci = toLoci;
function getStructureSelection(expr, structure, options) {
var e = typeof expr === 'function' ? expr(MolScriptBuilder) : expr;
var query = compile(e);
return query(new QueryContext(structure, options));
}
Script.getStructureSelection = getStructureSelection;
})(Script || (Script = {}));
//# sourceMappingURL=script.js.map