32 lines
679 B
V
32 lines
679 B
V
module resp
|
|
|
|
import io
|
|
|
|
pub struct StringReader {
|
|
text string
|
|
mut:
|
|
place int
|
|
}
|
|
|
|
fn imin(a int, b int) int {
|
|
return if a < b { a } else { b }
|
|
}
|
|
|
|
fn (mut s StringReader) read(mut buf []u8) !int {
|
|
// console.print_header(' consumer buff len $buf.len ($s.place | ${imin(s.place + buf.len, s.text.len)} | $s.text.len)')
|
|
if s.place >= s.text.len {
|
|
// console.print_debug('NONE')
|
|
return -1
|
|
}
|
|
nrread := copy(mut buf, s.text[s.place..imin(s.place + buf.len, s.text.len)].bytes())
|
|
s.place += nrread
|
|
return nrread
|
|
}
|
|
|
|
pub fn buffered_string_reader(s string) &io.BufferedReader {
|
|
mut s2 := StringReader{
|
|
text: s + ' '
|
|
}
|
|
return io.new_buffered_reader(reader: s2, cap: 256)
|
|
}
|