def align
import bend-edit-distance@0.2.2.0/src/DistanceDP.bend as DistanceDPimport Base
import bend-edit-distance@0.2.2.0/EdlibTypes.bend as E
158# The independent worker supports configured DISTANCE in every mode, including
159# Edlib's empty-input early return before threshold filtering.
160def align(query: String, target: String, config: E.AlignConfig) -> E.AlignResult:
161 match query target config:
162 case SNil{} +t E.AlignConfig{E.NW{}, E.Distance{}, _, _, _}:
163 +length = String.length(t)
164 E.distance_result(length, E.end_coordinate(length), True{})
165 case SNil{} _ E.AlignConfig{_, E.Distance{}, _, _, _}:
166 E.distance_result(0n, E.BeforeStart{}, True{})
167 case SCon{_, qt} SNil{} E.AlignConfig{_, E.Distance{}, _, _, _}:
168 E.distance_result(1n+String.length(qt), E.BeforeStart{}, True{})
169 case +q +t E.AlignConfig{E.NW{}, E.Distance{}, +threshold, pairs, _}:
170 +score = distance_with_equalities(q, t, pairs)
171 E.distance_result(score, E.end_coordinate(String.length(t)), E.within_threshold(threshold, score))
172 case +q +t E.AlignConfig{mode, E.Distance{}, threshold, pairs, _}:
173 semiglobal_result(semiglobal(q, t, mode, pairs), threshold)
174 case _ _ _:
175 E.AlignResult{E.Error{}, E.NotFound{}, Nil{}, None{}, None{}, None{}}
Uses (19)
Used by (0)
No other definition uses this definition.