From dcf2fc0d154240910473071733dfdcc2c4522833 Mon Sep 17 00:00:00 2001 From: Jonnie Diegelman Date: Fri, 21 Jan 2022 15:50:08 -0500 Subject: [PATCH] `merge` method for kwarg splatting. Closes #117 --- Project.toml | 2 +- src/namedtuple_interface.jl | 2 ++ test/runtests.jl | 8 +++++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Project.toml b/Project.toml index a826ef39..96374a9e 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "ComponentArrays" uuid = "b0b7db55-cfe3-40fc-9ded-d10e2dbeff66" authors = ["Jonnie Diegelman <47193959+jonniedie@users.noreply.github.com>"] -version = "0.11.8" +version = "0.11.9" [deps] ArrayInterface = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" diff --git a/src/namedtuple_interface.jl b/src/namedtuple_interface.jl index 59efe0b4..c5028806 100644 --- a/src/namedtuple_interface.jl +++ b/src/namedtuple_interface.jl @@ -16,3 +16,5 @@ Base.propertynames(x::ComponentVector) = propertynames(indexmap(getaxes(x)[1])) @inline Base.setproperty!(x::ComponentVector, s::Symbol, v) = _setindex!(x, v, Val(s)) @inline Base.setproperty!(x::ComponentVector, s::Val, v) = _setindex!(x, v, s) + +Base.merge(a::NamedTuple, b::ComponentArray) = merge(a, NamedTuple(b)) \ No newline at end of file diff --git a/test/runtests.jl b/test/runtests.jl index e5cea597..cb63f832 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -110,7 +110,7 @@ end # Issue #116 # Part 2: Arrays of arrays - @test_throws Exception ComponentVector(a=[[3],[4,5]], b=1) + @test_throws Exception ComponentVector(a = [[3], [4, 5]], b = 1) end @testset "Attributes" begin @@ -138,6 +138,12 @@ end @test hash(ab, zero(UInt)) != hash(xy, zero(UInt)) @test ab == LVector(a = 1, b = 2) + + # Issue #117 + kw_fun(; a, b) = a + b + x = ComponentArray(a=4, b=5) + @test merge(NamedTuple(), x) == NamedTuple(x) + @test kw_fun(; x...) == 9 end @testset "Get" begin