コード例 #1
0
        public ProjectionContext(
            Solution solution,
            PipelineDeclaration pipelineDeclaration)
        {
            _parameters   = new Dictionary <string, string>();
            _stateEntries = new Dictionary <string, object>();

            Solution = solution;
            Pipeline = pipelineDeclaration;

            //Generator = generator;
        }
コード例 #2
0
        public static PipelineDeclaration Parse(JObject pipelineObject)
        {
            var pipelineName         = pipelineObject.GetStringPropertyValue("name");
            var selectorText         = pipelineObject.GetStringPropertyValue("selector");
            var transformationObject = pipelineObject.GetValue("transformation") as JObject;
            var inputObject          = pipelineObject.GetValue("input") as JObject;
            var outputerObject       = pipelineObject.GetValue("output") as JObject;

            var transformation = TransformationDeclaration.Parse(transformationObject);
            var output         = OutputDeclaration.Parse(outputerObject);
            var input          = InputDeclaration.Parse(inputObject);

            var pipeline = new PipelineDeclaration(
                pipelineName,
                selectorText,
                input,
                transformation,
                output);

            return(pipeline);
        }
コード例 #3
0
        public static Solution Parse(JObject root)
        {
            var name = root.GetStringPropertyValue("name");

            var loaders    = new List <ModelLoaderDeclaration>();
            var generators = new List <GeneratorRefDeclaration>();
            var models     = new List <ModelDeclaration>();
            var pipelines  = new List <PipelineDeclaration>();

            var result = new Solution(name, loaders, generators, models, pipelines);

            var loadersObject = root.GetValue("loaders") as JObject;

            foreach (JProperty property in loadersObject?.Properties() ?? Enumerable.Empty <JProperty>())
            {
                var packageName    = property.Name;
                var packageVersion = property.Value.Value <string>();
                loaders.Add(new ModelLoaderDeclaration(packageName, packageVersion));
            }

            var generatorsObject = root.GetValue("generators") as JObject;

            foreach (JProperty property in generatorsObject?.Properties() ?? Enumerable.Empty <JProperty>())
            {
                var packageName = property.Name;
                if (property.Value.Type == JTokenType.Object)
                {
                    var declObject = property.Value as JObject;
                    var decl       = GeneratorDeclaration.Parse(declObject, packageName);
                    generators.Add(new GeneratorRefDeclaration(packageName, decl.Version, decl));
                }
                else if (property.Value.Type == JTokenType.String)
                {
                    var packageVersion = property.Value.Value <string>();
                    generators.Add(new GeneratorRefDeclaration(packageName, packageVersion));
                }
                else
                {
                    // maybe warn or throw?
                }
            }

            var modelsArray = root.GetValue("models") as JArray;

            foreach (JObject modelObject in modelsArray ?? new JArray())
            {
                ModelDeclaration modelDeclaration = ModelDeclaration.Parse(result, modelObject);
                models.Add(modelDeclaration);
            }

            var pipelinesArray = root.GetValue("pipelines") as JArray;

            foreach (JObject pipelineObject in pipelinesArray ?? new JArray())
            {
                PipelineDeclaration pipeline = PipelineDeclaration.Parse(pipelineObject);
                pipelines.Add(pipeline);
            }


            return(result);
        }