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 { +}