RosettaCodeData/Task/Tokenize-a-string-with-escaping/Nim/tokenize-a-string-with-escaping.nim

19 lines
410 B
Nim
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
import streams
proc tokenize(s: Stream, sep: static[char] = '|', esc: static[char] = '^'): seq[string] =
var buff = ""
while not s.atEnd():
let c = s.readChar
case c
of sep:
result.add buff
buff = ""
of esc:
buff.add s.readChar
else:
buff.add c
result.add buff
for i, s in tokenize(newStringStream "one^|uno||three^^^^|four^^^|^cuatro|"):
echo i, ":", s