コード例 #1
0
        private MarkdownTemplateModel GetParam(string fullName)
        {
            string LocalSub(string name)
            {
                var startIndex = name.LastIndexOf("<", StringComparison.Ordinal) + 1;
                var endIndex   = name.IndexOf(">", StringComparison.Ordinal) - 1;

                name = name.SubstringFromIndex(startIndex, endIndex);
                return(name);
            }

            if (!fullName.Contains("<"))
            {
                return new MarkdownTemplateModel {
                           Name = fullName
                }
            }
            ;
            var model     = new MarkdownTemplateModel();
            var localName = LocalSub(fullName);
            var tempModel =
                _models.Values.FirstOrDefault(templateModel => templateModel.Name == localName);

            var compiledTemplate = Handlebars.Compile(File.ReadAllText($@"{_generateMode.TemplatesPath}\Partials\link.txt"));

            model.Name = tempModel != null
                ? fullName.Replace(localName, compiledTemplate(tempModel))
                : fullName;

            return(model);
        }
コード例 #2
0
 public List <MarkdownTemplateModel> GetElements(List <MarkdownTemplateModel> models)
 {
     try
     {
         _models = models;
         foreach (var templateModel in _models
                  .Where(model => model.Description != null)
                  .OrderBy(model => model.RelativeKey)
                  .ToList())
         {
             if (templateModel.RelativeKey != _currentRelativeKey)
             {
                 Console.WriteLine(_currentRelativeKey);
                 _currentRelativeKey = templateModel.RelativeKey;
                 RegisterTemplates();
             }
             _model = templateModel;
             var xmlParsedDescription = XElement.Parse(_model.Description);
             _model.Description = null;
             GetValue(xmlParsedDescription);
         }
         return(_models);
     }
     catch (Exception e)
     {
         Write(e.Message);
         throw;
     }
 }
コード例 #3
0
 public string CreateMdText(MarkdownTemplateModel model) => _compiledTemplate(model);
コード例 #4
0
        private IEnumerable <MarkdownTemplateModel> CreateRelationsFromTypesHash()
        {
            #region BaseInit
            var initModels = new List <MarkdownTemplateModel>();

            MarkdownTemplateModel Init(BaseTypeNamespaceModel item)
            {
                var init = new MarkdownTemplateModel
                {
                    Name     = item.Name,
                    TypeForm = item.TypeForm,
                    FullName = item.FullName
                };

                if (item.IsTargetType)
                {
                    init.FilePath = $"{item.Namespace.Replace(".", "/")}/{item.Name}.md";
                }
                return(init);
            }

            foreach (var type in _typeItems.Types)
            {
                _models.Add(type, Init(type));
            }
            foreach (var type in _typeItems.Constructors)
            {
                _models.Add(type, Init(type));
            }
            foreach (var type in _typeItems.Events)
            {
                _models.Add(type, Init(type));
            }
            foreach (var type in _typeItems.Fields)
            {
                _models.Add(type, Init(type));
            }
            foreach (var type in _typeItems.Methods)
            {
                _models.Add(type, Init(type));
            }
            foreach (var type in _typeItems.Properties)
            {
                _models.Add(type, Init(type));
            }
            foreach (var type in _typeItems.Namespaces)
            {
                _models.Add(type, Init(type));
            }
            foreach (var type in _typeItems.Attributes)
            {
                _models.Add(type, Init(type));
            }
            foreach (var type in _typeItems.Delegates)
            {
                _models.Add(type, Init(type));
            }

            #endregion

            foreach (var markdownTemplateModel in _models)
            {
                switch (markdownTemplateModel.Value.TypeForm)
                {
                case "Class":
                    initModels.Add(InitTypeTemplateModel((AssemblyTypeModel)markdownTemplateModel.Key));
                    break;

                case "Interface":
                    initModels.Add(InitTypeTemplateModel((AssemblyTypeModel)markdownTemplateModel.Key));
                    break;

                case "Struct":
                    initModels.Add(InitTypeTemplateModel((AssemblyTypeModel)markdownTemplateModel.Key));
                    break;

                case "Enum":
                    initModels.Add(InitTypeTemplateModel((AssemblyTypeModel)markdownTemplateModel.Key));
                    break;

                case "Constructor":
                    initModels.Add(InitConstructorTemplateModel((ConstructorModel)markdownTemplateModel.Key));
                    break;

                case "Event":
                    initModels.Add(InitEventTemplateModel((EventModel)markdownTemplateModel.Key));
                    break;

                case "Field":
                    initModels.Add(InitFieldTemplateModel((FieldModel)markdownTemplateModel.Key));
                    break;

                case "NestedType":
                    initModels.Add(InitTypeTemplateModel((AssemblyTypeModel)markdownTemplateModel.Key));
                    break;

                case "Property":
                    initModels.Add(InitPropertyTemplateModel((PropertyModel)markdownTemplateModel.Key));
                    break;

                case "Method":
                    initModels.Add(InitMethodTemplateModel((MethodModel)markdownTemplateModel.Key));
                    break;

                case "Delegate":
                    initModels.Add(InitTypeTemplateModel((AssemblyTypeModel)markdownTemplateModel.Key));
                    break;

                case "Namespace":
                    initModels.Add(InitNamespaceTemplateModel((NamespaceModel)markdownTemplateModel.Key));
                    break;

                case "Attribute":
                    initModels.Add(InitTypeTemplateModel((AssemblyTypeModel)markdownTemplateModel.Key));
                    break;

                default:
                    throw new ArgumentException("Неизвестный тип");
                }
            }

            foreach (var templateModel in initModels)
            {
                if (templateModel.Fields == null)
                {
                    continue;
                }
                templateModel.EnumElements = templateModel.Fields.Where(model => model.IsEnumElement).ToList();
                templateModel.Fields       = templateModel.Fields.Except(templateModel.EnumElements).ToList();
                templateModel.ConstsList   = templateModel.Fields.Where(model => model.ConstValue != null).ToList();
                templateModel.Fields       = templateModel.Fields.Except(templateModel.ConstsList).ToList();
            }

            CreateInheritanceHierarchy();

            return(initModels);
        }