diff --git a/JiraMarkupConverter.Tests/MarkupConverterTests.cs b/JiraMarkupConverter.Tests/MarkupConverterTests.cs index 40153731bd718553eea8e4cef02161a154b98c2b..62b1f375efa5f15ea307fe3c889f24453fff83fd 100644 --- a/JiraMarkupConverter.Tests/MarkupConverterTests.cs +++ b/JiraMarkupConverter.Tests/MarkupConverterTests.cs @@ -62,5 +62,43 @@ namespace JiraMarkupConverter.Tests expectedObj.ShouldEqual(result); } + + [Theory] + [InlineData( +@" + + + + + + + +

Sample header

+

Sample paragraph

+ + + + + + + + + +
Header 1Header 2
Cell 1Cell 2
+ +", +@"h1.Sample header +Sample paragraph +||Header 1||Header 2|| +|Cell 1|Cell 2| +")] + public void ConvertFromHtml_MarkupConvertedToString_ResultMatchesToExpected(string html, string expectedMarkup) + { + var sut = new MarkupConverter(); + var jiraMarkupObject = sut.ConvertFromHtml(html); + var actual = jiraMarkupObject.ToMarkupString(); + + Assert.Equal(expectedMarkup, actual); + } } } diff --git a/JiraMarkupConverter.Tests/Nodes/HeadersTests.cs b/JiraMarkupConverter.Tests/Nodes/HeadersTests.cs index d8c2e567d29dc782153f76071b661400c9c61db2..b1f7f6e6e7c651492f80e750c475343056b14a00 100644 --- a/JiraMarkupConverter.Tests/Nodes/HeadersTests.cs +++ b/JiraMarkupConverter.Tests/Nodes/HeadersTests.cs @@ -8,7 +8,7 @@ namespace JiraMarkupConverter.Tests.Nodes [Fact] public void ToMarkupString_SomeHeaders_ReturnsValidString() { - var jira = "\r\nh1.This is a header1.\r\nh2.This is a header2."; + var jira = "h1.This is a header1.\r\nh2.This is a header2.\r\n"; var node = new RootNode(); node.AddChildNode(new HeaderNode("This is a header1.", Header.H1)); node.AddChildNode(new HeaderNode("This is a header2.", Header.H2)); diff --git a/JiraMarkupConverter.Tests/Nodes/ParagraphTests.cs b/JiraMarkupConverter.Tests/Nodes/ParagraphTests.cs index 85fdbf24072a61a6293c76b7abb666a477ff2efe..ab880201d2cbecaf2ce77f09480127308758801d 100644 --- a/JiraMarkupConverter.Tests/Nodes/ParagraphTests.cs +++ b/JiraMarkupConverter.Tests/Nodes/ParagraphTests.cs @@ -8,7 +8,7 @@ namespace JiraMarkupConverter.Tests.Nodes [Fact] public void ToMarkupString_HtmlContainsSomeParagraph_ReturnsValidString() { - var jira = "\r\nThis is a paragraph.\r\n\r\nThis is second paragraph.\r\n"; + var jira = "This is a paragraph.\r\nThis is second paragraph.\r\n"; var node = new RootNode(); node.AddChildNode(new ParagraphNode("This is a paragraph.")); node.AddChildNode(new ParagraphNode("This is second paragraph.")); diff --git a/JiraMarkupConverter.Tests/Nodes/TableTests.cs b/JiraMarkupConverter.Tests/Nodes/TableTests.cs index ad8f4f4ad46cdf3dc8f50c7a5a4f10dd3c0bbb00..e2a1304ff4bc9fe9688983d8b481c4d6ebcdae00 100644 --- a/JiraMarkupConverter.Tests/Nodes/TableTests.cs +++ b/JiraMarkupConverter.Tests/Nodes/TableTests.cs @@ -20,7 +20,7 @@ namespace JiraMarkupConverter.Tests.Nodes [Fact] public void ToMarkupString_CreateTable_ReturnsValidString() { - var jira = $"\r\n\r\n||Firstname||Lastname||Age||\r\n|Jill|Smith|50|\r\n|Eve|Jackson|94|\r\n"; + var jira = $"||Firstname||Lastname||Age||\r\n|Jill|Smith|50|\r\n|Eve|Jackson|94|\r\n"; var node = new TableNode(); var rowHeader = new TableRowNode(TableRowType.Header); var rowDataFirst = new TableRowNode(TableRowType.Data); diff --git a/JiraMarkupConverter/MarkupConverter.cs b/JiraMarkupConverter/MarkupConverter.cs index 586e278c728735bcf86a21c5fb802e14ff58ff17..12e90d3e4570e69b72b9dc67e4209ee083e19f1c 100644 --- a/JiraMarkupConverter/MarkupConverter.cs +++ b/JiraMarkupConverter/MarkupConverter.cs @@ -51,7 +51,7 @@ namespace JiraMarkupConverter { "th", new DefaultNodeFactory(() => new TableCellNode()) }, { "td", new DefaultNodeFactory(() => new TableCellNode()) }, { "tr", new TableRowNodeFactory() }, - { "table", new DefaultNodeFactory(() => new TableCellNode()) }, + { "table", new DefaultNodeFactory(() => new TableNode()) }, }; /// diff --git a/JiraMarkupConverter/Nodes/HeaderNode.cs b/JiraMarkupConverter/Nodes/HeaderNode.cs index b8f199efcf3f7916d36817d064efbf9872ff918d..e5083001c478691cd547dbcf9bc2acacc7ff8193 100644 --- a/JiraMarkupConverter/Nodes/HeaderNode.cs +++ b/JiraMarkupConverter/Nodes/HeaderNode.cs @@ -51,10 +51,12 @@ namespace JiraMarkupConverter.Nodes { var headerMarkupString = _headerToMarkupMap.GetValueOrDefault(Header); - builder.AppendLine(); builder.Append(headerMarkupString); + this.RenderChildNodes(builder); + builder.AppendLine(); + return builder; } } diff --git a/JiraMarkupConverter/Nodes/ParagraphNode.cs b/JiraMarkupConverter/Nodes/ParagraphNode.cs index fc5f4082f64de163fcf4e0f70c1f67f77014a543..6ac933859ef256f3ace2b711d0cc76102664d910 100644 --- a/JiraMarkupConverter/Nodes/ParagraphNode.cs +++ b/JiraMarkupConverter/Nodes/ParagraphNode.cs @@ -26,7 +26,6 @@ namespace JiraMarkupConverter.Nodes /// String with markup. public override StringBuilder ToMarkupString(StringBuilder builder) { - builder.AppendLine(); this.RenderChildNodes(builder); builder.AppendLine(); diff --git a/JiraMarkupConverter/Nodes/TableNode.cs b/JiraMarkupConverter/Nodes/TableNode.cs index 6081135fabaec0e743ee903441694078ecf0fbc1..224accba1f8628d8b1df19bf7ca3a7210c43d1a0 100644 --- a/JiraMarkupConverter/Nodes/TableNode.cs +++ b/JiraMarkupConverter/Nodes/TableNode.cs @@ -21,9 +21,7 @@ namespace JiraMarkupConverter.Nodes /// String with markup. public override StringBuilder ToMarkupString(StringBuilder builder) { - builder.AppendLine(); this.RenderChildNodes(builder); - builder.AppendLine(); return builder; } diff --git a/JiraMarkupConverter/Nodes/TableRowNode.cs b/JiraMarkupConverter/Nodes/TableRowNode.cs index cd8278250849f6e10d59c02d77e481db37eee2de..f566e8e8501fce052699a6bd5a5c3910a8a77f7c 100644 --- a/JiraMarkupConverter/Nodes/TableRowNode.cs +++ b/JiraMarkupConverter/Nodes/TableRowNode.cs @@ -41,7 +41,6 @@ namespace JiraMarkupConverter.Nodes public override StringBuilder ToMarkupString(StringBuilder builder) { var rowTypeMarkupString = _rowTypeToMarkupMap.GetValueOrDefault(this.TypeRow); - builder.AppendLine(); foreach (var child in ChildNodes) { @@ -50,6 +49,7 @@ namespace JiraMarkupConverter.Nodes } builder.Append(rowTypeMarkupString); + builder.AppendLine(); return builder; } diff --git a/readme.md b/readme.md index 8d37c0de2467387de77db40a64044ecd397c09bb..d5af08b83699256355b8bd165d98f8146cd8d251 100644 --- a/readme.md +++ b/readme.md @@ -48,19 +48,17 @@ Code to convert html to jira markup will look like: // Get markup string from object by calling ToMarkupString(). Console.WriteLine(jiraMarkupObject.ToMarkupString()); ``` -Output of this code: +Output: ``` h1.Sample header Sample paragraph - - ||Header 1||Header 2|| |Cell 1|Cell 2| ``` # Manual markup building -Library support also building and modifying of nodes before convertion to markup string: +Example: ``` var rootNode = new RootNode();