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")