diff --git a/src/utils.jl b/src/utils.jl index 6f6dd351..159805fc 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -1215,14 +1215,22 @@ function mesh3d_triangles(x, y, z, cns) return X, Y, Z end -const _attrsymbolcache = Dict{Symbol, Dict{Symbol, Symbol}}( - :x => Dict( k => Symbol("x", String(k)) for k in keys(_axis_defaults)), - :y => Dict( k => Symbol("y", String(k)) for k in keys(_axis_defaults)), - :z => Dict( k => Symbol("z", String(k)) for k in keys(_axis_defaults)) -) +const _attrsymbolcache = Dict{Symbol, Dict{Symbol, Symbol}}() get_attr_symbol(letter::Symbol, keyword::String) = get_attr_symbol(letter, Symbol(keyword)) function get_attr_symbol(letter::Symbol, keyword::Symbol) - return _attrsymbolcache[letter][keyword] + lt = if haskey(_attrsymbolcache, letter) + _attrsymbolcache[letter] + else + _attrsymbolcache[letter] = Dict{Symbol, Symbol}() + end + + lk = if haskey(lt, keyword) + lt[keyword] + else + lt[keyword] = Symbol(letter, keyword) + end + + return lk end