80 lines
2.7 KiB
Julia
80 lines
2.7 KiB
Julia
|
|
const _attribute_defaults = Dict(
|
|
:Series => _series_defaults,
|
|
:Subplot => _subplot_defaults,
|
|
:Plot => _plot_defaults,
|
|
:Axis => _axis_defaults,
|
|
)
|
|
|
|
attrtypes() = join(keys(_attribute_defaults), ", ")
|
|
attributes(attrtype::Symbol) = sort(collect(keys(_attribute_defaults[attrtype])))
|
|
|
|
function lookup_aliases(attrtype, attribute)
|
|
attribute = Symbol(attribute)
|
|
attribute = in(attribute, keys(_keyAliases)) ? _keyAliases[attribute] : attribute
|
|
in(attribute, keys(_attribute_defaults[attrtype])) && return attribute
|
|
error("There is no attribute named $attribute in $attrtype")
|
|
end
|
|
|
|
"""
|
|
plotattr([attr])
|
|
|
|
Look up the properties of a Plots attribute, or specify an attribute type. Call `plotattr()` for options.
|
|
The information is the same as that given on https://docs.juliaplots.org/latest/attributes/.
|
|
"""
|
|
function plotattr()
|
|
println(
|
|
"Specify an attribute type to get a list of supported attributes. Options are $(attrtypes())",
|
|
)
|
|
end
|
|
|
|
function plotattr(attrtype::Symbol)
|
|
in(attrtype, keys(_attribute_defaults)) || error("Viable options are $(attrtypes())")
|
|
println("Defined $attrtype attributes are:\n$(join(attributes(attrtype), ", "))")
|
|
end
|
|
|
|
function plotattr(attribute::AbstractString)
|
|
attribute = Symbol(attribute)
|
|
attribute = in(attribute, keys(_keyAliases)) ? _keyAliases[attribute] : attribute
|
|
for (k, v) in _attribute_defaults
|
|
if in(attribute, keys(v))
|
|
return plotattr(k, "$attribute")
|
|
end
|
|
end
|
|
error("There is no attribute named $attribute")
|
|
end
|
|
|
|
printnothing(x) = x
|
|
printnothing(x::Nothing) = "nothing"
|
|
|
|
function plotattr(attrtype::Symbol, attribute::AbstractString)
|
|
in(attrtype, keys(_attribute_defaults)) ||
|
|
ArgumentError("`attrtype` must match one of $(attrtypes())")
|
|
|
|
attribute = Symbol(lookup_aliases(attrtype, attribute))
|
|
|
|
desc = get(_arg_desc, attribute, "")
|
|
first_period_idx = findfirst(isequal('.'), desc)
|
|
if isnothing(first_period_idx)
|
|
typedesc = ""
|
|
desc = strip(desc)
|
|
else
|
|
typedesc = desc[1:(first_period_idx - 1)]
|
|
desc = strip(desc[(first_period_idx + 1):end])
|
|
end
|
|
als = keys(filter(x -> x[2] == attribute, _keyAliases)) |> collect |> sort
|
|
als = join(map(string, als), ", ")
|
|
def = _attribute_defaults[attrtype][attribute]
|
|
|
|
# Looks up the different elements and plots them
|
|
println(
|
|
"$(printnothing(attribute)) ",
|
|
typedesc == "" ? "" : "{$(printnothing(typedesc))}",
|
|
"\n",
|
|
als == "" ? "" : "$(printnothing(als))\n",
|
|
"\n$(printnothing(desc))\n",
|
|
"$(printnothing(attrtype)) attribute, ",
|
|
def == "" ? "" : " default: $(printnothing(def))",
|
|
)
|
|
end
|