public static ModelDeclaration Parse(Solution solution, JObject modelObject) { var modelName = modelObject.GetStringPropertyValue("name"); var loaderName = modelObject.GetStringPropertyValue("loaderName"); var tagsText = modelObject.GetStringPropertyValue("tags"); var tags = TagsParser.Parse(tagsText); var parametersObject = modelObject.Property("parameters")?.Value as JObject; var parameters = parametersObject.ToParametersDictionary(); var modelDeclaration = new ModelDeclaration(solution, modelName, loaderName, tags, parameters); return(modelDeclaration); }
public ModelContext(ModelDeclaration declaration, Model model) { Declaration = declaration; Model = model; }
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); }