@@ -60,6 +60,22 @@ function connector_macro(mod, name, body)
6060end
6161
6262function parse_variable_def! (dict, mod, arg, varclass, kwargs, def = nothing )
63+ metatypes = [(:connection_type , VariableConnectType),
64+ (:description , VariableDescription),
65+ (:unit , VariableUnit),
66+ (:bounds , VariableBounds),
67+ (:noise , VariableNoiseType),
68+ (:input , VariableInput),
69+ (:output , VariableOutput),
70+ (:irreducible , VariableIrreducible),
71+ (:state_priority , VariableStatePriority),
72+ (:misc , VariableMisc),
73+ (:disturbance , VariableDisturbance),
74+ (:tunable , VariableTunable),
75+ (:dist , VariableDistribution),
76+ (:binary , VariableBinary),
77+ (:integer , VariableInteger)]
78+
6379 arg isa LineNumberNode && return
6480 MLStyle. @match arg begin
6581 a:: Symbol => begin
@@ -79,9 +95,12 @@ function parse_variable_def!(dict, mod, arg, varclass, kwargs, def = nothing)
7995 def, meta = parse_default (mod, b)
8096 var, _ = parse_variable_def! (dict, mod, a, varclass, kwargs, def)
8197 dict[varclass][getname (var)][:default ] = def
82- if ! isnothing (meta)
83- if (ct = get (meta, VariableConnectType, nothing )) != = nothing
84- dict[varclass][getname (var)][:connection_type ] = nameof (ct)
98+ if meta != = nothing
99+ for (type, key) in metatypes
100+ if (mt = get (meta, key, nothing )) != = nothing
101+ key == VariableConnectType && (mt = nameof (mt))
102+ dict[varclass][getname (var)][type] = mt
103+ end
85104 end
86105 var = set_var_metadata (var, meta)
87106 end
@@ -90,8 +109,14 @@ function parse_variable_def!(dict, mod, arg, varclass, kwargs, def = nothing)
90109 Expr (:tuple , a, b) => begin
91110 var, def = parse_variable_def! (dict, mod, a, varclass, kwargs)
92111 meta = parse_metadata (mod, b)
93- if (ct = get (meta, VariableConnectType, nothing )) != = nothing
94- dict[varclass][getname (var)][:connection_type ] = nameof (ct)
112+ if meta != = nothing
113+ for (type, key) in metatypes
114+ if (mt = get (meta, key, nothing )) != = nothing
115+ key == VariableConnectType && (mt = nameof (mt))
116+ dict[varclass][getname (var)][type] = mt
117+ end
118+ end
119+ var = set_var_metadata (var, meta)
95120 end
96121 (set_var_metadata (var, meta), def)
97122 end
0 commit comments