
Reader.pudu
Pudu36 lines1.2 KB
1/** @Log.Formatting.Reader.Module — events read back from compact JSON */2module PuduLangLog.Formatting.Reader34import Std.Io as Io5import PuduLangLog.Domain.Clef as Clef6import PuduLangLog as Log78910export fn readLine(text: Str) -> Result[Log.Event, Str] { Clef.line(text) }11121314export fn readAll(text: Str) -> Result[Array[Log.Event], Str] {15 var events: Array[Log.Event] = []16 var number = 017 for written in text.split("\n") {18 number = number + 119 if !written.trim().isEmpty() {20 match Clef.line(written) {21 case Ok(event) => { events = events.push(event) }22 case Err(problem) => { return Err("Line " + show(number) + ": " + problem) }23 }24 }25 }26 Ok(events)27}282930export fn readFile(path: Str) -> Result[Array[Log.Event], Str] {31 match Io.read(path) {32 case Ok(text) => readAll(text)33 case Err(problem) => Err("Cannot read `" + path + "`: " + show(problem))34 }35}36