ref: 11f79ed8ff75049f6b1866d70bc032c8d18b1463
dir: /lib/bio/test/bio-delim.myr/
use std
use bio
const main = {
var f
var d
match bio.open("data/lines", bio.Rd)
| `std.Ok bio: f = bio
| `std.Err m: std.fatal("Unable to open data file: {}\n", m)
;;
/* read first line */
d = readln(f)
std.write(1, d)
std.write(1, "\n")
std.slfree(d)
/* read second line, should not include \n */
d = readln(f)
std.write(1, d)
std.write(1, "\n")
std.slfree(d)
/* read second line, should not include \r\n */
d = readln(f)
std.write(1, d)
std.write(1, "\n")
std.slfree(d)
/* read second line, should not include \r */
d = readln(f)
std.write(1, d)
std.write(1, "\n")
std.slfree(d)
/* read to ';' */
d = readto(f, ";")
std.write(1, d)
std.write(1, "\n")
std.slfree(d)
/* read to ';' again */
d = readto(f, ";")
std.write(1, d)
std.write(1, "\n")
std.slfree(d)
/* '--' this time */
d = readto(f, "--")
std.write(1, d)
std.write(1, "\n")
std.slfree(d)
/* and without the terminator, we should get the remaining text */
d = readto(f, "not-there")
std.write(1, d)
std.write(1, "\n")
std.slfree(d)
/* and now, eof */
d = readln(f)
d = readto(f, "actually, eof")
bio.close(f)
}
const readln = {f
match bio.readln(f)
| `bio.Ok d: -> d
| `bio.Eof:
std.put("eof\n")
-> [][:]
| `bio.Err e:
std.put("err\n")
-> [][:]
;;
}
const readto = {f, delim
match bio.readto(f, delim)
| `bio.Ok d: -> d
| `bio.Eof:
std.put("eof\n")
-> [][:]
| `bio.Err e:
std.put("err\n")
-> [][:]
;;
}