Skip to content

Commit 3d71cc2

Browse files
committed
common struct esc
1 parent 63dda21 commit 3d71cc2

File tree

2 files changed

+20
-15
lines changed

2 files changed

+20
-15
lines changed

src/@aml/@aml_create.jl

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -98,18 +98,21 @@ function aml_create(expr::Expr, args_param, args_defaultvalue, args_type, args_v
9898

9999
struct_definition =:($expr)
100100

101-
struct_xmlchecker = get_struct_xmlchecker(struct_function, args_var)
101+
# args_var is used here to support all the inputs (even non-aml)
102+
esc_args_var = esc.(args_var)
103+
104+
struct_xmlchecker = get_struct_xmlchecker(struct_function, esc_args_var)
102105

103106
# Creator
104-
struct_xmlcreator = get_struct_xmlcreator(S, amlargs_param, struct_xmlchecker, node_initializer, args_xmlcreator, args_var, custom_creator_end)
107+
struct_xmlcreator = get_struct_xmlcreator(S, amlargs_param, struct_xmlchecker, node_initializer, args_xmlcreator, esc_args_var, custom_creator_end)
105108
# Extractor
106-
struct_xmlextractor = get_struct_xmlextractor(S, args_xmlextractor, struct_xmlchecker, args_var, custom_extractor_end)
109+
struct_xmlextractor = get_struct_xmlextractor(S, args_xmlextractor, struct_xmlchecker, esc_args_var, custom_extractor_end)
107110

108111
if iscurly
109112
# Creator
110-
struct_xmlcreator_curly = get_struct_xmlcreator(SQ, P, amlargs_param, struct_xmlchecker, node_initializer, args_xmlcreator, args_var, custom_creator_end)
113+
struct_xmlcreator_curly = get_struct_xmlcreator(SQ, P, amlargs_param, struct_xmlchecker, node_initializer, args_xmlcreator, esc_args_var, custom_creator_end)
111114
# Extractor
112-
struct_xmlextractor_curly = get_struct_xmlextractor(SQ, P, args_xmlextractor, struct_xmlchecker, args_var, custom_extractor_end)
115+
struct_xmlextractor_curly = get_struct_xmlextractor(SQ, P, args_xmlextractor, struct_xmlchecker, esc_args_var, custom_extractor_end)
113116
else
114117
struct_xmlcreator_curly = nothing
115118
struct_xmlextractor_curly = nothing

src/@aml/@aml_create/get_struct_xml_.jl

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
"""
44
check function for the aml struct
55
"""
6-
function get_struct_xmlchecker(struct_function, args_var)
6+
function get_struct_xmlchecker(struct_function, esc_args_var)
77
# aml Function
88
if !ismissing(struct_function[1])
99
F = struct_function[1]
1010
struct_xmlchecker = quote
11-
if !( ($(esc(F)))($(esc.(args_var)...)) )
11+
if !( ($(esc(F)))($(esc_args_var...)) )
1212
error("struct criteria function ($($(esc(F)))) isn't meet")
1313
end
1414
end
@@ -18,49 +18,51 @@ function get_struct_xmlchecker(struct_function, args_var)
1818
return struct_xmlchecker
1919
end
2020
################################################################
21-
function get_struct_xmlcreator(T, args_param, struct_xmlchecker, node_initializer, args_xmlcreator, args_var, custom_creator_end)
21+
function get_struct_xmlcreator(T, args_param, struct_xmlchecker, node_initializer, args_xmlcreator, esc_args_var, custom_creator_end)
2222
struct_xmlcreator = quote
2323
function ($(esc(T)))(; $(esc.(args_param)...))
2424
$struct_xmlchecker
2525
$node_initializer
2626
$(args_xmlcreator...)
2727
$(esc(custom_creator_end))
28-
return ($(esc(T)))($(esc.(args_var)...), aml)
28+
return ($(esc(T)))($(esc_args_var...), aml)
2929
end
3030
end
3131
return struct_xmlcreator
3232
end
33-
function get_struct_xmlcreator(SQ, P, args_param, struct_xmlchecker, node_initializer, args_xmlcreator, args_var, custom_creator_end)
33+
function get_struct_xmlcreator(SQ, P, args_param, struct_xmlchecker, node_initializer, args_xmlcreator, esc_args_var, custom_creator_end)
3434
struct_xmlcreator_curly = quote
3535
function ($(esc(SQ)))(; $(esc.(args_param)...)) where {$(esc.(P)...)}
3636
$struct_xmlchecker
3737
$node_initializer
3838
$(args_xmlcreator...)
3939
$(esc(custom_creator_end))
40-
return ($(esc(SQ)))($(esc.(args_var)...), aml)
40+
return ($(esc(SQ)))($(esc_args_var...), aml)
4141
end
4242
end
4343
return struct_xmlcreator_curly
4444
end
4545
################################################################
46-
function get_struct_xmlextractor(T, args_xmlextractor, struct_xmlchecker, args_var, custom_extractor_end)
46+
function get_struct_xmlextractor(T, args_xmlextractor, struct_xmlchecker, esc_args_var, custom_extractor_end)
47+
4748
struct_xmlextractor = quote
4849
function ($(esc(T)))(aml::Union{Document, Node})
4950
$(args_xmlextractor...)
5051
$struct_xmlchecker
5152
$(esc(custom_extractor_end))
52-
return ($(esc(T)))($(esc.(args_var)...), aml)
53+
return ($(esc(T)))($(esc_args_var...), aml)
5354
end
5455
end
5556
return struct_xmlextractor
5657
end
57-
function get_struct_xmlextractor(SQ, P, args_xmlextractor, struct_xmlchecker, args_var, custom_extractor_end)
58+
function get_struct_xmlextractor(SQ, P, args_xmlextractor, struct_xmlchecker, esc_args_var, custom_extractor_end)
59+
5860
struct_xmlextractor_curly = quote
5961
function ($(esc(SQ)))(aml::Union{Document, Node}) where {$(esc.(P)...)}
6062
$(args_xmlextractor...)
6163
$struct_xmlchecker
6264
$(esc(custom_extractor_end))
63-
return ($(esc(SQ)))($(esc.(args_var)...), aml)
65+
return ($(esc(SQ)))($(esc_args_var...), aml)
6466
end
6567
end
6668
return struct_xmlextractor_curly

0 commit comments

Comments
 (0)