From 17a440ad9c4078ffaf04f45b5be0e2b6ae6742b4 Mon Sep 17 00:00:00 2001
From: David Sehnal <david.sehnal@gmail.com>
Date: Wed, 16 Oct 2019 20:46:25 +0200
Subject: [PATCH] moved StructureQuery.runExpr to Script.getStructureSelection
 to fix cyclic dep

---
 src/apps/basic-wrapper/index.ts        | 5 +++--
 src/mol-model/structure/query/query.ts | 9 ---------
 src/mol-script/script.ts               | 9 ++++++++-
 3 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/src/apps/basic-wrapper/index.ts b/src/apps/basic-wrapper/index.ts
index a2c5b3a7c..b6f89f848 100644
--- a/src/apps/basic-wrapper/index.ts
+++ b/src/apps/basic-wrapper/index.ts
@@ -19,7 +19,8 @@ import { StaticSuperpositionTestData, buildStaticSuperposition, dynamicSuperposi
 import { PDBeStructureQualityReport } from '../../mol-plugin/behavior/dynamic/custom-props';
 import { CustomToastMessage } from './controls';
 import { EmptyLoci } from '../../mol-model/loci';
-import { StructureSelection, StructureQuery } from '../../mol-model/structure';
+import { StructureSelection } from '../../mol-model/structure';
+import { Script } from '../../mol-script/script';
 require('mol-plugin/skin/light.scss')
 
 type SupportedFormats = 'cif' | 'pdb'
@@ -149,7 +150,7 @@ class BasicWrapper {
         highlightOn: () => {
             const seq_id = 7;
             const data = (this.plugin.state.dataState.select('asm')[0].obj as PluginStateObject.Molecule.Structure).data;
-            const sel = StructureQuery.runExpr(Q => Q.struct.generator.atomGroups({
+            const sel = Script.getStructureSelection(Q => Q.struct.generator.atomGroups({
                 'residue-test': Q.core.rel.eq([Q.struct.atomProperty.macromolecular.label_seq_id(), seq_id]),
                 'group-by': Q.struct.atomProperty.macromolecular.residueKey()
             }), data);
diff --git a/src/mol-model/structure/query/query.ts b/src/mol-model/structure/query/query.ts
index 99ea40847..a126749a8 100644
--- a/src/mol-model/structure/query/query.ts
+++ b/src/mol-model/structure/query/query.ts
@@ -7,21 +7,12 @@
 import { Structure } from '../structure'
 import { StructureSelection } from './selection'
 import { QueryContext, QueryFn, QueryContextOptions } from './context';
-import Expression from '../../../mol-script/language/expression';
-import { compile } from '../../../mol-script/runtime/query/compiler';
-import { MolScriptBuilder } from '../../../mol-script/language/builder';
 
 interface StructureQuery extends QueryFn<StructureSelection> { }
 namespace StructureQuery {
     export function run(query: StructureQuery, structure: Structure, options?: QueryContextOptions) {
         return query(new QueryContext(structure, options));
     }
-
-    export function runExpr(expr: Expression | ((builder: typeof MolScriptBuilder) => Expression), structure: Structure, options?: QueryContextOptions) {
-        const e = typeof expr === 'function' ? expr(MolScriptBuilder) : expr;
-        const query = compile<StructureSelection>(e);
-        return query(new QueryContext(structure, options));
-    }
 }
 
 export { StructureQuery }
\ No newline at end of file
diff --git a/src/mol-script/script.ts b/src/mol-script/script.ts
index 653a68f89..0248a96a1 100644
--- a/src/mol-script/script.ts
+++ b/src/mol-script/script.ts
@@ -7,8 +7,9 @@
 import { transpileMolScript } from './script/mol-script/symbols';
 import { parseMolScript } from './language/parser';
 import Expression from './language/expression';
-import { StructureElement, QueryContext, StructureSelection, Structure, QueryFn } from '../mol-model/structure';
+import { StructureElement, QueryContext, StructureSelection, Structure, QueryFn, QueryContextOptions } from '../mol-model/structure';
 import { compile } from './runtime/query/compiler';
+import { MolScriptBuilder } from './language/builder';
 
 export { Script }
 
@@ -45,4 +46,10 @@ namespace Script {
         const result = query(new QueryContext(structure))
         return StructureSelection.toLociWithSourceUnits(result)
     }
+
+    export function getStructureSelection(expr: Expression | ((builder: typeof MolScriptBuilder) => Expression), structure: Structure, options?: QueryContextOptions) {
+        const e = typeof expr === 'function' ? expr(MolScriptBuilder) : expr;
+        const query = compile<StructureSelection>(e);
+        return query(new QueryContext(structure, options));
+    }
 }
\ No newline at end of file
-- 
GitLab