add match_table to @add_attributes
This commit is contained in:
parent
d880d89ef6
commit
f33b3f8af9
14
src/args.jl
14
src/args.jl
@ -2069,7 +2069,16 @@ end
|
|||||||
|
|
||||||
#--------------------------------------------------
|
#--------------------------------------------------
|
||||||
## inspired by Base.@kwdef
|
## inspired by Base.@kwdef
|
||||||
macro add_attributes(level, expr)
|
"""
|
||||||
|
add_attributes(level, expr, match_table)
|
||||||
|
|
||||||
|
Takes a `struct` definition and recurses into its fields to create keywords by chaining the field names with the structs' name with underscore.
|
||||||
|
Also creates pluralized and non-underscore aliases for these keywords.
|
||||||
|
- `level` indicates which group of `plot`, `subplot`, `series`, etc. the keywords belong to.
|
||||||
|
- `expr` is the struct definition with default values like `Base.@kwdef`
|
||||||
|
- `match_table` is an expression of the form `:match = (symbols)`, with symbols whose default value should be `:match`
|
||||||
|
"""
|
||||||
|
macro add_attributes(level, expr, match_table)
|
||||||
expr = macroexpand(__module__, expr) # to expand @static
|
expr = macroexpand(__module__, expr) # to expand @static
|
||||||
expr isa Expr && expr.head === :struct || error("Invalid usage of @add_attributes")
|
expr isa Expr && expr.head === :struct || error("Invalid usage of @add_attributes")
|
||||||
T = expr.args[2]
|
T = expr.args[2]
|
||||||
@ -2086,6 +2095,9 @@ macro add_attributes(level, expr)
|
|||||||
# e.g. _series_defualts[key] = value
|
# e.g. _series_defualts[key] = value
|
||||||
exp_key = Symbol(lowercase(string(T)), "_", key)
|
exp_key = Symbol(lowercase(string(T)), "_", key)
|
||||||
pl_key = makeplural(exp_key)
|
pl_key = makeplural(exp_key)
|
||||||
|
if QuoteNode(exp_key) in match_table.args[2].args
|
||||||
|
value = QuoteNode(:match)
|
||||||
|
end
|
||||||
push!(
|
push!(
|
||||||
insert_block.args,
|
insert_block.args,
|
||||||
Expr(
|
Expr(
|
||||||
|
|||||||
@ -775,7 +775,6 @@ end
|
|||||||
|
|
||||||
### Legend
|
### Legend
|
||||||
|
|
||||||
# TODO: what about :match for the fonts?
|
|
||||||
@add_attributes subplot struct Legend
|
@add_attributes subplot struct Legend
|
||||||
background_color = :match
|
background_color = :match
|
||||||
foreground_color = :match
|
foreground_color = :match
|
||||||
@ -784,4 +783,4 @@ end
|
|||||||
font::Font = font(8)
|
font::Font = font(8)
|
||||||
title_font::Font = font(11)
|
title_font::Font = font(11)
|
||||||
column = 1
|
column = 1
|
||||||
end
|
end :match = (:legend_font_family, :legend_font_color, :legend_title_font_family, :legend_title_font_color)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user