From 12af49e80e8e7fbfd11989cf8a7077996a558369 Mon Sep 17 00:00:00 2001 From: Eric Forgy Date: Thu, 21 Feb 2019 11:54:11 +0800 Subject: [PATCH 1/2] Add Julia type hierarchy and Dict examples. --- examples/typetree.jl | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 examples/typetree.jl diff --git a/examples/typetree.jl b/examples/typetree.jl new file mode 100644 index 0000000..f686fd3 --- /dev/null +++ b/examples/typetree.jl @@ -0,0 +1,24 @@ +# DataType +function AbstractTrees.children(t::DataType) + t === Function ? Vector{Type}() : filter!(x -> x !== Any,subtypes(t)) +end +AbstractTrees.printnode(io::IO,t::DataType) = print(io,t) + +print_tree(IO) + +println() + +print_tree(Real) + +println() + +# Dict +AbstractTrees.children(d::Dict) = [p for p in d] +AbstractTrees.children(p::Pair) = AbstractTrees.children(p[2]) +function AbstractTrees.printnode(io::IO,p::Pair) + isempty(AbstractTrees.children(p[2])) ? print(io,"$(p[1]): $(p[2])") : print(io,"$(p[1]):") +end + +d = Dict(:a => 2,:d => Dict(:b => 4,:c => "Hello"),:e => 5.0) + +print_tree(d) \ No newline at end of file From c399c2a960be67936ea7ed28f3c9dd22355dd96a Mon Sep 17 00:00:00 2001 From: Eric Forgy Date: Thu, 21 Feb 2019 12:22:23 +0800 Subject: [PATCH 2/2] Change DataType -> Type --- examples/typetree.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/typetree.jl b/examples/typetree.jl index f686fd3..54844a4 100644 --- a/examples/typetree.jl +++ b/examples/typetree.jl @@ -1,8 +1,8 @@ # DataType -function AbstractTrees.children(t::DataType) +function AbstractTrees.children(t::Type) t === Function ? Vector{Type}() : filter!(x -> x !== Any,subtypes(t)) end -AbstractTrees.printnode(io::IO,t::DataType) = print(io,t) +AbstractTrees.printnode(io::IO,t::Type) = print(io,t) print_tree(IO)