Skip to content

Commit 480eb06

Browse files
committed
add badilisha built in function
1 parent 9abd50f commit 480eb06

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

evaluator/builtins.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,36 @@ var builtins = map[string]*object.Builtin{
148148
},
149149
},
150150

151+
"badilisha": {
152+
Fn: func(args ...object.Object) object.Object {
153+
if len(args) != 2 {
154+
return newError("Samahani, badili inahitaji hoja 2, wewe umeweka %d", len(args))
155+
}
156+
157+
value := args[0]
158+
targetType := args[1]
159+
160+
if targetType.Type() != object.STRING_OBJ {
161+
return newError("Aina ya lengo lazima iwe neno")
162+
}
163+
164+
targetTypeStr := targetType.(*object.String).Value
165+
166+
switch targetTypeStr {
167+
case "NAMBA":
168+
return convertToInteger(value)
169+
case "DESIMALI":
170+
return convertToFloat(value)
171+
case "NENO":
172+
return convertToString(value)
173+
case "BOOLEAN":
174+
return convertToBoolean(value)
175+
default:
176+
return newError("Aina isiyojulikana: %s", targetTypeStr)
177+
}
178+
},
179+
},
180+
151181
// "jumla": {
152182
// Fn: func(args ...object.Object) object.Object {
153183
// if len(args) != 1 {

0 commit comments

Comments
 (0)