tricu

A lazy functional language based on Tree Calculus
Log | Files | Refs | README | LICENSE

text.tri (794B)


      1 !import io as IO
      2 !import io_text as Text
      3 !export encode
      4 !export decode
      5 !export source
      6 !export write
      7 !export roundTrip
      8 
      9 encode limit text = IO.io (Text.encodeText limit text)
     10 decode final bytes = IO.io (IO.decodeUTF8 final bytes)
     11 source path limit = IO.io <| IO.scope (owner : do IO.onOk
     12   reader <- IO.openReader owner path
     13   Text.readSource reader limit)
     14 write path text = IO.io <| IO.scope (owner : do IO.onOk
     15   writer <- IO.openWriter owner path
     16   Text.writeText writer text)
     17 roundTrip input output limit = IO.io <| IO.scope (owner : do IO.onOk
     18   reader <- IO.openReader owner input
     19   received <- Text.readSource reader limit
     20   case received of
     21     (_, chars) = do IO.onOk
     22       writer <- IO.openWriter owner output
     23       Text.writeText writer chars
     24     _ = IO.fail "Invalid source result")