private static void BuildItem(IHostService host, FileModel model) { var file = model.FileAndType; var overwrites = MarkdownReader.ReadMarkdownAsOverwrite(host, model.FileAndType).ToList(); model.Content = overwrites; model.LocalPathFromRepoRoot = overwrites[0].Documentation?.Remote?.RelativePath ?? Path.Combine(file.BaseDir, file.File).ToDisplayPath(); model.Uids = (from item in overwrites select new UidDefinition( item.Uid, model.LocalPathFromRepoRoot, item.Documentation.StartLine + 1)).ToImmutableArray(); }
private static void BuildItem(IHostService host, FileModel model) { var file = model.FileAndType; var overwrites = MarkdownReader.ReadMarkdownAsOverwrite(host, model.FileAndType).ToList(); model.Content = overwrites; model.LinkToFiles = overwrites.SelectMany(o => o.LinkToFiles).ToImmutableHashSet(); model.LinkToUids = overwrites.SelectMany(o => o.LinkToUids).ToImmutableHashSet(); model.Uids = (from item in overwrites select new UidDefinition( item.Uid, model.LocalPathFromRoot, item.Documentation.StartLine + 1)).ToImmutableArray(); }
public void TestReadMarkdownAsOverwrite() { const string Content = @"--- uid: Test remarks: Hello --- This is unit test!"; const string FileName = "ut_ReadMarkdownAsOverwrite.md"; File.WriteAllText(FileName, Content); var results = MarkdownReader.ReadMarkdownAsOverwrite(Environment.CurrentDirectory, FileName); Assert.NotNull(results); Assert.Equal(1, results.Count); Assert.Equal("Test", results[0].Uid); Assert.Equal("Hello", results[0].Metadata["remarks"]); Assert.Equal(@" This is unit test!", results[0].Conceptual); File.Delete(FileName); }
public void TestReadMarkdownAsOverwrite() { var content = @"--- uid: Test remarks: Hello --- This is unit test!"; content = Regex.Replace(content, "\r?\n", "\r\n"); var html = DocfxFlavoredMarked.Markup(content); var baseDir = Directory.GetCurrentDirectory(); var fileName = "ut_ReadMarkdownAsOverwrite.md"; var fullPath = Path.Combine(baseDir, fileName); File.WriteAllText(fullPath, content); var host = new HostService(null, Enumerable.Empty <FileModel>()) { MarkdownService = new DfmServiceProvider().CreateMarkdownService(new MarkdownServiceParameters { BasePath = string.Empty }), SourceFiles = ImmutableDictionary.Create <string, FileAndType>() }; var ft = new FileAndType(baseDir, fileName, DocumentType.Overwrite); var results = MarkdownReader.ReadMarkdownAsOverwrite(host, ft).ToList(); Assert.NotNull(results); Assert.Equal(1, results.Count); Assert.Equal("Test", results[0].Uid); Assert.Equal("Hello", results[0].Metadata["remarks"]); Assert.Equal("<p sourcefile=\"ut_ReadMarkdownAsOverwrite.md\" sourcestartlinenumber=\"6\" sourceendlinenumber=\"6\">This is unit test!</p>\n", results[0].Conceptual); File.Delete(fileName); // Test conceptual content between two yamlheader content = @"--- uid: Test1 remarks: Hello --- This is unit test! --- uid: Test2 --- "; content = Regex.Replace(content, "\r?\n", "\r\n"); html = DocfxFlavoredMarked.Markup(content); File.WriteAllText(fileName, content); results = MarkdownReader.ReadMarkdownAsOverwrite(host, ft).ToList(); Assert.NotNull(results); Assert.Equal(2, results.Count); Assert.Equal("Test1", results[0].Uid); Assert.Equal("Test2", results[1].Uid); Assert.Equal("Hello", results[0].Metadata["remarks"]); Assert.Equal("<p sourcefile=\"ut_ReadMarkdownAsOverwrite.md\" sourcestartlinenumber=\"5\" sourceendlinenumber=\"5\">This is unit test!</p>\n", results[0].Conceptual); Assert.Equal(string.Empty, results[1].Conceptual); File.Delete(fileName); //invalid yamlheader is not supported content = @"--- uid: Test1 remarks: Hello --- This is unit test! --- uid: Test2 --- "; content = Regex.Replace(content, "\r?\n", "\r\n"); html = DocfxFlavoredMarked.Markup(content); File.WriteAllText(fileName, content); results = MarkdownReader.ReadMarkdownAsOverwrite(host, ft).ToList(); Assert.NotNull(results); Assert.Equal(1, results.Count); Assert.Equal("Test1", results[0].Uid); Assert.Equal("Hello", results[0].Metadata["remarks"]); Assert.Equal("<h2 id=\"this-is-unit-test\" sourcefile=\"ut_ReadMarkdownAsOverwrite.md\" sourcestartlinenumber=\"5\" sourceendlinenumber=\"6\">This is unit test!</h2>\n<h2 id=\"uid-test2\" sourcefile=\"ut_ReadMarkdownAsOverwrite.md\" sourcestartlinenumber=\"7\" sourceendlinenumber=\"8\">uid: Test2</h2>\n", results[0].Conceptual); File.Delete(fileName); // Test conceptual content with extra empty line between two yamlheader content = @"--- uid: Test1 remarks: Hello --- This is unit test! --- uid: Test2 --- "; content = Regex.Replace(content, "\r?\n", "\r\n"); html = DocfxFlavoredMarked.Markup(content); File.WriteAllText(fileName, content); results = MarkdownReader.ReadMarkdownAsOverwrite(host, ft).ToList(); Assert.NotNull(results); Assert.Equal(2, results.Count); Assert.Equal("Test1", results[0].Uid); Assert.Equal("Test2", results[1].Uid); Assert.Equal("Hello", results[0].Metadata["remarks"]); Assert.Equal("<p sourcefile=\"ut_ReadMarkdownAsOverwrite.md\" sourcestartlinenumber=\"7\" sourceendlinenumber=\"7\">This is unit test!</p>\n", results[0].Conceptual); Assert.Equal(string.Empty, results[1].Conceptual); File.Delete(fileName); // Test different line ending content = "---\nuid: Test\nremarks: Hello\n---\nThis is unit test!\n"; html = DocfxFlavoredMarked.Markup(content); File.WriteAllText(fileName, content); results = MarkdownReader.ReadMarkdownAsOverwrite(host, ft).ToList(); Assert.NotNull(results); Assert.Equal(1, results.Count); Assert.Equal("Test", results[0].Uid); Assert.Equal("Hello", results[0].Metadata["remarks"]); Assert.Equal("<p sourcefile=\"ut_ReadMarkdownAsOverwrite.md\" sourcestartlinenumber=\"5\" sourceendlinenumber=\"5\">This is unit test!</p>\n", results[0].Conceptual); File.Delete(fileName); // Test link to files and Uids in overwrite document content = @"--- uid: Test remarks: Hello --- @NotExistUid [Not exist link](link.md) This is unit test!"; content = Regex.Replace(content, "\r?\n", "\r\n"); html = DocfxFlavoredMarked.Markup(content); File.WriteAllText(fileName, content); results = MarkdownReader.ReadMarkdownAsOverwrite(host, ft).ToList(); Assert.NotNull(results); Assert.Equal(1, results.Count); Assert.Equal("Test", results[0].Uid); Assert.Equal("Hello", results[0].Metadata["remarks"]); Assert.Equal(1, results[0].LinkToFiles.Count); Assert.Equal("~/link.md", results[0].LinkToFiles.ElementAt(0)); Assert.Equal(1, results[0].LinkToUids.Count); Assert.Equal("NotExistUid", results[0].LinkToUids.ElementAt(0)); Assert.Equal(@"<p sourcefile=""ut_ReadMarkdownAsOverwrite.md"" sourcestartlinenumber=""5"" sourceendlinenumber=""5""><xref href=""NotExistUid"" data-throw-if-not-resolved=""False"" data-raw-source=""@NotExistUid"" sourcefile=""ut_ReadMarkdownAsOverwrite.md"" sourcestartlinenumber=""5"" sourceendlinenumber=""5""></xref></p> <p sourcefile=""ut_ReadMarkdownAsOverwrite.md"" sourcestartlinenumber=""7"" sourceendlinenumber=""7""><a href=""link.md"" data-raw-source=""[Not exist link](link.md)"" sourcefile=""ut_ReadMarkdownAsOverwrite.md"" sourcestartlinenumber=""7"" sourceendlinenumber=""7"">Not exist link</a></p> <p sourcefile=""ut_ReadMarkdownAsOverwrite.md"" sourcestartlinenumber=""9"" sourceendlinenumber=""9"">This is unit test!</p> ".Replace("\r\n", "\n"), results[0].Conceptual); File.Delete(fileName); }
public void TestReadMarkdownAsOverwrite() { var content = @"--- uid: Test remarks: Hello --- This is unit test!"; content = Regex.Replace(content, "/r?/n", "/r/n"); const string FileName = "ut_ReadMarkdownAsOverwrite.md"; File.WriteAllText(FileName, content); var results = MarkdownReader.ReadMarkdownAsOverwrite(Environment.CurrentDirectory, FileName); Assert.NotNull(results); Assert.Equal(1, results.Count); Assert.Equal("Test", results[0].Uid); Assert.Equal("Hello", results[0].Metadata["remarks"]); Assert.Equal("\r\nThis is unit test!", results[0].Conceptual); File.Delete(FileName); // Test conceptual content between two yamlheader content = @"--- uid: Test1 remarks: Hello --- This is unit test! --- uid: Test2 --- "; content = Regex.Replace(content, "/r?/n", "/r/n"); File.WriteAllText(FileName, content); results = MarkdownReader.ReadMarkdownAsOverwrite(Environment.CurrentDirectory, FileName); Assert.NotNull(results); Assert.Equal(2, results.Count); Assert.Equal("Test1", results[0].Uid); Assert.Equal("Test2", results[1].Uid); Assert.Equal("Hello", results[0].Metadata["remarks"]); Assert.Equal("This is unit test!", results[0].Conceptual); Assert.Equal(String.Empty, results[1].Conceptual); File.Delete(FileName); // Test conceptual content with extra empty line between two yamlheader content = @"--- uid: Test1 remarks: Hello --- This is unit test! --- uid: Test2 --- "; content = Regex.Replace(content, "/r?/n", "/r/n"); File.WriteAllText(FileName, content); results = MarkdownReader.ReadMarkdownAsOverwrite(Environment.CurrentDirectory, FileName); Assert.NotNull(results); Assert.Equal(2, results.Count); Assert.Equal("Test1", results[0].Uid); Assert.Equal("Test2", results[1].Uid); Assert.Equal("Hello", results[0].Metadata["remarks"]); Assert.Equal("\r\n\r\nThis is unit test!\r\n\r\n", results[0].Conceptual); Assert.Equal(String.Empty, results[1].Conceptual); File.Delete(FileName); // Test different line ending content = "---\nuid: Test\nremarks: Hello\n---\nThis is unit test!\n"; File.WriteAllText(FileName, content); results = MarkdownReader.ReadMarkdownAsOverwrite(Environment.CurrentDirectory, FileName); Assert.NotNull(results); Assert.Equal(1, results.Count); Assert.Equal("Test", results[0].Uid); Assert.Equal("Hello", results[0].Metadata["remarks"]); Assert.Equal("This is unit test!\n", results[0].Conceptual); File.Delete(FileName); }
public void TestReadMarkdownAsOverwrite() { var content = @"--- uid: Test remarks: Hello --- This is unit test!"; content = Regex.Replace(content, "\r?\n", "\r\n"); var html = DocfxFlavoredMarked.Markup(content); var baseDir = Directory.GetCurrentDirectory(); var fileName = "ut_ReadMarkdownAsOverwrite.md"; var fullPath = Path.Combine(baseDir, fileName); File.WriteAllText(fullPath, content); var host = new HostService(null, Enumerable.Empty <FileModel>()) { MarkdownService = new DfmServiceProvider().CreateMarkdownService(new MarkdownServiceParameters { BasePath = string.Empty }) }; var ft = new FileAndType(baseDir, fileName, DocumentType.Overwrite, null); var results = MarkdownReader.ReadMarkdownAsOverwrite(host, ft).ToList(); Assert.NotNull(results); Assert.Equal(1, results.Count); Assert.Equal("Test", results[0].Uid); Assert.Equal("Hello", results[0].Metadata["remarks"]); Assert.Equal("<p>This is unit test!</p>\n", results[0].Conceptual); File.Delete(fileName); // Test conceptual content between two yamlheader content = @"--- uid: Test1 remarks: Hello --- This is unit test! --- uid: Test2 --- "; content = Regex.Replace(content, "\r?\n", "\r\n"); html = DocfxFlavoredMarked.Markup(content); File.WriteAllText(fileName, content); results = MarkdownReader.ReadMarkdownAsOverwrite(host, ft).ToList(); Assert.NotNull(results); Assert.Equal(2, results.Count); Assert.Equal("Test1", results[0].Uid); Assert.Equal("Test2", results[1].Uid); Assert.Equal("Hello", results[0].Metadata["remarks"]); Assert.Equal("<p>This is unit test!</p>\n", results[0].Conceptual); Assert.Equal(string.Empty, results[1].Conceptual); File.Delete(fileName); //invalid yamlheader is not supported content = @"--- uid: Test1 remarks: Hello --- This is unit test! --- uid: Test2 --- "; content = Regex.Replace(content, "\r?\n", "\r\n"); html = DocfxFlavoredMarked.Markup(content); File.WriteAllText(fileName, content); results = MarkdownReader.ReadMarkdownAsOverwrite(host, ft).ToList(); Assert.NotNull(results); Assert.Equal(1, results.Count); Assert.Equal("Test1", results[0].Uid); Assert.Equal("Hello", results[0].Metadata["remarks"]); Assert.Equal("<h2 id=\"this-is-unit-test-\">This is unit test!</h2>\n<h2 id=\"uid-test2\">uid: Test2</h2>\n", results[0].Conceptual); File.Delete(fileName); // Test conceptual content with extra empty line between two yamlheader content = @"--- uid: Test1 remarks: Hello --- This is unit test! --- uid: Test2 --- "; content = Regex.Replace(content, "\r?\n", "\r\n"); html = DocfxFlavoredMarked.Markup(content); File.WriteAllText(fileName, content); results = MarkdownReader.ReadMarkdownAsOverwrite(host, ft).ToList(); Assert.NotNull(results); Assert.Equal(2, results.Count); Assert.Equal("Test1", results[0].Uid); Assert.Equal("Test2", results[1].Uid); Assert.Equal("Hello", results[0].Metadata["remarks"]); Assert.Equal("<p>This is unit test!</p>\n", results[0].Conceptual); Assert.Equal(string.Empty, results[1].Conceptual); File.Delete(fileName); // Test different line ending content = "---\nuid: Test\nremarks: Hello\n---\nThis is unit test!\n"; html = DocfxFlavoredMarked.Markup(content); File.WriteAllText(fileName, content); results = MarkdownReader.ReadMarkdownAsOverwrite(host, ft).ToList(); Assert.NotNull(results); Assert.Equal(1, results.Count); Assert.Equal("Test", results[0].Uid); Assert.Equal("Hello", results[0].Metadata["remarks"]); Assert.Equal("<p>This is unit test!</p>\n", results[0].Conceptual); File.Delete(fileName); }