tricu

An interpreted language for exploring Tree Calculus
Log | Files | Refs | README | LICENSE

sourceModuleCodec.tri (1276B)


      1 !import "source.object" !Local
      2 !import "source.module" !Local
      3 !import "prelude" !Local
      4 
      5 sourceModuleCodecHash = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
      6 codecTree = (and?
      7   (equal? (sourceObjectEncode (t (t t))) [(1) (1) (0)])
      8   (equal? (sourceObjectEncode (t (t t) (t t t)))
      9     [(2) (1) (0) (2) (0) (0)]))
     10 codecBadTag = resultIsErr (sourceObjectDecodeComplete [(3)])
     11 codecTrailing = resultIsErr (sourceObjectDecodeComplete [(0) (0)])
     12 codecRoundTrip = resultIsOk (sourceObjectDecodeComplete [(2) (0) (1) (0)])
     13 codecDuplicate = resultIsErr (sourceModuleDecode (sourceModuleEncode
     14   [(pair "duplicate" sourceModuleCodecHash)
     15    (pair "duplicate" sourceModuleCodecHash)]))
     16 codecEscaped = resultIsOk (sourceModuleDecode
     17   (sourceModuleEncode [(pair "perc%ent" sourceModuleCodecHash)]))
     18 codecInvalidEscape = resultIsErr (sourceModuleDecode
     19   "arboricx.module-manifest.v1\nexport\tperc%ent\tarboricx.tree-term.v1\t0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\tarboricx.abi.tree.v1\n")
     20 sourceModuleCodec =
     21   andLazy? codecTree (_ :
     22     andLazy? codecBadTag (_ :
     23       andLazy? codecTrailing (_ :
     24         andLazy? codecRoundTrip (_ :
     25           andLazy? codecDuplicate (_ :
     26             andLazy? codecEscaped (_ : codecInvalidEscape))))))