diff --git a/applications/system/js_app/examples/apps/Scripts/stringutils.js b/applications/system/js_app/examples/apps/Scripts/stringutils.js index bb3c8c16e..a29669868 100644 --- a/applications/system/js_app/examples/apps/Scripts/stringutils.js +++ b/applications/system/js_app/examples/apps/Scripts/stringutils.js @@ -1,15 +1,15 @@ let sampleText = "Hello, World!"; -let lengthOfText = "Length of text: " + to_string(GetLength(sampleText)); +let lengthOfText = "Length of text: " + to_string(sampleText.length); print(lengthOfText); let start = 7; let end = 12; -let substringResult = substring(sampleText, start, end); +let substringResult = sampleText.slice(start, end); print(substringResult); let searchStr = "World"; -let result2 = to_string(indexOf(sampleText, searchStr)); +let result2 = to_string(sampleText.indexOf(searchStr)); print(result2); let upperCaseText = "Text in upper case: " + toUpperCase(sampleText); diff --git a/applications/system/js_app/modules/js_string.h b/applications/system/js_app/modules/js_string.h index 6cab20238..b812513f5 100644 --- a/applications/system/js_app/modules/js_string.h +++ b/applications/system/js_app/modules/js_string.h @@ -1,98 +1,5 @@ #include "../js_modules.h" -static void js_string_substring(struct mjs* mjs) { - mjs_val_t arg0 = mjs_arg(mjs, 0); - mjs_val_t arg1 = mjs_arg(mjs, 1); - mjs_val_t arg2 = mjs_arg(mjs, 2); - - size_t str_len; - const char* str = NULL; - if(mjs_is_string(arg0)) { - str = mjs_get_string(mjs, &arg0, &str_len); - } else { - mjs_return(mjs, MJS_UNDEFINED); - return; - } - - size_t start = mjs_is_number(arg1) ? (size_t)mjs_get_int(mjs, arg1) : (size_t)-1; - size_t end = mjs_is_number(arg2) ? (size_t)mjs_get_int(mjs, arg2) : (size_t)str_len; - - if((int)start < 0 || end > str_len || start > end) { - mjs_return(mjs, MJS_UNDEFINED); - return; - } - - mjs_val_t substr_obj = mjs_mk_string(mjs, str + start, end - start, 1); - mjs_return(mjs, substr_obj); -} - -static void js_string_get_length(struct mjs* mjs) { - mjs_val_t arg0 = mjs_arg(mjs, 0); - size_t str_len; - if(mjs_is_string(arg0)) { - const char* str = mjs_get_string(mjs, &arg0, &str_len); - UNUSED(str); - mjs_return(mjs, mjs_mk_number(mjs, str_len)); - } else { - mjs_return(mjs, MJS_UNDEFINED); - } -} - -static void js_string_slice(struct mjs* mjs) { - mjs_val_t arg0 = mjs_arg(mjs, 0); - mjs_val_t arg1 = mjs_arg(mjs, 1); - mjs_val_t arg2 = mjs_arg(mjs, 2); - - size_t str_len; - const char* str = NULL; - if(mjs_is_string(arg0)) { - str = mjs_get_string(mjs, &arg0, &str_len); - } else { - mjs_return(mjs, MJS_UNDEFINED); - return; - } - - int start = mjs_is_number(arg1) ? mjs_get_int(mjs, arg1) : 0; - int end = mjs_is_number(arg2) ? mjs_get_int(mjs, arg2) : (int)str_len; - - if(start < 0) start = (int)str_len + start < 0 ? 0 : (int)str_len + start; - if(end < 0) end = (int)str_len + end < 0 ? 0 : (int)str_len + end; - start = start > (int)str_len ? (int)str_len : start; - end = end > (int)str_len ? (int)str_len : end; - - if(end < start) end = start; - - mjs_val_t resultStr = mjs_mk_string(mjs, str + start, end - start, 1); - mjs_return(mjs, resultStr); -} - -static void js_string_index_of(struct mjs* mjs) { - mjs_val_t arg0 = mjs_arg(mjs, 0); - mjs_val_t arg1 = mjs_arg(mjs, 1); - - size_t str_len; - const char* str = NULL; - if(mjs_is_string(arg0)) { - str = mjs_get_string(mjs, &arg0, &str_len); - } else { - mjs_return(mjs, MJS_UNDEFINED); - return; - } - - const char* searchValue = NULL; - if(mjs_is_string(arg1)) { - searchValue = mjs_get_string(mjs, &arg1, NULL); - } else { - mjs_return(mjs, MJS_UNDEFINED); - return; - } - - char* found = strstr(str, searchValue); - int position = found ? (int)(found - str) : -1; - - mjs_return(mjs, mjs_mk_number(mjs, position)); -} - static void js_string_to_upper_case(struct mjs* mjs) { mjs_val_t arg0 = mjs_arg(mjs, 0); @@ -137,13 +44,8 @@ static void js_string_to_lower_case(struct mjs* mjs) { mjs_return(mjs, resultStr); } -static void string_utils_init(struct mjs* mjs) -{ +static void string_utils_init(struct mjs* mjs) { mjs_val_t global = mjs_get_global(mjs); - mjs_set(mjs, global, "substring", ~0, MJS_MK_FN(js_string_substring)); - mjs_set(mjs, global, "slice", ~0, MJS_MK_FN(js_string_slice)); - mjs_set(mjs, global, "indexOf", ~0, MJS_MK_FN(js_string_index_of)); mjs_set(mjs, global, "toUpperCase", ~0, MJS_MK_FN(js_string_to_upper_case)); mjs_set(mjs, global, "toLowerCase", ~0, MJS_MK_FN(js_string_to_lower_case)); - mjs_set(mjs, global, "GetLength", ~0, MJS_MK_FN(js_string_get_length)); } \ No newline at end of file