Enable missing-value Integer/Number fields

This commit is contained in:
TEC 2022-10-17 21:39:42 +08:00
parent 9f2deffb53
commit f58858fea7
Signed by: tec
SSH Key Fingerprint: SHA256:eobz41Mnm0/iYWBvWThftS0ElEs1ftBr6jamutnXc/A
1 changed files with 11 additions and 2 deletions

View File

@ -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