inspector_declaration.bend

bendvy-ecs-core@0.1.0.1 · 21 lines · 0 definitions

1import Base
2import inspector_metadata.bend as Meta
3import inspector.bend as I
4import capabilities.bend as Cap
5
6# Trusted schema authoring only, like component.Family's indexed closed lens.
7# The index binds which projection constructs this grant; it does not prove an
8# arbitrary caller's numeric token/name/lens assertion is canonical or truthful.
9type Declaration<-S:Data,-R:Type,-V:Data,-Token:Data,-project:R -> R & V> is Data:
10  Declaration{id:U32,name:String}
11type BoundRead<-S:Data,-H:Type,-V:Data> is Type:
12  BoundRead{metadata:Meta.Resource<S>,read:Cap.ValueRead<H,V>}
13
14def canonical(~S:Data,~R:Type,~V:Data,~Token:Data,~project:R -> R & V,id:U32,name:String) -> Declaration<S,R,V,Token,project>:
15  Declaration{id,name}
16def bind(~S:Data,~Store:Type,~R:Type,~E:Data,~V:Data,~Token:Data,~project:R -> R & V,declaration:Declaration<S,R,V,Token,project>) -> BoundRead<S,I.Frame<S,Store,R,E>,V>:
17  match declaration:
18    case Declaration{id,name}:BoundRead{Meta.Resource{id,name},I.read_resource(~S,~Store,~R,~E,~V,~project)}
19def split(~S:Data,~H:Type,~V:Data,bound:BoundRead<S,H,V>) -> Meta.Resource<S> & Cap.ValueRead<H,V>:
20  match bound:
21    case BoundRead{metadata,read}:(metadata,read)