remove old parser
This commit is contained in:
parent
7bbc6008f5
commit
18a0f8656b
1 changed files with 0 additions and 49 deletions
|
@ -1,49 +0,0 @@
|
||||||
import { defineQuery, hasComponent } from 'bitecs'
|
|
||||||
/// danm this rules !!!
|
|
||||||
const re = /\((?<fromName>\w+)?:(?<fromLabel>\w+)\)(-\[(?<edgeName>\w+)?:(?<edgeLabel>\w+)\]->\((?<toName>\w+)?:(?<toLabel>\w+)\))*/
|
|
||||||
|
|
||||||
const node = (name, label) => ({ name, label })
|
|
||||||
|
|
||||||
const parse = s => {
|
|
||||||
const result = s.match(re)
|
|
||||||
const groups = result.groups
|
|
||||||
|
|
||||||
return {
|
|
||||||
from: node(groups.fromName || 'a', groups.fromLabel),
|
|
||||||
to: node(groups.toName || 'b', groups.toLabel),
|
|
||||||
edge: node(groups.edgeName, groups.edgeLabel)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const query = (world, s) => {
|
|
||||||
const meta = parse(s)
|
|
||||||
const from = world.components[meta.from.label]
|
|
||||||
const to = world.components[meta.to.label]
|
|
||||||
const edge = world.components[meta.edge.label]
|
|
||||||
|
|
||||||
const fromQuery = defineQuery([from])
|
|
||||||
const toQuery = defineQuery([to])
|
|
||||||
const edgeQuery = defineQuery([edge])
|
|
||||||
|
|
||||||
return (world) => {
|
|
||||||
const result = []
|
|
||||||
|
|
||||||
const fq = fromQuery(world)
|
|
||||||
const tq = toQuery(world)
|
|
||||||
const eq = edgeQuery(world)
|
|
||||||
|
|
||||||
for(const feid of fq) {
|
|
||||||
const targets = []
|
|
||||||
|
|
||||||
for(const eeid of eq) {
|
|
||||||
if(edge.from[eeid] === feid && hasComponent(world, to, edge.to[eeid])) {
|
|
||||||
targets.push(edge.to[eeid])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
result.push({ [feid]: targets })
|
|
||||||
}
|
|
||||||
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue