Skip to content

Commit 6b26654

Browse files
authored
Merge pull request #11 from JuliaData/jq/io
Fix parsing for IOStream; it turns out the fallback for peekbyte, Bas…
2 parents ac21103 + d4f7181 commit 6b26654

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

src/Parsers.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ function readbyte end
2727
function peekbyte end
2828

2929
readbyte(from::IO) = Base.read(from, UInt8)
30-
peekbyte(from::IO) = Base.peek(from)
30+
peekbyte(from::IO) = UInt8(Base.peek(from))
3131

3232
function readbyte(from::IOBuffer)
3333
@inbounds byte = from.data[from.ptr]
@@ -285,8 +285,8 @@ function checknewline(io, r)
285285
return true
286286
elseif b === UInt8('\r')
287287
readbyte(io)
288-
r.code |= NEWLINE | ifelse(eof(io), EOF, SUCCESS)
289288
!eof(io) && peekbyte(io) === UInt8('\n') && readbyte(io)
289+
r.code |= NEWLINE | ifelse(eof(io), EOF, SUCCESS)
290290
return true
291291
end
292292
return false

test/runtests.jl

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -649,6 +649,33 @@ let io=IOBuffer("1,2,null,4"), layers=Parsers.Delimited(Parsers.Quoted(Parsers.S
649649
@test r.pos == 9
650650
end
651651

652+
# https://github.com/JuliaData/CSV.jl/issues/344
653+
open("temp", "w+") do io
654+
write(io, "1,2,null,4")
655+
end
656+
657+
let layers=Parsers.Delimited(Parsers.Quoted(Parsers.Sentinel(["null"])))
658+
open("temp") do io
659+
r = Parsers.parse(layers, io, Int)
660+
@test r.result === 1
661+
@test r.code === OK | DELIMITED
662+
@test r.pos == 0
663+
r = Parsers.parse(layers, io, Int)
664+
@test r.result === 2
665+
@test r.code === OK | DELIMITED
666+
@test r.pos == 2
667+
r = Parsers.parse(layers, io, Int)
668+
@test r.result === missing
669+
@test r.code === SENTINEL | DELIMITED
670+
@test r.pos == 4
671+
r = Parsers.parse(layers, io, Int)
672+
@test r.result === 4
673+
@test r.code === OK | EOF
674+
@test r.pos == 9
675+
end
676+
end
677+
rm("temp")
678+
652679
# 6: AbstractString input
653680
@test Parsers.parse(SubString("101"), Int) === 101
654681
@test Parsers.parse(SubString("101,101"), Float64; decimal=',') === 101.101

0 commit comments

Comments
 (0)