Skip to content

Commit

Permalink
Adding reverse list logic
Browse files Browse the repository at this point in the history
  • Loading branch information
pratikmota committed Mar 3, 2024
1 parent b6b7131 commit dea45ed
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions evaldo/builtins.go
Original file line number Diff line number Diff line change
Expand Up @@ -4561,6 +4561,22 @@ var builtins = map[string]*env.Builtin{
reversed += string(s[i])
}
return *env.NewString(reversed)
case env.List:
// Create slice of env.Object
dataSlice := make([]env.Object, 0)
for _, v := range block.Data {
dataSlice = append(dataSlice, env.ToRyeValue(v))
}
// Reverse slice data
for left, right := 0, len(dataSlice)-1; left < right; left, right = left+1, right-1 {
dataSlice[left], dataSlice[right] = dataSlice[right], dataSlice[left]
}
// Create list frol slice data
reverseList := make([]any, 0, len(dataSlice))
for _, value := range dataSlice {
reverseList = append(reverseList, value)
}
return *env.NewList(reverseList)
default:
return MakeArgError(ps, 1, []env.Type{env.BlockType, env.StringType}, "reverse")
}
Expand Down

0 comments on commit dea45ed

Please sign in to comment.