Skip to content

query language

Robin Schreiber edited this page Mar 24, 2023 · 2 revisions

2023-03-23

Wir entdecken Probleme mit anonymen Morphs und deren Submorphs in Komponentendefinitionen, erwägt eine Query-Language für Submorphs und berücksichtigt dabei den "gitbaren" Output der direkten Manipulation sowie die Komplexität der Reconciliation.

Kontext

Robin stellt fest, dass "anonyme Morphs" in Komponentendefinitionen, wie wir sie vor kurzem erlaubt haben, programmatisch selbst nicht in Ableitungen überschrieben werden können. Schlimmer kommt noch hinzu, dass auch all ihre Submorphs für programmatische Überschreibungen nicht mehr in Frage kommen, da das System bisher eine Navigation der Submorphs auf Namensebene erzwingt. Die Specs generieren intern "Namen", weshalb das für die graphische Manipulation kein Problem darstellt.

Wir stellen fest, dass der use-case für "anonyme Morphs" ohnehin Wrapper aus Layoutgründen sind, die nicht überschrieben werden können müssen. Wir stellen außerdem fest, dass unser Ziel in erster Instanz nicht unbedingt die Äquivalenz zwischen direct manipulation workflow und coding ist, sondern es um einen "gitbaren" Output der direct manipulation geht.

Query Language

Darüber kommen wir auf die Idee einer Query-Language für Submorphs. Sie würde es erlauben, anstatt nur anhand von Namen durch Submorphs zu navigieren, programmatisch einfacher auf Submorphs zuzugreifen.

Wir müssen bei der Arbeit mit Komponenten darauf achten, welche Use-Cases es für eine solche Sprache gäbe. Bisher scheint der hauptsächliche use-case zu sein, sich beim programmatischen Überschreiben von tiefen Submorphs gegen eine Verschiebung von großen Teilen der Hierarchie abzusichern.

Jede Implementierung einer solchen Möglichkeit macht die Reconciliation komplexer.

Syntax Ideen

component(...).match(query, {overridenProps}) // can we also use this for add() and remove()?

const query = "*/*/name"