From dc93f17286f6afabd4e0fd218d52297387577c0f Mon Sep 17 00:00:00 2001 From: Stefan Bringuier <2709082+stefanbringuier@users.noreply.github.com> Date: Mon, 1 Nov 2021 17:11:26 -0700 Subject: [PATCH 1/6] Update PeriodicTable.jl Add utility functions to return list of passed `Element` field from `Elements`. --- src/PeriodicTable.jl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/PeriodicTable.jl b/src/PeriodicTable.jl index a51a369..4feb280 100644 --- a/src/PeriodicTable.jl +++ b/src/PeriodicTable.jl @@ -166,6 +166,10 @@ Base.get(e::Elements, i::Integer, default) = get(e.bynumber, i, default) Base.get(e::Elements, i::AbstractString, default) = get(e.byname, lowercase(i), default) Base.get(e::Elements, i::Symbol, default) = get(e.bysymbol, i, default) +# Utility functions +getlist(e::Elements, i::Symbol) = getfield.(e,i) +getlist(e::Elements, i::AbstractString) = getfield.(e,Symbol(i)) + # support iterating over elements Base.eltype(e::Elements) = Element Base.length(e::Elements) = length(e.data) From 1d8285036e0b3073eeb68508a231d4815501413b Mon Sep 17 00:00:00 2001 From: Stefan Bringuier <2709082+stefanbringuier@users.noreply.github.com> Date: Mon, 1 Nov 2021 17:23:11 -0700 Subject: [PATCH 2/6] Update PeriodicTable.jl Additional method if a Vector{Element} is passed, i.e., slice of elements. --- src/PeriodicTable.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/PeriodicTable.jl b/src/PeriodicTable.jl index 4feb280..0e3c956 100644 --- a/src/PeriodicTable.jl +++ b/src/PeriodicTable.jl @@ -169,6 +169,8 @@ Base.get(e::Elements, i::Symbol, default) = get(e.bysymbol, i, default) # Utility functions getlist(e::Elements, i::Symbol) = getfield.(e,i) getlist(e::Elements, i::AbstractString) = getfield.(e,Symbol(i)) +getlist(e::Vector{Element}, i) = getlist(Elements(e),i) + # support iterating over elements Base.eltype(e::Elements) = Element From 3caa5b2b00daea4c18e99f0d5fc2710a2d482259 Mon Sep 17 00:00:00 2001 From: Stefan Bringuier <2709082+stefanbringuier@users.noreply.github.com> Date: Mon, 1 Nov 2021 17:26:33 -0700 Subject: [PATCH 3/6] Update PeriodicTable.jl Add module export of `getlist`. --- src/PeriodicTable.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/PeriodicTable.jl b/src/PeriodicTable.jl index 0e3c956..4fb9a32 100644 --- a/src/PeriodicTable.jl +++ b/src/PeriodicTable.jl @@ -10,6 +10,7 @@ e.g. `elements[:O]`. """ module PeriodicTable export Element, elements +export getlist import Unitful: u, g, cm, K, J, mol, Quantity From 133af55e02eebea945b703b206b0d3c6f1f8df23 Mon Sep 17 00:00:00 2001 From: Stefan Bringuier <2709082+stefanbringuier@users.noreply.github.com> Date: Mon, 1 Nov 2021 17:41:55 -0700 Subject: [PATCH 4/6] Update runtests.jl Add tests for utility function. --- test/runtests.jl | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/runtests.jl b/test/runtests.jl index f56173a..ce38f30 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -81,3 +81,9 @@ for z in eachindex(elements) @test haskey(elmdict, elements[z]) @test elmdict[elements[z]] == z end + +# Test utility function +@test length(getlist(elements,:symbol)) == length(elements) +@test getlist(elements[1:2],:name) == ["Hydrogen","Helium"] +@test getlist(elements[3:4],"symbol") == ["Li","Be"] +@test getlist(elements[[6,74]],:density) = [1.821u"g*cm^-3",13.51u"g*cm^-3"] From 4fe8fb75c4ef5f1ccf52f125fa42fceb3c1e9642 Mon Sep 17 00:00:00 2001 From: Stefan Bringuier <2709082+stefanbringuier@users.noreply.github.com> Date: Mon, 1 Nov 2021 17:50:58 -0700 Subject: [PATCH 5/6] Update runtests.jl Typo fix. --- test/runtests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index ce38f30..4977707 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -86,4 +86,4 @@ end @test length(getlist(elements,:symbol)) == length(elements) @test getlist(elements[1:2],:name) == ["Hydrogen","Helium"] @test getlist(elements[3:4],"symbol") == ["Li","Be"] -@test getlist(elements[[6,74]],:density) = [1.821u"g*cm^-3",13.51u"g*cm^-3"] +@test getlist(elements[[6,74]],:density) == [1.821u"g*cm^-3",13.51u"g*cm^-3"] From fbda705d066b2934a782a918ddbccc54c9b4fe2e Mon Sep 17 00:00:00 2001 From: Stefan Bringuier <2709082+stefanbringuier@users.noreply.github.com> Date: Mon, 1 Nov 2021 17:59:29 -0700 Subject: [PATCH 6/6] Update runtests.jl Fix typo. --- test/runtests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index 4977707..6caf1fc 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -86,4 +86,4 @@ end @test length(getlist(elements,:symbol)) == length(elements) @test getlist(elements[1:2],:name) == ["Hydrogen","Helium"] @test getlist(elements[3:4],"symbol") == ["Li","Be"] -@test getlist(elements[[6,74]],:density) == [1.821u"g*cm^-3",13.51u"g*cm^-3"] +@test getlist(elements[[6,74]],:density) == [1.821u"g*cm^-3",19.25u"g*cm^-3"]