@@ -196,21 +196,25 @@ function getVariables(
196
196
regexFilter:: Union{Nothing, Regex} = nothing ;
197
197
tags:: Vector{Symbol} = Symbol[],
198
198
solvable:: Int = 0 ,
199
+ solvableFilter:: Union{Nothing, Base.Fix2} = nothing ,
199
200
detail = nothing ,
200
201
)
201
202
202
203
# variables = map(v -> v.dfgNode, filter(n -> n.dfgNode isa DFGVariable, vertices(dfg.g)))
203
204
variables = collect (values (dfg. g. variables))
204
- if regexFilter != = nothing
205
- variables = filter (v -> occursin (regexFilter, String (v. label)), variables)
206
- end
207
- if solvable != 0
208
- variables = filter (v -> _isSolvable (dfg, v. label, solvable), variables)
209
- end
210
- if length (tags) > 0
211
- mask = map (v -> length (intersect (v. tags, tags)) > 0 , variables)
212
- return variables[mask]
213
- end
205
+
206
+ ! isnothing (regexFilter) &&
207
+ filter! (v -> occursin (regexFilter, String (v. label)), variables)
208
+
209
+ solvable != 0 &&
210
+ filter! (v -> _isSolvable (dfg, v. label, solvable), variables)
211
+
212
+ ! isempty (tags) &&
213
+ filter! (v -> ! isempty (intersect (v. tags, tags)), variables)
214
+
215
+ ! isnothing (solvableFilter) &&
216
+ filter! (v -> solvableFilter (getSolvable (v)), variables)
217
+
214
218
return variables
215
219
end
216
220
@@ -219,6 +223,7 @@ function listVariables(
219
223
regexFilter:: Union{Nothing, Regex} = nothing ;
220
224
tags:: Vector{Symbol} = Symbol[],
221
225
solvable:: Int = 0 ,
226
+ solvableFilter:: Union{Nothing, Base.Fix2} = nothing ,
222
227
)
223
228
224
229
# variables = map(v -> v.dfgNode, filter(n -> n.dfgNode isa DFGVariable, vertices(dfg.g)))
@@ -229,10 +234,12 @@ function listVariables(
229
234
)
230
235
else
231
236
variables = copy (dfg. g. variables. keys)
232
- regexFilter != = nothing &&
233
- (variables = filter (v -> occursin (regexFilter, String (v)), variables) )
237
+ ! isnothing (regexFilter) &&
238
+ filter! (v -> occursin (regexFilter, String (v)), variables)
234
239
solvable != 0 &&
235
- (variables = filter (vId -> _isSolvable (dfg, vId, solvable), variables))
240
+ filter! (vId -> _isSolvable (dfg, vId, solvable), variables)
241
+ ! isnothing (solvableFilter) &&
242
+ filter! (v -> solvableFilter (getSolvable (dfg, v)), variables)
236
243
return variables:: Vector{Symbol}
237
244
end
238
245
end
0 commit comments