UNPKG

molstar

Version:

A comprehensive macromolecular library.

53 lines 2.08 kB
/** * 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