From 7054442dc665754d1b77e36d43987fc51991a296 Mon Sep 17 00:00:00 2001 From: "M.V. Hutz" Date: Fri, 6 Feb 2026 23:19:27 -0500 Subject: [PATCH] feat: new registry --- internal/registry_new/conversion.go | 9 +++++++++ internal/registry_new/engine.go | 12 ++++++++++++ internal/registry_new/expr.go | 7 +++++++ internal/registry_new/marshaler.go | 5 +++++ internal/registry_new/registry.go | 10 ++++++++++ internal/registry_new/repr.go | 4 ++++ 6 files changed, 47 insertions(+) create mode 100644 internal/registry_new/conversion.go create mode 100644 internal/registry_new/engine.go create mode 100644 internal/registry_new/expr.go create mode 100644 internal/registry_new/marshaler.go create mode 100644 internal/registry_new/registry.go create mode 100644 internal/registry_new/repr.go diff --git a/internal/registry_new/conversion.go b/internal/registry_new/conversion.go new file mode 100644 index 0000000..c6e2c5b --- /dev/null +++ b/internal/registry_new/conversion.go @@ -0,0 +1,9 @@ +package registrynew + +// Conversion +type Conversion interface { + InRepr() string + OutRepr() string + + Run(Expr) (Expr, error) +} diff --git a/internal/registry_new/engine.go b/internal/registry_new/engine.go new file mode 100644 index 0000000..c590d90 --- /dev/null +++ b/internal/registry_new/engine.go @@ -0,0 +1,12 @@ +package registrynew + +type Process interface { + Get() (Expr, error) + Step(int) bool +} + +type Engine interface { + Load(Expr) Process + Name() string + InRepr() string +} diff --git a/internal/registry_new/expr.go b/internal/registry_new/expr.go new file mode 100644 index 0000000..29b75b5 --- /dev/null +++ b/internal/registry_new/expr.go @@ -0,0 +1,7 @@ +package registrynew + +type Expr interface { + Repr() string + + Data() any +} diff --git a/internal/registry_new/marshaler.go b/internal/registry_new/marshaler.go new file mode 100644 index 0000000..3913228 --- /dev/null +++ b/internal/registry_new/marshaler.go @@ -0,0 +1,5 @@ +package registrynew + +type Marshaler interface { + InType() string +} diff --git a/internal/registry_new/registry.go b/internal/registry_new/registry.go new file mode 100644 index 0000000..a16a8db --- /dev/null +++ b/internal/registry_new/registry.go @@ -0,0 +1,10 @@ +package registrynew + +import "iter" + +type Registry interface { + ListEngines() iter.Seq[string] + GetEngine(name string) (Engine, error) + + ListReprs() iter.Seq[string] +} diff --git a/internal/registry_new/repr.go b/internal/registry_new/repr.go new file mode 100644 index 0000000..d1d8294 --- /dev/null +++ b/internal/registry_new/repr.go @@ -0,0 +1,4 @@ +package registrynew + +type Repr interface { +}