mirror of
https://github.com/Ylianst/MeshAgent
synced 2026-01-09 20:13:56 +00:00
Added ability to execute zip packages
This commit is contained in:
@@ -103,6 +103,7 @@ extern duk_ret_t ILibDuktape_EventEmitter_DefaultNewListenerHandler(duk_context
|
||||
#define duk_array_push(ctx, i) duk_dup(ctx, i);duk_get_prop_string(ctx, -1, "push");duk_swap_top(ctx, -2);duk_dup(ctx,-3);duk_pcall_method(ctx, 1);duk_pop_2(ctx);
|
||||
#define duk_array_join(ctx, i, str) duk_dup(ctx, i);duk_get_prop_string(ctx, -1, "join");duk_swap_top(ctx, -2);duk_push_string(ctx, str);duk_pcall_method(ctx, 1);
|
||||
#define duk_array_unshift(ctx, i) duk_dup(ctx, i);duk_get_prop_string(ctx, -1, "unshift");duk_swap_top(ctx, -2);duk_dup(ctx, -3);duk_remove(ctx, -4);duk_pcall_method(ctx, 1);duk_pop(ctx);
|
||||
#define duk_array_partialIncludes(ctx, i, str) duk_prepare_method_call(ctx, i, "partialIncludes");duk_push_string(ctx, str);duk_pcall_method(ctx, 1);
|
||||
|
||||
#define duk_events_setup_on(ctx, i, name, func) duk_prepare_method_call(ctx, i, "on");duk_push_string(ctx, name);duk_push_c_function(ctx, func, DUK_VARARGS);
|
||||
#define duk_events_newListener(ctx, i, name, func) duk_events_setup_on(ctx, i, "newListener", ILibDuktape_EventEmitter_DefaultNewListenerHandler);duk_push_string(ctx, name);duk_put_prop_string(ctx, -2, "event_name");duk_push_c_function(ctx, func, DUK_VARARGS);duk_put_prop_string(ctx, -2, "event_callback");if(duk_pcall_method(ctx, 2)!=0){printf("oops\n");ILibDuktape_Process_UncaughtExceptionEx(ctx, "duk_events_newListener (%s,%d)", __FILE__, __LINE__);}duk_pop(ctx);
|
||||
|
||||
@@ -461,12 +461,34 @@ duk_ret_t ILibDuktape_Polyfills_Array_includes(duk_context *ctx)
|
||||
duk_push_false(ctx);
|
||||
return(1);
|
||||
}
|
||||
duk_ret_t ILibDuktape_Polyfills_Array_partialIncludes(duk_context *ctx)
|
||||
{
|
||||
duk_size_t inLen;
|
||||
char *inStr = (char*)duk_get_lstring(ctx, 0, &inLen);
|
||||
duk_push_this(ctx); // [array]
|
||||
uint32_t count = (uint32_t)duk_get_length(ctx, -1);
|
||||
uint32_t i;
|
||||
duk_size_t tmpLen;
|
||||
char *tmp;
|
||||
for (i = 0; i < count; ++i)
|
||||
{
|
||||
tmp = Duktape_GetStringPropertyIndexValueEx(ctx, -1, i, "", &tmpLen);
|
||||
if (inLen > 0 && inLen <= tmpLen && strncmp(inStr, tmp, inLen) == 0)
|
||||
{
|
||||
duk_push_int(ctx, i);
|
||||
return(1);
|
||||
}
|
||||
}
|
||||
duk_push_int(ctx, -1);
|
||||
return(1);
|
||||
}
|
||||
void ILibDuktape_Polyfills_Array(duk_context *ctx)
|
||||
{
|
||||
// Polyfill 'Array.includes'
|
||||
duk_get_prop_string(ctx, -1, "Array"); // [Array]
|
||||
duk_get_prop_string(ctx, -1, "prototype"); // [Array][proto]
|
||||
ILibDuktape_CreateProperty_InstanceMethod(ctx, "includes", ILibDuktape_Polyfills_Array_includes, 1);
|
||||
ILibDuktape_CreateProperty_InstanceMethod(ctx, "partialIncludes", ILibDuktape_Polyfills_Array_partialIncludes, 1);
|
||||
duk_pop_2(ctx); // ...
|
||||
}
|
||||
void ILibDuktape_Polyfills_String(duk_context *ctx)
|
||||
|
||||
Reference in New Issue
Block a user