Exemplo n.º 1
0
        private void ParseSamplePopulator(ProjectModel model, ProjectLexer lexer)
        {
            var populator = new SampleProjectModelPopulator
            {
                Type = ProjectModelPopulatorType.Sample,
                Id   = lexer.Consume(TokenKind.Identifier)
            };

            model.Populators.Add(populator);

            lexer.Consume(TokenKind.LeftCurly);

            while (lexer.Token.Kind == TokenKind.Keyword)
            {
                var keyword = lexer.Consume(TokenKind.Keyword);

                switch (keyword)
                {
                case "files":
                    populator.Files.AddRange(ConsumeWildcardFiles(lexer));
                    OptionallyConsume(lexer, TokenKind.Semicolon);
                    break;

                case "zip-mask":
                    populator.ZipMask = lexer.Consume(TokenKind.String);
                    OptionallyConsume(lexer, TokenKind.Semicolon);
                    break;
                }
            }

            lexer.Consume(TokenKind.RightCurly);
        }
Exemplo n.º 2
0
        private IModelUpdater CreateSampleUpdater(SampleProjectModelPopulator modelPopulator, ProjectModel projectModel, AppSettings settings)
        {
            // Going through lots of files to gather up the samples takes quite some time. To amortize
            // the impact, we do the sampling and write a summary to the scratch area. The normal pipeline
            // reads this summary and loads it into the model. The process begins by creating a sample writer...
            var writer = serviceProvider.GetRequiredService <SampleWriter>();

            writer.OutputPath = Path.Combine(settings.TempDir, $"{projectModel.Id}-{modelPopulator.Id}.json");
            writer.InputFiles = modelPopulator.Files;
            writer.ZipMask    = modelPopulator.ZipMask;

            // Create the updater, which reads the samples and updates the model
            var updater = serviceProvider.GetRequiredService <IModelSampleUpdater>();

            updater.Writer   = writer;
            updater.SampleId = modelPopulator.Id;

            return(updater);
        }