Skip to content

Commit f8716b7

Browse files
authored
Regex filter for solve keys in listSolveKeys (#645)
close #641
1 parent a555bbd commit f8716b7

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

src/services/AbstractDFG.jl

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -521,16 +521,21 @@ Related
521521
listSupersolves, getSolverDataDict, listVariables
522522
"""
523523
function listSolveKeys(dfg::AbstractDFG,
524-
fltr::Union{Type{<:InferenceVariable},Regex, Nothing}=nothing;
524+
filterVariables::Union{Type{<:InferenceVariable},Regex, Nothing}=nothing;
525+
filterSolveKeys::Union{Regex,Nothing}=nothing,
525526
tags::Vector{Symbol}=Symbol[],
526527
solvable::Int=0 )
527528
#
528-
skeys = Set{Symbol}()
529-
varList = listVariables(dfg, fltr, tags=tags, solvable=solvable)
530-
for vs in varList, ky in keys(getSolverDataDict(getVariable(dfg, vs)))
531-
push!(skeys, ky)
532-
end
533-
return skeys
529+
skeys = Set{Symbol}()
530+
varList = listVariables(dfg, filterVariables, tags=tags, solvable=solvable)
531+
for vs in varList, ky in keys(getSolverDataDict(getVariable(dfg, vs)))
532+
push!(skeys, ky)
533+
end
534+
535+
#filter the solveKey set with filterSolveKeys regex
536+
!isnothing(filterSolveKeys) && return filter!(k -> occursin(filterSolveKeys, string(k)), skeys)
537+
538+
return skeys
534539
end
535540
const listSupersolves = listSolveKeys
536541

test/testBlocks.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -513,6 +513,7 @@ end
513513

514514
if getVariable(fg, ls(fg)[1]) isa DFGVariable
515515
@test :default in listSolveKeys(fg)
516+
@test :default in listSolveKeys(fg, r"a"; filterSolveKeys=r"default")
516517
@test :default in listSupersolves(fg)
517518
end
518519

0 commit comments

Comments
 (0)