diff options
author | Leo Dos Santos | 2014-08-07 23:53:47 +0000 |
---|---|---|
committer | Leo Dos Santos | 2014-08-12 20:39:43 +0000 |
commit | e5b14a9639061074fa3d3b49478d8f84d13bc98b (patch) | |
tree | c6cdf2fdcbe1930af6c9fa03a757552477bdf7ef | |
parent | 4b6fa5e88d0757e3c2318d04156b3df570c3a2f4 (diff) | |
download | org.eclipse.mylyn.docs-e5b14a9639061074fa3d3b49478d8f84d13bc98b.tar.gz org.eclipse.mylyn.docs-e5b14a9639061074fa3d3b49478d8f84d13bc98b.tar.xz org.eclipse.mylyn.docs-e5b14a9639061074fa3d3b49478d8f84d13bc98b.zip |
440935: MarkdownDocumentBuilder - emphasis support
Change-Id: I0108b7e49c961939fde2dde495500193ef97f20c
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=440935
Signed-off-by: Leo Dos Santos <leo.dos.santos@tasktop.com>
2 files changed, 99 insertions, 1 deletions
diff --git a/org.eclipse.mylyn.wikitext.markdown.core/src/org/eclipse/mylyn/internal/wikitext/markdown/core/MarkdownDocumentBuilder.java b/org.eclipse.mylyn.wikitext.markdown.core/src/org/eclipse/mylyn/internal/wikitext/markdown/core/MarkdownDocumentBuilder.java index 0324ec08f..be40a8837 100644 --- a/org.eclipse.mylyn.wikitext.markdown.core/src/org/eclipse/mylyn/internal/wikitext/markdown/core/MarkdownDocumentBuilder.java +++ b/org.eclipse.mylyn.wikitext.markdown.core/src/org/eclipse/mylyn/internal/wikitext/markdown/core/MarkdownDocumentBuilder.java @@ -119,7 +119,17 @@ public class MarkdownDocumentBuilder extends AbstractMarkupDocumentBuilder { @Override protected Block computeSpan(SpanType type, Attributes attributes) { - throw new UnsupportedOperationException(); + switch (type) { + case ITALIC: + case EMPHASIS: + return new ContentBlock("*", "*"); //$NON-NLS-1$ //$NON-NLS-2$ + case BOLD: + case STRONG: + return new ContentBlock("**", "**"); //$NON-NLS-1$ //$NON-NLS-2$ + default: + Logger.getLogger(getClass().getName()).warning("Unexpected block type: " + type); //$NON-NLS-1$ + return new ContentBlock("", ""); //$NON-NLS-1$ //$NON-NLS-2$ + } } @Override diff --git a/org.eclipse.mylyn.wikitext.markdown.tests/src/org/eclipse/mylyn/internal/wikitext/markdown/tests/MarkdownDocumentBuilderTest.java b/org.eclipse.mylyn.wikitext.markdown.tests/src/org/eclipse/mylyn/internal/wikitext/markdown/tests/MarkdownDocumentBuilderTest.java index 33c10733e..498e36123 100644 --- a/org.eclipse.mylyn.wikitext.markdown.tests/src/org/eclipse/mylyn/internal/wikitext/markdown/tests/MarkdownDocumentBuilderTest.java +++ b/org.eclipse.mylyn.wikitext.markdown.tests/src/org/eclipse/mylyn/internal/wikitext/markdown/tests/MarkdownDocumentBuilderTest.java @@ -19,6 +19,7 @@ import org.eclipse.mylyn.internal.wikitext.markdown.core.MarkdownDocumentBuilder import org.eclipse.mylyn.wikitext.core.parser.Attributes; import org.eclipse.mylyn.wikitext.core.parser.DocumentBuilder; import org.eclipse.mylyn.wikitext.core.parser.DocumentBuilder.BlockType; +import org.eclipse.mylyn.wikitext.core.parser.DocumentBuilder.SpanType; import org.eclipse.mylyn.wikitext.tests.TestUtil; /** @@ -56,6 +57,22 @@ public class MarkdownDocumentBuilderTest extends TestCase { assertMarkup("A paragraph ends when a blank line begins!\n\n"); } + public void testParagraphWithStrongEmphasis() { + builder.beginDocument(); + builder.beginBlock(BlockType.PARAGRAPH, new Attributes()); + builder.characters("some "); + builder.beginSpan(SpanType.STRONG, new Attributes()); + builder.characters("strong"); + builder.endSpan(); + builder.characters(" and "); + builder.beginSpan(SpanType.EMPHASIS, new Attributes()); + builder.characters("emphasis"); + builder.endSpan(); + builder.endBlock(); + builder.endDocument(); + assertMarkup("some **strong** and *emphasis*\n\n"); + } + public void testImplicitParagraph() { builder.beginDocument(); builder.characters("text1"); @@ -67,6 +84,20 @@ public class MarkdownDocumentBuilderTest extends TestCase { assertMarkup("text1\n\ntext2\n\ntext3\n\n"); } + public void testImplicitParagraphWithStrongEmphasis() { + builder.beginDocument(); + builder.characters("some "); + builder.beginSpan(SpanType.STRONG, new Attributes()); + builder.characters("strong"); + builder.endSpan(); + builder.characters(" and "); + builder.beginSpan(SpanType.EMPHASIS, new Attributes()); + builder.characters("emphasis"); + builder.endSpan(); + builder.endDocument(); + assertMarkup("some **strong** and *emphasis*\n\n"); + } + public void testLineBreak() { builder.beginDocument(); builder.beginBlock(BlockType.PARAGRAPH, new Attributes()); @@ -102,6 +133,63 @@ public class MarkdownDocumentBuilderTest extends TestCase { assertMarkup("# This is an H1\n\n## This is an H2\n\n###### This is an H6\n\n"); } + // span elements - http://daringfireball.net/projects/markdown/syntax#span + + public void testUnsupportedSpan() { + builder.beginDocument(); + builder.beginSpan(SpanType.UNDERLINED, new Attributes()); + builder.characters("unsupported"); + builder.endSpan(); + builder.endDocument(); + assertMarkup("unsupported"); + } + + public void testEmptySpan() { + builder.beginDocument(); + builder.characters("prefix"); + builder.beginSpan(SpanType.BOLD, new Attributes()); + builder.endSpan(); + builder.characters(" suffix"); + builder.endDocument(); + assertMarkup("prefix suffix\n\n"); + } + + public void testEmphasis() { + builder.beginDocument(); + builder.beginSpan(SpanType.EMPHASIS, new Attributes()); + builder.characters("emphasis"); + builder.endSpan(); + builder.endDocument(); + assertMarkup("*emphasis*"); + } + + public void testItalic() { + builder.beginDocument(); + builder.beginSpan(SpanType.ITALIC, new Attributes()); + builder.characters("italic"); + builder.endSpan(); + builder.endDocument(); + assertMarkup("*italic*"); + } + + public void testStrong() { + builder.beginDocument(); + builder.beginSpan(SpanType.STRONG, new Attributes()); + builder.characters("strong"); + builder.endSpan(); + builder.endDocument(); + assertMarkup("**strong**"); + } + + public void testBold() { + builder.beginDocument(); + builder.beginSpan(SpanType.BOLD, new Attributes()); + builder.characters("bold"); + builder.endSpan(); + builder.endDocument(); + assertMarkup("**bold**"); + } + private void assertMarkup(String expected) { String markup = out.toString(); TestUtil.println(markup); |