From fe2ec6ffbf882cedaf361d47eba47d32cd2d6a78 Mon Sep 17 00:00:00 2001 From: Charlie Brej Date: Wed, 24 Mar 2010 15:55:59 +0000 Subject: [PATCH] [script] Strings automatically adopt from the global String template This means string operations now can be applied on raw strings rather than having to cast them using the String() class template wrapper. String("something").CharAt(3) now becomes simply: "something".CharAt(3) --- src/plugins/splash/script/script-execute.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/plugins/splash/script/script-execute.c b/src/plugins/splash/script/script-execute.c index f986957e..19a831d0 100644 --- a/src/plugins/splash/script/script-execute.c +++ b/src/plugins/splash/script/script-execute.c @@ -302,7 +302,18 @@ static script_obj_t *script_evaluate_func (script_state_t *state, this_obj = script_evaluate (state, name_exp->data.dual.sub_a); char *this_key_name = script_obj_as_string (this_key); script_obj_unref (this_key); - func_obj = script_obj_hash_get_element (this_obj, this_key_name); + func_obj = script_obj_hash_peek_element (this_obj, this_key_name); + + if (!func_obj && script_obj_is_string (this_obj)) + { + script_obj_t *string_hash = script_obj_hash_peek_element (state->global, "String"); + func_obj = script_obj_hash_peek_element (string_hash, this_key_name); + script_obj_unref (func_obj); + } + + if (!func_obj) + func_obj = script_obj_hash_get_element (this_obj, this_key_name); + free(this_key_name); } else if (name_exp->type == SCRIPT_EXP_TYPE_TERM_VAR)