public void Run(MetadataModel yaml, ResolverContext context) { TreeIterator.Preorder(yaml.TocYamlViewModel, null, s => s.IsInvalid ? null : s.Items, (member, parent) => { if (member.Type != MemberType.Toc) { ApiIndexItemModel item; if (yaml.Indexer.TryGetValue(member.Name, out item)) { Logger.Log(LogLevel.Warning, $"{member.Name} already exists in {item.Href}, the duplicate one {member.Href} will be ignored."); } else { yaml.Indexer.Add( member.Name, new ApiIndexItemModel { Name = member.Name, Href = context.ApiFolder.ForwardSlashCombine(member.Href) }); } } return(true); }); }
/// <summary> /// TODO: input Namespace list instead; /// TODO: Save to ...yml.map /// </summary> /// <param name="allMembers"></param> /// <returns></returns> public static MetadataModel ResolveMetadata( Dictionary<string, MetadataItem> allMembers, Dictionary<string, ReferenceItem> allReferences, string apiFolder, bool preserveRawInlineComments, IEnumerable<string> externalReferencePackages) { MetadataModel viewModel = new MetadataModel(); viewModel.TocYamlViewModel = new MetadataItem() { Type = MemberType.Toc, Items = allMembers.Where(s => s.Value.Type == MemberType.Namespace).Select(s => s.Value).ToList(), }; viewModel.Members = new List<MetadataItem>(); ResolverContext context = new ResolverContext { ApiFolder = apiFolder, References = allReferences, PreserveRawInlineComments = preserveRawInlineComments, ExternalReferences = externalReferencePackages == null ? null : new ExternalReferencePackageCollection(externalReferencePackages), }; ExecutePipeline(viewModel, context); return viewModel; }
public void Run(MetadataModel yaml, ResolverContext context) { TreeIterator.Preorder(yaml.TocYamlViewModel, null, s => s.IsInvalid ? null : s.Items, (current, parent) => { if (current.References != null) { foreach (var referenceItem in current.References.Values) { if (referenceItem.Parts != null) { foreach (var links in referenceItem.Parts.Values) { foreach (var item in links) { SetHref(item, yaml.Indexer, current.Name, context); } } } } } return(true); }); }
public ParseResult Run(MetadataModel yaml, ResolverContext context) { TreeIterator.Preorder(yaml.TocYamlViewModel, null, s => { if (s.IsInvalid || (s.Type != MemberType.Namespace && s.Type != MemberType.Toc)) { return(null); } else { return(s.Items); } }, (member, parent) => { if (member.Type != MemberType.Toc) { yaml.Members.Add(member); } return(true); }); return(new ParseResult(ResultLevel.Success)); }
public static void ExecutePipeline(MetadataModel yaml, ResolverContext context) { foreach (var pipeline in pipelines) { pipeline.Run(yaml, context); } }
/// <summary> /// TODO: input Namespace list instead; /// TODO: Save to ...yml.map /// </summary> /// <param name="allMembers"></param> /// <returns></returns> public static MetadataModel ResolveMetadata( Dictionary <string, MetadataItem> allMembers, Dictionary <string, ReferenceItem> allReferences, string apiFolder, bool preserveRawInlineComments, IEnumerable <string> externalReferencePackages) { MetadataModel viewModel = new MetadataModel(); viewModel.Indexer = new ApiReferenceModel(); viewModel.TocYamlViewModel = new MetadataItem() { Type = MemberType.Toc, Items = allMembers.Where(s => s.Value.Type == MemberType.Namespace).Select(s => s.Value).ToList(), }; viewModel.Members = new List <MetadataItem>(); ResolverContext context = new ResolverContext { ApiFolder = apiFolder, References = allReferences, PreserveRawInlineComments = preserveRawInlineComments, ExternalReferences = externalReferencePackages == null ? null : new ExternalReferencePackageCollection(externalReferencePackages), }; var result = ExecutePipeline(viewModel, context); Logger.Log(result); return(viewModel); }
public ParseResult Run(MetadataModel yaml, ResolverContext context) { TreeIterator.Preorder(yaml.TocYamlViewModel, null, s => s.IsInvalid ? null : s.Items, (current, parent) => { if (current.References != null) { foreach (var referenceItem in current.References.Values) { if (referenceItem.Parts != null) { foreach (var links in referenceItem.Parts.Values) { foreach (var item in links) { SetHref(item, yaml.Indexer, current.Name, context); } } } } } return true; }); return new ParseResult(ResultLevel.Success); }
public void Run(MetadataModel yaml, ResolverContext context) { yaml.TocYamlViewModel = yaml.TocYamlViewModel.ShrinkToSimpleTocWithNamespaceNotEmpty(); // Comparing to toc files, yaml files are all in api folder TreeIterator.Preorder(yaml.TocYamlViewModel, null, (s) => { if (s.IsInvalid) { return(null); } else { return(s.Items); } }, (current, parent) => { if (current.Type != MemberType.Toc) { if (!string.IsNullOrEmpty(current.Href)) { current.Href = context.ApiFolder.ForwardSlashCombine(current.Href); } } return(true); }); }
public ParseResult Run(MetadataModel yaml, ResolverContext context) { TreeIterator.Preorder(yaml.TocYamlViewModel, null, s => s.IsInvalid ? null : s.Items, (member, parent) => { if (member.Type != MemberType.Toc) { ApiIndexItemModel item; if (yaml.Indexer.TryGetValue(member.Name, out item)) { Logger.Log(LogLevel.Warning, $"{member.Name} already exists in {item.Href}, the duplicate one {member.Href} will be ignored."); } else { yaml.Indexer.Add( member.Name, new ApiIndexItemModel { Name = member.Name, Href = context.ApiFolder.ForwardSlashCombine(member.Href) }); } } return true; }); return new ParseResult(ResultLevel.Success); }
public ParseResult Run(MetadataModel yaml, ResolverContext context) { TreeIterator.Preorder(yaml.TocYamlViewModel, null, s => s.IsInvalid ? null : s.Items, (current, parent) => { current.Parent = parent; return(true); }); return(new ParseResult(ResultLevel.Success)); }
public ParseResult Run(MetadataModel yaml, ResolverContext context) { TreeIterator.Preorder(yaml.TocYamlViewModel, null, s => s.IsInvalid ? null : s.Items, (current, parent) => { current.Parent = parent; return true; }); return new ParseResult(ResultLevel.Success); }
/// <summary> /// The yaml layout should be /// namespace -- class level -- method level /// </summary> /// <param name="allMembers"></param> /// <returns></returns> public void Run(MetadataModel yaml, ResolverContext context) { StringBuilder message = new StringBuilder(); foreach (var member in yaml.TocYamlViewModel.Items) { var result = CheckNamespaces(member); if (!string.IsNullOrEmpty(result)) { message.AppendLine(result); } } if (message.Length > 0) { Logger.LogWarning(message.ToString()); } }
/// <summary> /// The yaml layout should be /// namespace -- class level -- method level /// </summary> /// <param name="allMembers"></param> /// <returns></returns> public ParseResult Run(MetadataModel yaml, ResolverContext context) { ParseResult overall = new ParseResult(ResultLevel.Success); StringBuilder message = new StringBuilder(); foreach (var member in yaml.TocYamlViewModel.Items) { CheckNamespaces(member); } if (message.Length > 0) { overall.ResultLevel = ResultLevel.Warning; overall.Message = message.ToString(); } return overall; }
/// <summary> /// The yaml layout should be /// namespace -- class level -- method level /// </summary> /// <param name="allMembers"></param> /// <returns></returns> public ParseResult Run(MetadataModel yaml, ResolverContext context) { ParseResult overall = new ParseResult(ResultLevel.Success); StringBuilder message = new StringBuilder(); foreach (var member in yaml.TocYamlViewModel.Items) { CheckNamespaces(member); } if (message.Length > 0) { overall.ResultLevel = ResultLevel.Warning; overall.Message = message.ToString(); } return(overall); }
public ParseResult Run(MetadataModel yaml, ResolverContext context) { TreeIterator.Preorder(yaml.TocYamlViewModel, null, s => s.IsInvalid ? null : s.Items, (current, parent) => { MetadataItem page; var addingReferences = new List <ReferenceItem>(); var documentReferences = current.References; if (current.Type.IsPageLevel()) { page = current; current.References = new Dictionary <string, ReferenceItem>(); } else { page = parent; current.References = null; } if (documentReferences != null && documentReferences.Count > 0) { foreach (var key in documentReferences.Keys) { TryAddReference(context, page, addingReferences, key); } } foreach (var key in GetReferenceKeys(current)) { TryAddReference(context, page, addingReferences, key); } if (current.Type == MemberType.Namespace) { foreach (var item in current.Items) { TryAddReference(context, page, addingReferences, item.Name); } } AddIndirectReference(context, page, addingReferences); return(true); }); return(new ParseResult(ResultLevel.Success)); }
public ParseResult Run(MetadataModel yaml, ResolverContext context) { TreeIterator.Preorder(yaml.TocYamlViewModel, null, s => s.IsInvalid ? null : s.Items, (current, parent) => { MetadataItem page; var addingReferences = new List<ReferenceItem>(); var documentReferences = current.References; if (current.Type.IsPageLevel()) { page = current; current.References = new Dictionary<string, ReferenceItem>(); } else { page = parent; current.References = null; } if (documentReferences != null && documentReferences.Count > 0) { foreach (var key in documentReferences.Keys) { TryAddReference(context, page, addingReferences, key); } } foreach (var key in GetReferenceKeys(current)) { TryAddReference(context, page, addingReferences, key); } if (current.Type == MemberType.Namespace) { foreach (var item in current.Items) { TryAddReference(context, page, addingReferences, item.Name); } } AddIndirectReference(context, page, addingReferences); return true; }); return new ParseResult(ResultLevel.Success); }
public static ParseResult ExecutePipeline(MetadataModel yaml, ResolverContext context) { ParseResult result = new ParseResult(ResultLevel.Success); foreach (var pipeline in pipelines) { result = pipeline.Run(yaml, context); if (result.ResultLevel == ResultLevel.Error) { return result; } if (!string.IsNullOrEmpty(result.Message)) { Logger.Log(result); } } return result; }
public static ParseResult ExecutePipeline(MetadataModel yaml, ResolverContext context) { ParseResult result = new ParseResult(ResultLevel.Success); foreach (var pipeline in pipelines) { result = pipeline.Run(yaml, context); if (result.ResultLevel == ResultLevel.Error) { return(result); } if (!string.IsNullOrEmpty(result.Message)) { Logger.Log(result); } } return(result); }
public void Run(MetadataModel yaml, ResolverContext context) { TreeIterator.Preorder(yaml.TocYamlViewModel, null, s => s.IsInvalid ? null : s.Items, (member, parent) => { // get all the possible places where link is possible if (member.Syntax != null && member.Syntax.Content != null) { SyntaxLanguage[] keys = new SyntaxLanguage[member.Syntax.Content.Count]; member.Syntax.Content.Keys.CopyTo(keys, 0); foreach (var key in keys) { member.Syntax.Content[key] = NormalizeLines(member.Syntax.Content[key]); } } return(true); }); }
public void Run(MetadataModel yaml, ResolverContext context) { TreeIterator.Preorder(yaml.TocYamlViewModel, null, s => s.IsInvalid ? null : s.Items, (member, parent) => { // get all the possible places where link is possible if (member.Syntax != null && member.Syntax.Content != null) { SyntaxLanguage[] keys = new SyntaxLanguage[member.Syntax.Content.Count]; member.Syntax.Content.Keys.CopyTo(keys, 0); foreach(var key in keys) { member.Syntax.Content[key] = NormalizeLines(member.Syntax.Content[key]); } } return true; }); }
public ParseResult Run(MetadataModel yaml, ResolverContext context) { TreeIterator.Preorder(yaml.TocYamlViewModel, null, s => { if (s.IsInvalid || (s.Type != MemberType.Namespace && s.Type != MemberType.Toc)) return null; else return s.Items; }, (member, parent) => { if (member.Type != MemberType.Toc) { yaml.Members.Add(member); } return true; }); return new ParseResult(ResultLevel.Success); }
public void Run(MetadataModel yaml, ResolverContext context) { yaml.TocYamlViewModel = yaml.TocYamlViewModel.ShrinkToSimpleTocWithNamespaceNotEmpty(); // Comparing to toc files, yaml files are all in api folder TreeIterator.Preorder(yaml.TocYamlViewModel, null, (s) => { if (s.IsInvalid) return null; else return s.Items; }, (current, parent) => { if (current.Type != MemberType.Toc) { if (!string.IsNullOrEmpty(current.Href)) { current.Href = context.ApiFolder.ForwardSlashCombine(current.Href); } } return true; }); }
public ParseResult Run(MetadataModel yaml, ResolverContext context) { TreeIterator.Preorder(yaml.TocYamlViewModel, null, s => s.IsInvalid ? null : s.Items, (current, parent) => { if (current.Type != MemberType.Toc) { if (current.Type.IsPageLevel()) { current.Href = current.Name + Constants.YamlExtension; } else { current.Href = parent.Href; } } return(true); }); return(new ParseResult(ResultLevel.Success)); }
public ParseResult Run(MetadataModel yaml, ResolverContext context) { TreeIterator.Preorder(yaml.TocYamlViewModel, null, s => s.IsInvalid ? null : s.Items, (current, parent) => { if (current.Type != MemberType.Toc) { if (current.Type.IsPageLevel()) { current.Href = current.Name + Constants.YamlExtension; } else { current.Href = parent.Href; } } return true; }); return new ParseResult(ResultLevel.Success); }
public ParseResult Run(MetadataModel yaml, ResolverContext context) { // Moved to Metadata Visitor return new ParseResult(ResultLevel.Success); }
public void Run(MetadataModel yaml, ResolverContext context) { yaml.TocYamlViewModel = yaml.TocYamlViewModel.ShrinkToSimpleTocWithNamespaceNotEmpty(); }
public ParseResult Run(MetadataModel yaml, ResolverContext context) { // Moved to Metadata Visitor return(new ParseResult(ResultLevel.Success)); }