public ProjectionContext( Solution solution, PipelineDeclaration pipelineDeclaration) { _parameters = new Dictionary <string, string>(); _stateEntries = new Dictionary <string, object>(); Solution = solution; Pipeline = pipelineDeclaration; //Generator = generator; }
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); }
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); }