mirror of https://github.com/ANL-CEEESA/RELOG.git
parent
7e783c8b91
commit
1990563476
@ -1,68 +0,0 @@
|
||||
# RELOG: Reverse Logistics Optimization
|
||||
# Copyright (C) 2020, UChicago Argonne, LLC. All rights reserved.
|
||||
# Released under the modified BSD license. See COPYING.md for more details.
|
||||
|
||||
struct DotDict
|
||||
inner::Dict
|
||||
end
|
||||
|
||||
DotDict() = DotDict(Dict())
|
||||
|
||||
function Base.setproperty!(d::DotDict, key::Symbol, value)
|
||||
setindex!(getfield(d, :inner), value, key)
|
||||
end
|
||||
|
||||
function Base.getproperty(d::DotDict, key::Symbol)
|
||||
(key == :inner ? getfield(d, :inner) : d.inner[key])
|
||||
end
|
||||
|
||||
function Base.getindex(d::DotDict, key::Int64)
|
||||
d.inner[Symbol(key)]
|
||||
end
|
||||
|
||||
function Base.getindex(d::DotDict, key::Symbol)
|
||||
d.inner[key]
|
||||
end
|
||||
|
||||
function Base.keys(d::DotDict)
|
||||
keys(d.inner)
|
||||
end
|
||||
|
||||
function Base.values(d::DotDict)
|
||||
values(d.inner)
|
||||
end
|
||||
|
||||
function Base.iterate(d::DotDict)
|
||||
iterate(values(d.inner))
|
||||
end
|
||||
|
||||
function Base.iterate(d::DotDict, v::Int64)
|
||||
iterate(values(d.inner), v)
|
||||
end
|
||||
|
||||
function Base.length(d::DotDict)
|
||||
length(values(d.inner))
|
||||
end
|
||||
|
||||
function Base.show(io::IO, d::DotDict)
|
||||
print(io, "DotDict with $(length(keys(d.inner))) entries:\n")
|
||||
count = 0
|
||||
for k in keys(d.inner)
|
||||
count += 1
|
||||
if count > 10
|
||||
print(io, " ...\n")
|
||||
break
|
||||
end
|
||||
print(io, " :$(k) => $(d.inner[k])\n")
|
||||
end
|
||||
end
|
||||
|
||||
function recursive_to_dot_dict(el)
|
||||
if typeof(el) == Dict{String,Any}
|
||||
return DotDict(Dict(Symbol(k) => recursive_to_dot_dict(el[k]) for k in keys(el)))
|
||||
else
|
||||
return el
|
||||
end
|
||||
end
|
||||
|
||||
export recursive_to_dot_dict
|
Loading…
Reference in new issue