Skip to content

Commit 1af130d

Browse files
authored
solvableFilter on listVariables and getVariables for GraphsDFG (#1097)
Co-authored-by: Johannes Terblanche <[email protected]>
1 parent 94d4a71 commit 1af130d

File tree

1 file changed

+20
-13
lines changed

1 file changed

+20
-13
lines changed

src/GraphsDFG/services/GraphsDFG.jl

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -196,21 +196,25 @@ function getVariables(
196196
regexFilter::Union{Nothing, Regex} = nothing;
197197
tags::Vector{Symbol} = Symbol[],
198198
solvable::Int = 0,
199+
solvableFilter::Union{Nothing, Base.Fix2} = nothing,
199200
detail = nothing,
200201
)
201202

202203
# variables = map(v -> v.dfgNode, filter(n -> n.dfgNode isa DFGVariable, vertices(dfg.g)))
203204
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+
214218
return variables
215219
end
216220

@@ -219,6 +223,7 @@ function listVariables(
219223
regexFilter::Union{Nothing, Regex} = nothing;
220224
tags::Vector{Symbol} = Symbol[],
221225
solvable::Int = 0,
226+
solvableFilter::Union{Nothing, Base.Fix2} = nothing,
222227
)
223228

224229
# variables = map(v -> v.dfgNode, filter(n -> n.dfgNode isa DFGVariable, vertices(dfg.g)))
@@ -229,10 +234,12 @@ function listVariables(
229234
)
230235
else
231236
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)
234239
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)
236243
return variables::Vector{Symbol}
237244
end
238245
end

0 commit comments

Comments
 (0)