Qu

read_until

Builtin index · File I/O

result = read_until(f, delimiter)

Input: f, delimiter · Output: result

What it is

Reads from f (file handle, opened readable) up to and including the next occurrence of delimiter (string), consuming it.

Overloads

One call shape — this function is not overloaded.

CodeInputOutputDescription
result = read_until(f, delimiter)
f stringnot documented yet
delimiter stringnot documented yet
result string
Returns a string of everything read, with delimiter stripped off the end. If delimiter never appears again before EOF, returns everything remaining instead of erroring.

Examples

From the documentation, and run by the build -- the output and the figure below are what the engine actually produced. Simplest first.

f = fopen("greeting.txt", "w")
write_char(f, "Hello,World")
close(f)

g = fopen("greeting.txt", "r")
first       = read_char(g)         # "H"

peeked      = peek_char(g)         # "e" -- cursor not moved

next        = read_char(g)         # "e" again, same char peeked returned

chunk       = read_chars(g, 3)     # "llo"

next_byte   = peek_byte(g)         # 44, the byte for ',' -- still not consumed

before_comma = read_until(g, ",")  # "" -- the comma was right there, now consumed

w_byte      = read_byte(g)         # 87, the byte for 'W'

rest        = read_all(g)          # "orld"

close(g)
print("{first}{next}{chunk} peeked={peeked} next_byte={next_byte} before_comma=\"{before_comma}\" w_byte={w_byte} rest={rest}")
# Hello peeked=e next_byte=44 before_comma="" w_byte=87 rest=orld

output
Hello peeked=e next_byte=44 before_comma="" w_byte=87 rest=orld

from file-io

How it works

read_until(f, delimiter) — reads up to (and consuming) the next occurrence of delimiter; if delimiter never appears before EOF, returns everything remaining (not an error — there's nothing exceptional about a delimiter simply not being there again).

From the note above this builtin in the interpreter, where the reasoning was written down as it was built.