예제 #1
0
        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);
        }
예제 #2
0
 public ModelContext(ModelDeclaration declaration, Model model)
 {
     Declaration = declaration;
     Model       = model;
 }
예제 #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);
        }