Ejemplo n.º 1
0
        private static IKernel CreateKernel(
            string defaultKernelName,
            FrontendEnvironment frontendEnvironment,
            StartupOptions startupOptions,
            HttpProbingSettings httpProbingSettings)
        {
            var compositeKernel = new CompositeKernel();

            compositeKernel.FrontendEnvironment = frontendEnvironment;

            compositeKernel.Add(
                new CSharpKernel()
                .UseDefaultFormatting()
                .UseNugetDirective()
                .UseKernelHelpers()
                .UseJupyterHelpers()
                .UseWho()
                .UseXplot()
                .UseMathAndLaTeX());

            compositeKernel.Add(
                new FSharpKernel()
                .UseDefaultFormatting()
                .UseNugetDirective()
                .UseKernelHelpers()
                .UseWho()
                .UseDefaultNamespaces()
                .UseXplot()
                .UseMathAndLaTeX());

            compositeKernel.Add(
                new PowerShellKernel()
                .UseJupyterHelpers()
                .UseXplot(),
                new[] { "#!pwsh" });

            compositeKernel.Add(
                new JavaScriptKernel(),
                new[] { "#!js" });

            compositeKernel.Add(
                new HtmlKernel());

            var kernel = compositeKernel
                         .UseDefaultMagicCommands()
                         .UseLog()
                         .UseAbout()
                         .UseHttpApi(startupOptions, httpProbingSettings);

            SetUpFormatters(frontendEnvironment);


            kernel.DefaultKernelName = defaultKernelName;
            var enableHttp = new SubmitCode("#!enable-http", compositeKernel.Name);

            enableHttp.PublishInternalEvents();
            compositeKernel.DeferCommand(enableHttp);
            return(kernel);
        }
Ejemplo n.º 2
0
        public async Task Deferred_commands_on_composite_kernel_are_execute_on_first_submission()
        {
            var deferredCommandExecuted = false;
            var subKernel = new CSharpKernel();

            using var compositeKernel = new CompositeKernel
                  {
                      subKernel
                  };

            compositeKernel.DefaultKernelName = subKernel.Name;

            var deferred = new SubmitCode("placeholder")
            {
                Handler = (command, context) =>
                {
                    deferredCommandExecuted = true;
                    return(Task.CompletedTask);
                }
            };


            compositeKernel.DeferCommand(deferred);

            var events = compositeKernel.KernelEvents.ToSubscribedList();

            await compositeKernel.SendAsync(new SubmitCode("var x = 1;", targetKernelName : subKernel.Name));

            deferredCommandExecuted.Should().Be(true);

            events
            .Select(e => e.GetType())
            .Should()
            .ContainInOrder(
                typeof(CodeSubmissionReceived),
                typeof(CompleteCodeSubmissionReceived),
                typeof(CommandHandled));
        }
Ejemplo n.º 3
0
        public async Task Deferred_commands_on_composite_kernel_can_use_directives()
        {
            var deferredCommandExecuted = false;
            var subKernel = new CSharpKernel();

            using var compositeKernel = new CompositeKernel
                  {
                      subKernel
                  };
            var customDirective = new Command("#!customDirective")
            {
                Handler = CommandHandler.Create(() => { deferredCommandExecuted = true; })
            };

            compositeKernel.AddDirective(customDirective);

            compositeKernel.DefaultKernelName = subKernel.Name;

            var deferred = new SubmitCode("#!customDirective");

            compositeKernel.DeferCommand(deferred);

            var events = compositeKernel.KernelEvents.ToSubscribedList();

            await compositeKernel.SendAsync(new SubmitCode("var x = 1;", targetKernelName : subKernel.Name));

            deferredCommandExecuted.Should().Be(true);

            events
            .Select(e => e.GetType())
            .Should()
            .ContainInOrder(
                typeof(CodeSubmissionReceived),
                typeof(CompleteCodeSubmissionReceived),
                typeof(CommandSucceeded));
        }
 protected void DeferCommand(IKernelCommand command)
 {
     _compositeKernel.DeferCommand(command);
 }