ketin/fabric

Source   Edit  

abstraction over schemas by attaching to a type

Types

FabricColumn = object
  schemaId*: SchemaId
  num*: int
Source   Edit  
FabricKind = enum
  Warm, Cold
Source   Edit  
FabricOptions = object
  requiresFreeze*: bool
  id*: string
Source   Edit  
SomeFabric = concept
    proc getFabricSchemaId(self: typedesc[Self]): SchemaId
Source   Edit  

Macros

macro choice(column: static FabricColumn): untyped
Source   Edit  
macro collect(column: static FabricColumn; toApply: untyped): untyped
Source   Edit  
macro dispatch(column: static FabricColumn; value: typed; toApply: untyped;
               elses: varargs[untyped]): untyped
Source   Edit  
macro fabric(option: static FabricKind; body: untyped): untyped
Source   Edit  
macro fabric(option: static FabricOptions; body: untyped): untyped
Source   Edit  
macro fabric(option: static string; body: untyped): untyped
Source   Edit  
macro fabric(option: static tuple[]; body: untyped): untyped
Source   Edit  
macro find(column: static FabricColumn; value: typed; toApply: untyped;
           elses: varargs[untyped]): untyped
Source   Edit  
macro pick(column: static FabricColumn): untyped
Source   Edit  
macro pluck(column: static FabricColumn): untyped
Source   Edit  
macro stitchDecl[T: SomeFabric](t: typedesc[T]; args: varargs[untyped]): untyped
Source   Edit  

Templates

template column[T: SomeFabric](_: typedesc[T]; column: untyped): FabricColumn
Source   Edit  
template currentCount[T: SomeFabric](t: typedesc[T]): int
Source   Edit  
template freeze[T: SomeFabric](t: typedesc[T])
Source   Edit  
template isFrozen[T: SomeFabric](t: typedesc[T]): bool
Source   Edit  
template unravel[T: SomeFabric](_: typedesc[T]; toApply: untyped): untyped
Source   Edit