added string functions

This commit is contained in:
2021-03-28 13:42:53 +02:00
parent 337fb2f80d
commit 89dd5c6f07
6 changed files with 45 additions and 8 deletions

14
ml.cpp
View File

@@ -1564,6 +1564,16 @@ namespace builtin {
return MlValue(result);
}
// converts string to upper or lower case
MlValue string_case(std::vector<MlValue> args, MlEnvironment &env) {
eval_args(args, env);
if (args.size() != 2)
throw MlError(MlValue("string_case", string_case), env, args.size() > 2 ? TOO_MANY_ARGS : TOO_FEW_ARGS);
return MlValue::string(string_lucase(args[0].as_string(), args[1].as_string()));
}
// trims characters " \n\r\t" from left or right or both ends of a string
MlValue string_rltrim(std::vector<MlValue> args, MlEnvironment &env) {
eval_args(args, env);
@@ -1571,8 +1581,7 @@ namespace builtin {
if (args.size() != 3)
throw MlError(MlValue("string_rltrim", string_rltrim), env, args.size() > 3 ? TOO_MANY_ARGS : TOO_FEW_ARGS);
// TODO validate
return MlValue::string(trim(args[0].as_string(), args[1].as_string(), args[2].as_string()));
return MlValue::string(string_trim(args[0].as_string(), args[1].as_string(), args[2].as_string()));
}
MlValue string_pad(std::vector<MlValue> args, MlEnvironment &env) {
@@ -1857,6 +1866,7 @@ MlValue MlEnvironment::get(const std::string &name) const {
if (name == "string-split") return MlValue("string-split", builtin::string_split);
if (name == "string-pad") return MlValue("string-pad", builtin::string_pad);
if (name == "string-rltrim") return MlValue("string-rltrim", builtin::string_rltrim);
if (name == "string-case") return MlValue("string-case", builtin::string_case);
// Casting operations
if (name == "int") return MlValue("int", builtin::cast_to_int);