recipe macro handle curly
This commit is contained in:
parent
2df7f84939
commit
d3439f0d7e
@ -84,7 +84,7 @@ function replace_recipe_arrows!(expr::Expr)
|
|||||||
set_expr
|
set_expr
|
||||||
end
|
end
|
||||||
|
|
||||||
@show quiet, force, expr.args[i]
|
# @show quiet, force, expr.args[i]
|
||||||
|
|
||||||
elseif e.head != :call
|
elseif e.head != :call
|
||||||
# we want to recursively replace the arrows, but not inside function calls
|
# we want to recursively replace the arrows, but not inside function calls
|
||||||
@ -107,12 +107,20 @@ macro recipe(funcexpr::Expr)
|
|||||||
end
|
end
|
||||||
args = lhs.args[2:end]
|
args = lhs.args[2:end]
|
||||||
|
|
||||||
|
# for parametric definitions, take the "curly" expression and add the func
|
||||||
|
front = lhs.args[1]
|
||||||
|
func = :(Plots._apply_recipe)
|
||||||
|
if isa(front, Expr) && front.head == :curly
|
||||||
|
front.args[1] = func
|
||||||
|
func = front
|
||||||
|
end
|
||||||
|
|
||||||
# replace all the key => value lines with argument setting logic
|
# replace all the key => value lines with argument setting logic
|
||||||
replace_recipe_arrows!(body)
|
replace_recipe_arrows!(body)
|
||||||
|
|
||||||
# now build a function definition for _apply_recipe, wrapping the return value in a tuple if needed
|
# now build a function definition for _apply_recipe, wrapping the return value in a tuple if needed
|
||||||
esc(quote
|
esc(quote
|
||||||
function Plots._apply_recipe(d::KW, $(args...); issubplot=false, kw...)
|
function $func(d::KW, $(args...); issubplot=false, kw...)
|
||||||
ret = $body
|
ret = $body
|
||||||
if typeof(ret) <: Tuple
|
if typeof(ret) <: Tuple
|
||||||
ret
|
ret
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user