Skip to content

Commit 3740ede

Browse files
committed
remove human constructor need with filter fields
1 parent b3b5833 commit 3740ede

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

src/services/Serialization.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,10 +207,12 @@ function transcodeType(
207207
_srckeys(s) = fieldnames(typeof(s))
208208
_srcvals(s::AbstractDict) = values(s)
209209
_srcvals(s) = map(k->getproperty(s,k), _srckeys(s))
210+
# NOTE, improvement, filter extraneous fields not in _names
211+
arr = [makething(Symbol(k),v) for (k,v) in zip(_srckeys(inObj),_srcvals(inObj))]
212+
filter!(s->s[1] in _names, arr)
210213
# create dict provided fields into a NamedTuple as a type stable "pre-struct"
211-
nt = (;(makething(Symbol(k),v) for (k,v) in zip(_srckeys(inObj),_srcvals(inObj)))...)
214+
nt = (;arr...)
212215
# use keyword constructors provided by Base.@kwdef to resolve random ordering, incomplete dicts, and defaults
213-
# TODO, improvement, filter extraneous fields not in _names
214216
T(;nt...)
215217
end
216218

test/testTranscodeTypeUnmarshaling.jl

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,14 @@ Base.@kwdef struct HardType
1515
time::DateTime = now(UTC)
1616
val::Float64 = 0.0
1717
end
18-
19-
# slight human overhead for each type to ignore extraneous field construction
20-
# TODO, devnote drop this requirement with filter of _names in transcodeType
21-
HardType(;
22-
name::String,
23-
time::DateTime = now(UTC),
24-
val::Float64 = 0.0,
25-
ignorekws...
26-
) = HardType(name,time,val)
18+
# # slight human overhead for each type to ignore extraneous field construction
19+
# # TODO, devnote drop this requirement with filter of _names in transcodeType
20+
# HardType(;
21+
# name::String,
22+
# time::DateTime = now(UTC),
23+
# val::Float64 = 0.0,
24+
# ignorekws...
25+
# ) = HardType(name,time,val)
2726

2827
@testset "Test transcoding of Intermediate, Dict, OrderedDict to a HardType" begin
2928

0 commit comments

Comments
 (0)