Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions docs/make.jl
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
using Documenter, StatFiles

makedocs(
modules = [StatFiles],
sitename = "StatFiles.jl",
modules=[StatFiles],
sitename="StatFiles.jl",
analytics="UA-132838790-1",
pages = [
pages=[
"Introduction" => "index.md"
]
)

deploydocs(
repo = "github.com/queryverse/StatFiles.jl.git"
repo="github.com/queryverse/StatFiles.jl.git"
)
14 changes: 7 additions & 7 deletions src/StatFiles.jl
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ end

function Base.show(io::IO, source::StatFile)
file_ext = lowercase(splitext(source.filename)[2])
filetype = if file_ext==".dta"
filetype = if file_ext == ".dta"
"STATA file"
elseif file_ext==".sav"
elseif file_ext == ".sav"
"SPSS file"
elseif file_ext==".sas7bdat"
elseif file_ext == ".sas7bdat"
"SAS file"
else
"file"
Expand Down Expand Up @@ -53,13 +53,13 @@ TableTraits.isiterabletable(x::StatFile) = true

function IteratorInterfaceExtensions.getiterator(file::StatFile)
filename, extension = splitext(file.filename)
if extension==".dta"
if extension == ".dta"
df = read_dta(file.filename)
elseif extension==".por"
elseif extension == ".por"
df = read_por(file.filename)
elseif extension==".sav"
elseif extension == ".sav"
df = read_sav(file.filename)
elseif extension==".sas7bdat"
elseif extension == ".sas7bdat"
df = read_sas7bdat(file.filename)
else
error("Unknown file type.")
Expand Down
78 changes: 39 additions & 39 deletions test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -6,65 +6,65 @@ using Test

@testset "StatFiles" begin

ar = load("types.dta") |> IteratorInterfaceExtensions.getiterator |> collect
ar = load("types.dta") |> IteratorInterfaceExtensions.getiterator |> collect

@test length(ar) == 3
@test ar[1] == (vfloat=DataValue{Float32}(3.14), vdouble=DataValue(3.14), vlong=DataValue{Int32}(2), vint=DataValue{Int16}(2), vbyte=DataValue{Int8}(2), vstring=DataValue("2"))
@test ar[2] == (vfloat=DataValue{Float32}(7.), vdouble=DataValue(7.), vlong=DataValue{Int32}(7), vint=DataValue{Int16}(7), vbyte=DataValue{Int8}(7), vstring=DataValue("7"))
@test ar[3] == (vfloat=DataValue{Float32}(), vdouble=DataValue{Float64}(), vlong=DataValue{Int32}(), vint=DataValue{Int16}(), vbyte=DataValue{Int8}(), vstring=DataValue(""))
@test TableTraits.isiterabletable(load("types.dta")) == true
@test IteratorInterfaceExtensions.isiterable(load("types.dta")) == true
@test length(ar) == 3
@test ar[1] == (vfloat = DataValue{Float32}(3.14), vdouble = DataValue(3.14), vlong = DataValue{Int32}(2), vint = DataValue{Int16}(2), vbyte = DataValue{Int8}(2), vstring = DataValue("2"))
@test ar[2] == (vfloat = DataValue{Float32}(7.), vdouble = DataValue(7.), vlong = DataValue{Int32}(7), vint = DataValue{Int16}(7), vbyte = DataValue{Int8}(7), vstring = DataValue("7"))
@test ar[3] == (vfloat = DataValue{Float32}(), vdouble = DataValue{Float64}(), vlong = DataValue{Int32}(), vint = DataValue{Int16}(), vbyte = DataValue{Int8}(), vstring = DataValue(""))
@test TableTraits.isiterabletable(load("types.dta")) == true
@test IteratorInterfaceExtensions.isiterable(load("types.dta")) == true

ar = load("types.sas7bdat") |> IteratorInterfaceExtensions.getiterator |> collect
ar = load("types.sas7bdat") |> IteratorInterfaceExtensions.getiterator |> collect

@test length(ar) == 3
@test ar[1] == (vfloat=DataValue{Float32}(3.14), vdouble=DataValue(3.14), vlong=DataValue{Int32}(2), vint=DataValue{Int16}(2), vbyte=DataValue{Int8}(2), vstring=DataValue("2"))
@test ar[2] == (vfloat=DataValue{Float32}(7.), vdouble=DataValue(7.), vlong=DataValue{Int32}(7), vint=DataValue{Int16}(7), vbyte=DataValue{Int8}(7), vstring=DataValue("7"))
@test ar[3] == (vfloat=DataValue{Float32}(), vdouble=DataValue{Float64}(), vlong=DataValue{Int32}(), vint=DataValue{Int16}(), vbyte=DataValue{Int8}(), vstring=DataValue(""))
@test TableTraits.isiterabletable(load("types.sas7bdat")) == true
@test IteratorInterfaceExtensions.isiterable(load("types.sas7bdat")) == true
@test length(ar) == 3
@test ar[1] == (vfloat = DataValue{Float32}(3.14), vdouble = DataValue(3.14), vlong = DataValue{Int32}(2), vint = DataValue{Int16}(2), vbyte = DataValue{Int8}(2), vstring = DataValue("2"))
@test ar[2] == (vfloat = DataValue{Float32}(7.), vdouble = DataValue(7.), vlong = DataValue{Int32}(7), vint = DataValue{Int16}(7), vbyte = DataValue{Int8}(7), vstring = DataValue("7"))
@test ar[3] == (vfloat = DataValue{Float32}(), vdouble = DataValue{Float64}(), vlong = DataValue{Int32}(), vint = DataValue{Int16}(), vbyte = DataValue{Int8}(), vstring = DataValue(""))
@test TableTraits.isiterabletable(load("types.sas7bdat")) == true
@test IteratorInterfaceExtensions.isiterable(load("types.sas7bdat")) == true

ar = load("types.sav") |> IteratorInterfaceExtensions.getiterator |> collect
ar = load("types.sav") |> IteratorInterfaceExtensions.getiterator |> collect

@test length(ar) == 3
@test ar[1] == (vfloat=DataValue{Float32}(3.14), vdouble=DataValue(3.14), vlong=DataValue{Int32}(2), vint=DataValue{Int16}(2), vbyte=DataValue{Int8}(2), vstring=DataValue("2"))
@test ar[2] == (vfloat=DataValue{Float32}(7.), vdouble=DataValue(7.), vlong=DataValue{Int32}(7), vint=DataValue{Int16}(7), vbyte=DataValue{Int8}(7), vstring=DataValue("7"))
@test ar[3] == (vfloat=DataValue{Float32}(), vdouble=DataValue{Float64}(), vlong=DataValue{Int32}(), vint=DataValue{Int16}(), vbyte=DataValue{Int8}(), vstring=DataValue(""))
@test TableTraits.isiterabletable(load("types.sav")) == true
@test IteratorInterfaceExtensions.isiterable(load("types.sav")) == true
@test length(ar) == 3
@test ar[1] == (vfloat = DataValue{Float32}(3.14), vdouble = DataValue(3.14), vlong = DataValue{Int32}(2), vint = DataValue{Int16}(2), vbyte = DataValue{Int8}(2), vstring = DataValue("2"))
@test ar[2] == (vfloat = DataValue{Float32}(7.), vdouble = DataValue(7.), vlong = DataValue{Int32}(7), vint = DataValue{Int16}(7), vbyte = DataValue{Int8}(7), vstring = DataValue("7"))
@test ar[3] == (vfloat = DataValue{Float32}(), vdouble = DataValue{Float64}(), vlong = DataValue{Int32}(), vint = DataValue{Int16}(), vbyte = DataValue{Int8}(), vstring = DataValue(""))
@test TableTraits.isiterabletable(load("types.sav")) == true
@test IteratorInterfaceExtensions.isiterable(load("types.sav")) == true

end

@testset "Show" begin

ar = load("types.dta")
ar = load("types.dta")

@test sprint((stream,data)->show(stream, "text/html", data), ar) == "<table><thead><tr><th>vfloat</th><th>vdouble</th><th>vlong</th><th>vint</th><th>vbyte</th><th>vstring</th></tr></thead><tbody><tr><td>3.14</td><td>3.14</td><td>2</td><td>2</td><td>2</td><td>&quot;2&quot;</td></tr><tr><td>7.0</td><td>7.0</td><td>7</td><td>7</td><td>7</td><td>&quot;7&quot;</td></tr><tr><td>#NA</td><td>#NA</td><td>#NA</td><td>#NA</td><td>#NA</td><td>&quot;&quot;</td></tr></tbody></table>"
@test sprint((stream,data)->show(stream, "application/vnd.dataresource+json", data), ar) ==
@test sprint((stream, data) -> show(stream, "text/html", data), ar) == "<table><thead><tr><th>vfloat</th><th>vdouble</th><th>vlong</th><th>vint</th><th>vbyte</th><th>vstring</th></tr></thead><tbody><tr><td>3.14</td><td>3.14</td><td>2</td><td>2</td><td>2</td><td>&quot;2&quot;</td></tr><tr><td>7.0</td><td>7.0</td><td>7</td><td>7</td><td>7</td><td>&quot;7&quot;</td></tr><tr><td>#NA</td><td>#NA</td><td>#NA</td><td>#NA</td><td>#NA</td><td>&quot;&quot;</td></tr></tbody></table>"
@test sprint((stream, data) -> show(stream, "application/vnd.dataresource+json", data), ar) ==
"{\"schema\":{\"fields\":[{\"name\":\"vfloat\",\"type\":\"number\"},{\"name\":\"vdouble\",\"type\":\"number\"},{\"name\":\"vlong\",\"type\":\"integer\"},{\"name\":\"vint\",\"type\":\"integer\"},{\"name\":\"vbyte\",\"type\":\"integer\"},{\"name\":\"vstring\",\"type\":\"string\"}]},\"data\":[{\"vfloat\":3.14,\"vdouble\":3.14,\"vlong\":2,\"vint\":2,\"vbyte\":2,\"vstring\":\"2\"},{\"vfloat\":7.0,\"vdouble\":7.0,\"vlong\":7,\"vint\":7,\"vbyte\":7,\"vstring\":\"7\"},{\"vfloat\":null,\"vdouble\":null,\"vlong\":null,\"vint\":null,\"vbyte\":null,\"vstring\":\"\"}]}"
@test sprint(show, ar) == "3x6 STATA file\nvfloat │ vdouble │ vlong │ vint │ vbyte │ vstring\n───────┼─────────┼───────┼──────┼───────┼────────\n3.14 │ 3.14 │ 2 │ 2 │ 2 │ \"2\" \n7.0 │ 7.0 │ 7 │ 7 │ 7 │ \"7\" \n#NA │ #NA │ #NA │ #NA │ #NA │ \"\" "
@test sprint(show, ar) == "3x6 STATA file\nvfloat │ vdouble │ vlong │ vint │ vbyte │ vstring\n───────┼─────────┼───────┼──────┼───────┼────────\n3.14 │ 3.14 │ 2 │ 2 │ 2 │ \"2\" \n7.0 │ 7.0 │ 7 │ 7 │ 7 │ \"7\" \n#NA │ #NA │ #NA │ #NA │ #NA │ \"\" "

@test showable("text/html", ar) == true
@test showable("application/vnd.dataresource+json", ar) == true
@test showable("text/html", ar) == true
@test showable("application/vnd.dataresource+json", ar) == true

ar = load("types.sas7bdat")
ar = load("types.sas7bdat")

@test sprint((stream,data)->show(stream, "text/html", data), ar) == "<table><thead><tr><th>vfloat</th><th>vdouble</th><th>vlong</th><th>vint</th><th>vbyte</th><th>vstring</th></tr></thead><tbody><tr><td>3.14</td><td>3.14</td><td>2.0</td><td>2.0</td><td>2.0</td><td>&quot;2&quot;</td></tr><tr><td>7.0</td><td>7.0</td><td>7.0</td><td>7.0</td><td>7.0</td><td>&quot;7&quot;</td></tr><tr><td>#NA</td><td>#NA</td><td>#NA</td><td>#NA</td><td>#NA</td><td>&quot;&quot;</td></tr></tbody></table>"
@test sprint((stream,data)->show(stream, "application/vnd.dataresource+json", data), ar) ==
@test sprint((stream, data) -> show(stream, "text/html", data), ar) == "<table><thead><tr><th>vfloat</th><th>vdouble</th><th>vlong</th><th>vint</th><th>vbyte</th><th>vstring</th></tr></thead><tbody><tr><td>3.14</td><td>3.14</td><td>2.0</td><td>2.0</td><td>2.0</td><td>&quot;2&quot;</td></tr><tr><td>7.0</td><td>7.0</td><td>7.0</td><td>7.0</td><td>7.0</td><td>&quot;7&quot;</td></tr><tr><td>#NA</td><td>#NA</td><td>#NA</td><td>#NA</td><td>#NA</td><td>&quot;&quot;</td></tr></tbody></table>"
@test sprint((stream, data) -> show(stream, "application/vnd.dataresource+json", data), ar) ==
"{\"schema\":{\"fields\":[{\"name\":\"vfloat\",\"type\":\"number\"},{\"name\":\"vdouble\",\"type\":\"number\"},{\"name\":\"vlong\",\"type\":\"number\"},{\"name\":\"vint\",\"type\":\"number\"},{\"name\":\"vbyte\",\"type\":\"number\"},{\"name\":\"vstring\",\"type\":\"string\"}]},\"data\":[{\"vfloat\":3.140000104904175,\"vdouble\":3.14,\"vlong\":2.0,\"vint\":2.0,\"vbyte\":2.0,\"vstring\":\"2\"},{\"vfloat\":7.0,\"vdouble\":7.0,\"vlong\":7.0,\"vint\":7.0,\"vbyte\":7.0,\"vstring\":\"7\"},{\"vfloat\":null,\"vdouble\":null,\"vlong\":null,\"vint\":null,\"vbyte\":null,\"vstring\":\"\"}]}"
@test sprint(show, ar) == "3x6 SAS file\nvfloat │ vdouble │ vlong │ vint │ vbyte │ vstring\n───────┼─────────┼───────┼──────┼───────┼────────\n3.14 │ 3.14 │ 2.0 │ 2.0 │ 2.0 │ \"2\" \n7.0 │ 7.0 │ 7.0 │ 7.0 │ 7.0 │ \"7\" \n#NA │ #NA │ #NA │ #NA │ #NA │ \"\" "
@test sprint(show, ar) == "3x6 SAS file\nvfloat │ vdouble │ vlong │ vint │ vbyte │ vstring\n───────┼─────────┼───────┼──────┼───────┼────────\n3.14 │ 3.14 │ 2.0 │ 2.0 │ 2.0 │ \"2\" \n7.0 │ 7.0 │ 7.0 │ 7.0 │ 7.0 │ \"7\" \n#NA │ #NA │ #NA │ #NA │ #NA │ \"\" "

@test showable("text/html", ar) == true
@test showable("application/vnd.dataresource+json", ar) == true
@test showable("text/html", ar) == true
@test showable("application/vnd.dataresource+json", ar) == true

ar = load("types.sav")
ar = load("types.sav")

@test sprint((stream,data)->show(stream, "text/html", data), ar) == "<table><thead><tr><th>vfloat</th><th>vdouble</th><th>vlong</th><th>vint</th><th>vbyte</th><th>vstring</th></tr></thead><tbody><tr><td>3.14</td><td>3.14</td><td>2.0</td><td>2.0</td><td>2.0</td><td>&quot;2&quot;</td></tr><tr><td>7.0</td><td>7.0</td><td>7.0</td><td>7.0</td><td>7.0</td><td>&quot;7&quot;</td></tr><tr><td>#NA</td><td>#NA</td><td>#NA</td><td>#NA</td><td>#NA</td><td>&quot;&quot;</td></tr></tbody></table>"
@test sprint((stream,data)->show(stream, "application/vnd.dataresource+json", data), ar) ==
@test sprint((stream, data) -> show(stream, "text/html", data), ar) == "<table><thead><tr><th>vfloat</th><th>vdouble</th><th>vlong</th><th>vint</th><th>vbyte</th><th>vstring</th></tr></thead><tbody><tr><td>3.14</td><td>3.14</td><td>2.0</td><td>2.0</td><td>2.0</td><td>&quot;2&quot;</td></tr><tr><td>7.0</td><td>7.0</td><td>7.0</td><td>7.0</td><td>7.0</td><td>&quot;7&quot;</td></tr><tr><td>#NA</td><td>#NA</td><td>#NA</td><td>#NA</td><td>#NA</td><td>&quot;&quot;</td></tr></tbody></table>"
@test sprint((stream, data) -> show(stream, "application/vnd.dataresource+json", data), ar) ==
"{\"schema\":{\"fields\":[{\"name\":\"vfloat\",\"type\":\"number\"},{\"name\":\"vdouble\",\"type\":\"number\"},{\"name\":\"vlong\",\"type\":\"number\"},{\"name\":\"vint\",\"type\":\"number\"},{\"name\":\"vbyte\",\"type\":\"number\"},{\"name\":\"vstring\",\"type\":\"string\"}]},\"data\":[{\"vfloat\":3.140000104904175,\"vdouble\":3.14,\"vlong\":2.0,\"vint\":2.0,\"vbyte\":2.0,\"vstring\":\"2\"},{\"vfloat\":7.0,\"vdouble\":7.0,\"vlong\":7.0,\"vint\":7.0,\"vbyte\":7.0,\"vstring\":\"7\"},{\"vfloat\":null,\"vdouble\":null,\"vlong\":null,\"vint\":null,\"vbyte\":null,\"vstring\":\"\"}]}"
@test sprint(show, ar) == "3x6 SPSS file\nvfloat │ vdouble │ vlong │ vint │ vbyte │ vstring\n───────┼─────────┼───────┼──────┼───────┼────────\n3.14 │ 3.14 │ 2.0 │ 2.0 │ 2.0 │ \"2\" \n7.0 │ 7.0 │ 7.0 │ 7.0 │ 7.0 │ \"7\" \n#NA │ #NA │ #NA │ #NA │ #NA │ \"\" "
@test sprint(show, ar) == "3x6 SPSS file\nvfloat │ vdouble │ vlong │ vint │ vbyte │ vstring\n───────┼─────────┼───────┼──────┼───────┼────────\n3.14 │ 3.14 │ 2.0 │ 2.0 │ 2.0 │ \"2\" \n7.0 │ 7.0 │ 7.0 │ 7.0 │ 7.0 │ \"7\" \n#NA │ #NA │ #NA │ #NA │ #NA │ \"\" "

@test showable("text/html", ar) == true
@test showable("application/vnd.dataresource+json", ar) == true
@test showable("text/html", ar) == true
@test showable("application/vnd.dataresource+json", ar) == true

end