diff --git a/docs/make.jl b/docs/make.jl index 047f96b..4b507ce 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -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" ) diff --git a/src/StatFiles.jl b/src/StatFiles.jl index 55ba08e..18ba5bc 100644 --- a/src/StatFiles.jl +++ b/src/StatFiles.jl @@ -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" @@ -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.") diff --git a/test/runtests.jl b/test/runtests.jl index 3fcb02b..a16dfed 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -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) == "
vfloatvdoublevlongvintvbytevstring
3.143.14222"2"
7.07.0777"7"
#NA#NA#NA#NA#NA""
" -@test sprint((stream,data)->show(stream, "application/vnd.dataresource+json", data), ar) == + @test sprint((stream, data) -> show(stream, "text/html", data), ar) == "
vfloatvdoublevlongvintvbytevstring
3.143.14222"2"
7.07.0777"7"
#NA#NA#NA#NA#NA""
" + @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) == "
vfloatvdoublevlongvintvbytevstring
3.143.142.02.02.0"2"
7.07.07.07.07.0"7"
#NA#NA#NA#NA#NA""
" -@test sprint((stream,data)->show(stream, "application/vnd.dataresource+json", data), ar) == + @test sprint((stream, data) -> show(stream, "text/html", data), ar) == "
vfloatvdoublevlongvintvbytevstring
3.143.142.02.02.0"2"
7.07.07.07.07.0"7"
#NA#NA#NA#NA#NA""
" + @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) == "
vfloatvdoublevlongvintvbytevstring
3.143.142.02.02.0"2"
7.07.07.07.07.0"7"
#NA#NA#NA#NA#NA""
" -@test sprint((stream,data)->show(stream, "application/vnd.dataresource+json", data), ar) == + @test sprint((stream, data) -> show(stream, "text/html", data), ar) == "
vfloatvdoublevlongvintvbytevstring
3.143.142.02.02.0"2"
7.07.07.07.07.0"7"
#NA#NA#NA#NA#NA""
" + @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