Example #1
0
        static public async Task <Node> EvaluateAsync(
            string hl,
            FileService fileService     = null,
            FolderService folderService = null,
            StreamService streamService = null)
        {
            var services = Initialize(fileService, folderService, streamService);
            var lambda   = new Parser(hl).Lambda();
            var signaler = services.GetService(typeof(ISignaler)) as ISignaler;
            await signaler.SignalAsync("eval", lambda);

            return(lambda);
        }
Example #2
0
        static IServiceProvider Initialize(
            FileService fileService     = null,
            FolderService folderService = null,
            StreamService streamService = null)
        {
            var configuration = new ConfigurationBuilder().Build();
            var services      = new ServiceCollection();

            services.AddTransient <IConfiguration>((svc) => configuration);
            services.AddTransient <ISignaler, Signaler>();
            if (fileService == null)
            {
                services.AddTransient <IFileService, file.services.FileService>();
            }
            else
            {
                services.AddTransient <IFileService>(svc => fileService);
            }
            if (folderService == null)
            {
                services.AddTransient <IFolderService, folder.services.FolderService>();
            }
            else
            {
                services.AddTransient <IFolderService>(svc => folderService);
            }
            if (streamService == null)
            {
                services.AddTransient <IStreamService, stream.services.StreamService>();
            }
            else
            {
                services.AddTransient <IStreamService>(svc => streamService);
            }
            services.AddTransient <IRootResolver, RootResolver>();
            var types = new SignalsProvider(InstantiateAllTypes <ISlot>(services));

            services.AddTransient <ISignalsProvider>((svc) => types);
            var provider = services.BuildServiceProvider();

            return(provider);
        }