-
Notifications
You must be signed in to change notification settings - Fork 0
/
textreader.jl
32 lines (27 loc) · 873 Bytes
/
textreader.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import Pkg
Packages = ["IterTools", "LinearAlgebra", "LinearAlgebra", "StatsBase", "Test"]
for p in Packages; Pkg.add(p); end;
using Knet, Base.Iterators, IterTools, LinearAlgebra, StatsBase, Test
struct TextReader
file::String
vocab::Vocab
end
function Base.iterate(r::TextReader, s=nothing)
if s==nothing
state=open(r.file)
else
state=s
end
if eof(state)
close(state)
return nothing
else
line= readline(state)
return words_to_ints(r.vocab, line), state
end
end
# These are some optional functions that can be defined for iterators. They are required for
# `collect` to work, which converts an iterator to a regular array.
Base.IteratorSize(::Type{TextReader}) = Base.SizeUnknown()
Base.IteratorEltype(::Type{TextReader}) = Base.HasEltype()
Base.eltype(::Type{TextReader}) = Vector{Int}