Example #1
0
        private static void Main(string[] _)
        {
            var context = new Context();

            var console = context.CreateObject();
            console.GetReference("log").SetValue(console, context.CreateHostFunction((scope, self, args) =>
                                                                                         {
                                                                                             Console.Out.WriteLine(
                                                                                                 string.Join("", args));
                                                                                             return JsUndefined.Value;
                                                                                         }));
            context.Environment.CreateReference("console", console);

            Console.Out.WriteLine("Yesh - Yes Javascript Shell");
            //context.Execute(InitScript);
            while (true)
            {
                Console.Out.Write(":");
                Console.Out.Flush();
                var line = Console.In.ReadLine();
                if (line == null)
                {
                    break;
                }

                line = line.Trim();
                if (string.IsNullOrEmpty(line))
                {
                    continue;
                }

                try
                {
                    var start = DateTime.Now;
                    var result = context.Execute(line);
                    var elapsed = DateTime.Now - start;
                    Console.Out.WriteLine("[{0}] {1}", elapsed, result);
                }
                catch (JsException e)
                {
                    var javascriptException = e.ToJsValue(context.Environment);
                    Console.Out.WriteLine("[{0}] {1}",
                                          javascriptException.GetReference("name").GetValue(javascriptException),
                                          javascriptException.GetReference("message").GetValue(javascriptException));
                }
                catch (Exception e)
                {
                    Console.Out.WriteLine("{0}: {1}", e.GetType().Name, e.Message);
                }
            }
        }