public static TsObject Try(ITsInstance target, TsObject[] args) { var del = (TsDelegate)args[0]; TsObject[] delArgs = null; if (args.Length > 1) { delArgs = new TsObject[args.Length - 1]; Array.Copy(args, 1, delArgs, 0, delArgs.Length); } var result = new DynamicInstance("obj_exception"); try { del.Invoke(delArgs); result["has_error"] = false; result["error_type"] = ""; result["error_msg"] = ""; } catch (Exception e) { result["has_error"] = true; result["error_type"] = e.GetType().Name; result["error_msg"] = e.Message; } return(result); }
public static TsObject CreateTaskResult(TsObject result, string exception) { var inst = new DynamicInstance("TaffyScript.Threading.TaskResult"); inst["value"] = result; inst["exception"] = exception; return(inst); }
public static TsObject speech_get_installed_recognizers(TsObject[] args) { var infos = SpeechRecognitionEngine.InstalledRecognizers(); var result = new TsObject[infos.Count]; for (var i = 0; i < result.Length; i++) { result[i] = SpeechRecognizer.CreateRecognizerInfo(infos[i]); } return(result); }
public static TsObject TimeInvoke(ITsInstance target, TsObject[] args) { var del = (TsDelegate)args[0]; TsObject[] delArgs = null; if (args.Length > 1) { delArgs = new TsObject[args.Length - 1]; Array.Copy(args, 1, delArgs, 0, delArgs.Length); } var timer = new Stopwatch(); timer.Start(); del.Invoke(delArgs); timer.Stop(); var result = new DynamicInstance("obj_timer_result"); result["ms"] = timer.ElapsedMilliseconds; result["ticks"] = timer.ElapsedTicks; return(result); }
public static TsObject TryExpect(ITsInstance target, TsObject[] args) { var del = (TsDelegate)args[0]; TsObject[] delArgs = null; if (args.Length > 2) { delArgs = new TsObject[args.Length - 2]; Array.Copy(args, 2, delArgs, 0, delArgs.Length); } try { del.Invoke(delArgs); } catch (Exception e) { return(e.GetType().Name == (string)args[1]); } return(false); }
public static TsObject moniter_exit(ITsInstance inst, TsObject[] args) { Monitor.Exit(args[0].GetValue()); return(TsObject.Empty()); }
public static TsObject thread_sleep(ITsInstance inst, TsObject[] args) { Thread.Sleep((int)args[0]); return(TsObject.Empty()); }