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); }
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; } }
public string CreateMdText(MarkdownTemplateModel model) => _compiledTemplate(model);
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); }