From f58858fea7e7fab33171ca20e358451b79c5e195 Mon Sep 17 00:00:00 2001 From: TEC Date: Mon, 17 Oct 2022 21:39:42 +0800 Subject: [PATCH] Enable missing-value Integer/Number fields --- lib/Surveys.jl | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/Surveys.jl b/lib/Surveys.jl index 1a35e0c..dcfb8c2 100644 --- a/lib/Surveys.jl +++ b/lib/Surveys.jl @@ -257,12 +257,21 @@ function Response(s::Survey, oldids::Vector{ResponseID}) end interpret(::FormField{<:AbstractString}, value::AbstractString) = value -interpret(::FormField{Integer}, value::AbstractString) = parse(Int64, value) +interpret(::FormField{Integer}, value::AbstractString) = + if isempty(value) + missing + else + something(tryparse(Int64, value), value) + end default_validators(::FormField{Integer}) = function(unparseable::String) "Integer required. \"$unparseable\" could not be parsed as an integer." end interpret(::FormField{Number}, value::AbstractString) = - something(tryparse(Int64, value), parse(Float64, value)) + if isempty(value) + missing + else + something(tryparse(Int64, value), tryparse(Float64, value), value) + end default_validators(::FormField{Number}) = function(unparseable::String) "Number required. \"$unparseable\" could not be parsed as a number." end