From ddcf26824e07a3f3259a311dcf84ab5de353d190 Mon Sep 17 00:00:00 2001 From: Curtis Vogt Date: Mon, 25 Oct 2021 22:32:27 -0500 Subject: [PATCH 1/3] Populate FileBuffer on more operations --- src/buffer.jl | 13 ++++--------- test/buffer.jl | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/buffer.jl b/src/buffer.jl index 9801178..0b058a7 100644 --- a/src/buffer.jl +++ b/src/buffer.jl @@ -34,23 +34,18 @@ end Base.isreadable(buffer::FileBuffer) = buffer.read Base.iswritable(buffer::FileBuffer) = buffer.write -Base.seek(buffer::FileBuffer, n::Integer) = seek(buffer.io, n) +Base.seek(buffer::FileBuffer, n::Integer) = (_read(buffer); seek(buffer.io, n)) Base.seekstart(buffer::FileBuffer) = seekstart(buffer.io) -Base.seekend(buffer::FileBuffer) = seekend(buffer.io) +Base.seekend(buffer::FileBuffer) = (_read(buffer); seekend(buffer.io)) Base.position(buffer::FileBuffer) = position(buffer.io) -function Base.eof(buffer::FileBuffer) - if position(buffer) == 0 - _read(buffer) - seekstart(buffer) - end - return eof(buffer.io) -end +Base.eof(buffer::FileBuffer) = (_read(buffer); eof(buffer.io)) function _read(buffer::FileBuffer) # If our IOBuffer is empty then populate it with the # filepath contents if buffer.io.size == 0 write(buffer.io, read(buffer.path)) + seekstart(buffer.io) end end diff --git a/test/buffer.jl b/test/buffer.jl index baaff67..6d3f819 100644 --- a/test/buffer.jl +++ b/test/buffer.jl @@ -39,6 +39,38 @@ using FilePathsBase: FileBuffer end end + @testset "seek" begin + p = p"../README.md" + io = FileBuffer(p) + try + @test position(io) == 0 + @test position(seekend(io)) > 0 + @test position(seekstart(io)) == 0 + @test position(seek(io, 5)) == 5 + finally + close(io) + end + end + + @testset "populate" begin + funcs = ( + :seek => io -> seek(io, 1), + :seekend => seekend, + :eof => eof, + ) + + @testset "$name" for (name, f) in funcs + p = p"../README.md" + buffer = FileBuffer(p) + try + f(buffer) + @test buffer.io.size > 0 + finally + close(buffer) + end + end + end + @testset "write" begin mktmpdir() do d p1 = absolute(p"../README.md") From 6cdda0cdd1e26c1c817687093278450e349a7ccd Mon Sep 17 00:00:00 2001 From: Curtis Vogt Date: Mon, 25 Oct 2021 22:33:07 -0500 Subject: [PATCH 2/3] Add skip method --- src/buffer.jl | 1 + test/buffer.jl | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/buffer.jl b/src/buffer.jl index 0b058a7..c87d857 100644 --- a/src/buffer.jl +++ b/src/buffer.jl @@ -35,6 +35,7 @@ end Base.isreadable(buffer::FileBuffer) = buffer.read Base.iswritable(buffer::FileBuffer) = buffer.write Base.seek(buffer::FileBuffer, n::Integer) = (_read(buffer); seek(buffer.io, n)) +Base.skip(buffer::FileBuffer, n::Integer) = (_read(buffer); skip(buffer.io, n)) Base.seekstart(buffer::FileBuffer) = seekstart(buffer.io) Base.seekend(buffer::FileBuffer) = (_read(buffer); seekend(buffer.io)) Base.position(buffer::FileBuffer) = position(buffer.io) diff --git a/test/buffer.jl b/test/buffer.jl index 6d3f819..2c45a6f 100644 --- a/test/buffer.jl +++ b/test/buffer.jl @@ -47,6 +47,7 @@ using FilePathsBase: FileBuffer @test position(seekend(io)) > 0 @test position(seekstart(io)) == 0 @test position(seek(io, 5)) == 5 + @test position(skip(io, 10)) == 15 finally close(io) end @@ -55,6 +56,7 @@ using FilePathsBase: FileBuffer @testset "populate" begin funcs = ( :seek => io -> seek(io, 1), + :skip => io -> skip(io, 1), :seekend => seekend, :eof => eof, ) From 92e4fc31c49779c7d527ae2190abbbc846f86bba Mon Sep 17 00:00:00 2001 From: Curtis Vogt Date: Tue, 26 Oct 2021 14:39:40 -0500 Subject: [PATCH 3/3] Set package version to 0.9.13 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 572b32f..3f397b9 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "FilePathsBase" uuid = "48062228-2e41-5def-b9a4-89aafe57970f" authors = ["Rory Finnegan"] -version = "0.9.12" +version = "0.9.13" [deps] Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"