prefix-lines.scp (1652B)
1 -- Extract payloads from LF-delimited tagged log lines, retaining order. 2 -- Configuration input: exact prefix bytes (no trimming); state is ignored. 3 -- Runtime input: whole-file bytes. Exact prefix-only lines yield present ""; 4 -- nonmatching lines are skipped. Empty prefix keeps every line unchanged. 5 -- No CRLF decoding, streaming or termination guarantee is implied. 6 !import makeWorker as Make 7 !import prepend as Prepend 8 !import fold as Fold 9 !import reverse as Reverse 10 !import splitLines as Split 11 !import stripPrefix as Prefix 12 !import mapMaybe as Collect 13 !export configurePrefix 14 15 consumer prefixLines 16 bytes @ (splitter, collector) => 17 call splitter bytes as lines in call collector lines as suffixes in suffixes 18 19 -- Input: explicit constructor worker; result: splitter worker. 20 consumer splitter 21 make @ _ => 22 call make (leaf, Prepend.prepend) as prepender in 23 call make (leaf, Fold.fold) as folder in 24 call make ((folder, prepender), Reverse.reverse) as reverser in 25 call make (([], reverser), Split.splitLines) as worker in worker 26 27 -- Input: prefix and constructor worker; no worker conversion is implicit. 28 consumer assemble 29 (prefix, make) @ _ => 30 call make (leaf, Self.splitter) as buildSplit in 31 call buildSplit make as split in 32 call make (prefix, Prefix.stripPrefix) as mapper in 33 call make (mapper, Collect.mapMaybe) as collector in 34 call make ((split, collector), Self.prefixLines) as worker in 35 [("prefixLines", worker) | []] 36 37 consumer configurePrefix 38 prefix @ _ => 39 call ("scp-worker.v1", (leaf, Self.assemble)) 40 (prefix, ("scp-worker.v1", (leaf, Make.makeWorker))) as workers in workers