diff --git a/src/mol-script/transpilers/jmol/parser.ts b/src/mol-script/transpilers/jmol/parser.ts index 9d723754d284d5b9fbfaeb8237ffb0e272989938..31e524f73832d4efc1cc16222b69a1a99a3e7bde 100644 --- a/src/mol-script/transpilers/jmol/parser.ts +++ b/src/mol-script/transpilers/jmol/parser.ts @@ -35,16 +35,20 @@ const valueOperators: OperatorList = [ map: (op, e1, e2) => { console.log(op, e1, e2) let expr; - if (e1 === 'structure') { + if (e1 === 'structure') { expr = B.core.flags.hasAny([B.ammp('secondaryStructureFlags'), structureMap(e2)]); } else if (e2 === 'structure') { expr = B.core.flags.hasAny([B.ammp('secondaryStructureFlags'), structureMap(e1)]); - } else if (e1.head.name === 'core.type.regex') { - expr = B.core.str.match([e1, B.core.type.str([e2])]); - } else if (e2.head.name === 'core.type.regex') { - expr = B.core.str.match([e2, B.core.type.str([e1])]); + } else if (e1.head !== undefined){ + if (e1.head.name === 'core.type.regex') { + expr = B.core.str.match([e1, B.core.type.str([e2])]); + } + } else if (e2.head !== undefined){ + if (e2.head.name === 'core.type.regex') { + expr = B.core.str.match([e2, B.core.type.str([e1])]); + } } else if (op.toUpperCase() === 'LIKE') { - if (e1.head.name) { + if (e1.head) { expr = B.core.str.match([ B.core.type.regex([`^${e2}$`, 'i']), B.core.type.str([e1]) @@ -57,8 +61,8 @@ const valueOperators: OperatorList = [ } } if (!expr) { - if (e1.head.name) e2 = h.wrapValue(e1, e2); - if (e2.head.name) e1 = h.wrapValue(e2, e1); + if (e1.head) e2 = h.wrapValue(e1, e2); + if (e2.head) e1 = h.wrapValue(e2, e1); switch (op) { case '=': expr = B.core.rel.eq([e1, e2]); diff --git a/src/mol-script/transpilers/rasmol/parser.ts b/src/mol-script/transpilers/rasmol/parser.ts index eb0271d0311a60ab104e61f0cbb109dba3265143..ba3ff595da142ce165b9c36046c1a3afb55bd16f 100644 --- a/src/mol-script/transpilers/rasmol/parser.ts +++ b/src/mol-script/transpilers/rasmol/parser.ts @@ -35,16 +35,20 @@ const valueOperators: OperatorList = [ map: (op, e1, e2) => { // console.log(op, e1, e2) let expr; - if (e1 === 'structure') { + if (e1 === 'structure') { expr = B.core.flags.hasAny([B.ammp('secondaryStructureFlags'), structureMap(e2)]); } else if (e2 === 'structure') { expr = B.core.flags.hasAny([B.ammp('secondaryStructureFlags'), structureMap(e1)]); - } else if (e1.head.name === 'core.type.regex') { - expr = B.core.str.match([e1, B.core.type.str([e2])]); - } else if (e2.head.name === 'core.type.regex') { - expr = B.core.str.match([e2, B.core.type.str([e1])]); + } else if (e1.head !== undefined){ + if (e1.head.name === 'core.type.regex') { + expr = B.core.str.match([e1, B.core.type.str([e2])]); + } + } else if (e2.head !== undefined){ + if (e2.head.name === 'core.type.regex') { + expr = B.core.str.match([e2, B.core.type.str([e1])]); + } } else if (op.toUpperCase() === 'LIKE') { - if (e1.head.name) { + if (e1.head) { expr = B.core.str.match([ B.core.type.regex([`^${e2}$`, 'i']), B.core.type.str([e1]) @@ -57,8 +61,8 @@ const valueOperators: OperatorList = [ } } if (!expr) { - if (e1.head.name) e2 = h.wrapValue(e1, e2); - if (e2.head.name) e1 = h.wrapValue(e2, e1); + if (e1.head) e2 = h.wrapValue(e1, e2); + if (e2.head) e1 = h.wrapValue(e2, e1); switch (op) { case '=': expr = B.core.rel.eq([e1, e2]);