| 199 | } |
| 200 | |
| 201 | func (l *Levenshtein) Call(args []super.Value) super.Value { |
| 202 | args = underAll(args) |
| 203 | a, b := args[0], args[1] |
| 204 | if a.IsNull() || b.IsNull() { |
| 205 | return super.Null |
| 206 | } |
| 207 | if !a.IsString() { |
| 208 | return l.sctx.WrapError("levenshtein: string args required", a) |
| 209 | } |
| 210 | if !b.IsString() { |
| 211 | return l.sctx.WrapError("levenshtein: string args required", b) |
| 212 | } |
| 213 | as, bs := super.DecodeString(a.Bytes()), super.DecodeString(b.Bytes()) |
| 214 | return super.NewInt64(int64(levenshtein.ComputeDistance(as, bs))) |
| 215 | } |