514880: [asciidoc] support for css styled text
* #text# highlights (html: <mark>text</mark>)
* [css-class]#text# uses a <span> with "css-class"
* SpanType.HIGHLIGHT added
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=514880
Change-Id: Ic5a58b76f3b128ab6b5af9f178ad800c1b55f2f3
Signed-off-by: Fabrizio Iannetti <fabrizio.iannetti@gmail.com>
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/main/java/org/eclipse/mylyn/wikitext/asciidoc/AsciiDocLanguage.java b/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/main/java/org/eclipse/mylyn/wikitext/asciidoc/AsciiDocLanguage.java
index deafbc2..a8a282a 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/main/java/org/eclipse/mylyn/wikitext/asciidoc/AsciiDocLanguage.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/main/java/org/eclipse/mylyn/wikitext/asciidoc/AsciiDocLanguage.java
@@ -34,6 +34,7 @@
import org.eclipse.mylyn.wikitext.asciidoc.internal.block.TitleLineBlock;
import org.eclipse.mylyn.wikitext.asciidoc.internal.block.UnderlinedHeadingBlock;
import org.eclipse.mylyn.wikitext.asciidoc.internal.phrase.BackslashEscapePhraseModifier;
+import org.eclipse.mylyn.wikitext.asciidoc.internal.phrase.CssClassPhraseModifier;
import org.eclipse.mylyn.wikitext.asciidoc.internal.phrase.SimplePhraseModifier;
import org.eclipse.mylyn.wikitext.asciidoc.internal.phrase.SimplePhraseModifier.Mode;
import org.eclipse.mylyn.wikitext.asciidoc.internal.token.AnchorLinkMacroReplacementToken;
@@ -150,11 +151,11 @@
phraseModifierSyntax.add(new SimplePhraseModifier("_", SpanType.EMPHASIS, Mode.NESTING)); //$NON-NLS-1$
phraseModifierSyntax.add(new SimplePhraseModifier("`", SpanType.CODE, Mode.NESTING)); //$NON-NLS-1$
phraseModifierSyntax.add(new SimplePhraseModifier("+", SpanType.SPAN, Mode.NORMAL)); //$NON-NLS-1$
+ phraseModifierSyntax.add(new CssClassPhraseModifier());
phraseModifierSyntax.endGroup(")(?:(?=\\W)|$)", 0);
phraseModifierSyntax.add(new SimplePhraseModifier("^", SpanType.SUPERSCRIPT, Mode.NESTING));
phraseModifierSyntax.add(new SimplePhraseModifier("~", SpanType.SUBSCRIPT, Mode.NESTING));
-
}
@Override
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/main/java/org/eclipse/mylyn/wikitext/asciidoc/internal/AsciiDocDocumentBuilder.java b/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/main/java/org/eclipse/mylyn/wikitext/asciidoc/internal/AsciiDocDocumentBuilder.java
index b6d62db..7b8789a 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/main/java/org/eclipse/mylyn/wikitext/asciidoc/internal/AsciiDocDocumentBuilder.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/main/java/org/eclipse/mylyn/wikitext/asciidoc/internal/AsciiDocDocumentBuilder.java
@@ -280,6 +280,13 @@
return new ContentBlock("^", "^", 0, 0);
case SUBSCRIPT:
return new ContentBlock("~", "~", 0, 0);
+ case MARK:
+ return new ContentBlock("#", "#", 0, 0);
+ case SPAN:
+ if (attributes.getCssClass() != null) {
+ return new ContentBlock("[" + attributes.getCssClass() + "]#", "#", 0, 0);
+ }
+ return new ContentBlock("", "", 0, 0);
default:
Logger.getLogger(getClass().getName()).warning("Unexpected block type: " + type); //$NON-NLS-1$
return new ContentBlock("", "", 0, 0); //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/main/java/org/eclipse/mylyn/wikitext/asciidoc/internal/phrase/CssClassPhraseModifier.java b/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/main/java/org/eclipse/mylyn/wikitext/asciidoc/internal/phrase/CssClassPhraseModifier.java
new file mode 100644
index 0000000..e6adccd
--- /dev/null
+++ b/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/main/java/org/eclipse/mylyn/wikitext/asciidoc/internal/phrase/CssClassPhraseModifier.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2008 David Green and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * David Green - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.wikitext.asciidoc.internal.phrase;
+
+import org.eclipse.mylyn.wikitext.parser.Attributes;
+import org.eclipse.mylyn.wikitext.parser.DocumentBuilder.SpanType;
+import org.eclipse.mylyn.wikitext.parser.markup.PatternBasedElement;
+import org.eclipse.mylyn.wikitext.parser.markup.PatternBasedElementProcessor;
+
+public class CssClassPhraseModifier extends PatternBasedElement {
+
+ @Override
+ protected String getPattern(int groupOffset) {
+ return "(?:\\[\\.*(.+?)\\])?#(.+?)#";
+ }
+
+ @Override
+ protected int getPatternGroupCount() {
+ return 2;
+ }
+
+ @Override
+ protected PatternBasedElementProcessor newProcessor() {
+ return new PatternBasedElementProcessor() {
+
+ @Override
+ public void emit() {
+ Attributes attributes = new Attributes();
+ SpanType span = SpanType.SPAN;
+ String cssClass = group(1);
+ if (cssClass != null && !cssClass.isEmpty()) {
+ attributes.setCssClass(cssClass);
+ } else {
+ span = SpanType.MARK;
+ }
+ getBuilder().beginSpan(span, attributes);
+ getBuilder().characters(group(2));
+ getBuilder().endSpan();
+ }
+ };
+ }
+
+}
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/test/java/org/eclipse/mylyn/internal/wikitext/asciidoc/tests/AsciiDocDocumentBuilderTest.java b/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/test/java/org/eclipse/mylyn/internal/wikitext/asciidoc/tests/AsciiDocDocumentBuilderTest.java
index 522c1bc..7890a67 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/test/java/org/eclipse/mylyn/internal/wikitext/asciidoc/tests/AsciiDocDocumentBuilderTest.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/test/java/org/eclipse/mylyn/internal/wikitext/asciidoc/tests/AsciiDocDocumentBuilderTest.java
@@ -666,6 +666,16 @@
}
@Test
+ public void testHighlight() {
+ builder.beginDocument();
+ builder.beginSpan(SpanType.MARK, new Attributes());
+ builder.characters("highlight");
+ builder.endSpan();
+ builder.endDocument();
+ assertMarkup("#highlight#\n\n");
+ }
+
+ @Test
public void testCodeSpan() {
builder.beginDocument();
builder.characters("Here's a ");
@@ -695,6 +705,30 @@
}
@Test
+ public void testSpanSimple() {
+ builder.beginDocument();
+ builder.characters("Here's a ");
+ builder.beginSpan(SpanType.SPAN, new Attributes());
+ builder.characters("plain");
+ builder.endSpan();
+ builder.characters(" span.");
+ builder.endBlock();
+ assertMarkup("Here's a plain span.\n\n");
+ }
+
+ @Test
+ public void testSpanWithCssClass() {
+ builder.beginDocument();
+ builder.characters("Here's a ");
+ builder.beginSpan(SpanType.SPAN, new Attributes(null, "css-class", null, null));
+ builder.characters("css styled");
+ builder.endSpan();
+ builder.characters(" span.");
+ builder.endBlock();
+ assertMarkup("Here's a [css-class]#css styled# span.\n\n");
+ }
+
+ @Test
public void testSuperscript() {
builder.beginDocument();
builder.beginSpan(SpanType.SUPERSCRIPT, new Attributes());
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/test/java/org/eclipse/mylyn/internal/wikitext/asciidoc/tests/AsciiDocLanguageSpanElementsTest.java b/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/test/java/org/eclipse/mylyn/internal/wikitext/asciidoc/tests/AsciiDocLanguageSpanElementsTest.java
index ea2c48d..8931e3d 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/test/java/org/eclipse/mylyn/internal/wikitext/asciidoc/tests/AsciiDocLanguageSpanElementsTest.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext.asciidoc/src/test/java/org/eclipse/mylyn/internal/wikitext/asciidoc/tests/AsciiDocLanguageSpanElementsTest.java
@@ -416,4 +416,39 @@
html);
}
+ @Test
+ public void highlightWordBoundary() {
+ String html = parseToHtml("#text#");
+ assertEquals("<p><mark>text</mark></p>\n", html);
+ }
+
+ @Test
+ public void highlightNoWordBoundary() {
+ String html = parseToHtml("nospace#text#nospace");
+ assertEquals("<p>nospace#text#nospace</p>\n", html);
+ }
+
+ @Test
+ public void customClassWordBoundary() {
+ String html = parseToHtml("[css-class]#text#");
+ assertEquals("<p><span class=\"css-class\">text</span></p>\n", html);
+ }
+
+ @Test
+ public void customClassLeadingDots() {
+ String html = parseToHtml("[..css-class]#text#");
+ assertEquals("<p><span class=\"css-class\">text</span></p>\n", html);
+ }
+
+ @Test
+ public void customClassNoWordBoundary() {
+ String html = parseToHtml("nospace[css-class]#text#nospace");
+ assertEquals("<p>nospace[css-class]#text#nospace</p>\n", html);
+ }
+
+ @Test
+ public void customClassNoWordBoundaryBefore() {
+ String html = parseToHtml("nospace[css-class]#text#");
+ assertEquals("<p>nospace[css-class]<mark>text</mark></p>\n", html);
+ }
}
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext.confluence/src/main/java/org/eclipse/mylyn/wikitext/confluence/internal/ConfluenceDocumentBuilder.java b/wikitext/core/org.eclipse.mylyn.wikitext.confluence/src/main/java/org/eclipse/mylyn/wikitext/confluence/internal/ConfluenceDocumentBuilder.java
index ead76f9..18b6840 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext.confluence/src/main/java/org/eclipse/mylyn/wikitext/confluence/internal/ConfluenceDocumentBuilder.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext.confluence/src/main/java/org/eclipse/mylyn/wikitext/confluence/internal/ConfluenceDocumentBuilder.java
@@ -383,6 +383,7 @@
case DELETED:
block = new ContentBlock("-" + spanAttributes, "-", true, false, 0, 0); //$NON-NLS-1$//$NON-NLS-2$
break;
+ case MARK:
case EMPHASIS:
case ITALIC:
block = new ContentBlock("_" + spanAttributes, "_", true, false, 0, 0); //$NON-NLS-1$//$NON-NLS-2$
@@ -416,7 +417,6 @@
block = new ContentBlock("+", "+", true, false, 0, 0); //$NON-NLS-1$//$NON-NLS-2$
break;
// case QUOTE: not supported
-
case SPAN:
default:
block = null;
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext.confluence/src/test/java/org/eclipse/mylyn/wikitext/confluence/internal/ConfluenceDocumentBuilderTest.java b/wikitext/core/org.eclipse.mylyn.wikitext.confluence/src/test/java/org/eclipse/mylyn/wikitext/confluence/internal/ConfluenceDocumentBuilderTest.java
index 7a823d3..d051e91 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext.confluence/src/test/java/org/eclipse/mylyn/wikitext/confluence/internal/ConfluenceDocumentBuilderTest.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext.confluence/src/test/java/org/eclipse/mylyn/wikitext/confluence/internal/ConfluenceDocumentBuilderTest.java
@@ -752,6 +752,26 @@
}
@Test
+ public void mark() {
+ builder.beginDocument();
+
+ builder.characters("prefix ");
+
+ builder.beginSpan(SpanType.MARK, new Attributes());
+ builder.characters("italic phrase");
+ builder.endBlock();
+
+ builder.characters(" suffix");
+
+ builder.endBlock();
+ builder.endDocument();
+
+ String markup = out.toString();
+
+ assertEquals("prefix _italic phrase_ suffix\n\n", markup);
+ }
+
+ @Test
public void emptyBoldSpan() {
builder.beginDocument();
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext.html/src/main/java/org/eclipse/mylyn/wikitext/html/HtmlLanguage.java b/wikitext/core/org.eclipse.mylyn.wikitext.html/src/main/java/org/eclipse/mylyn/wikitext/html/HtmlLanguage.java
index 16a49bd..af58fa1 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext.html/src/main/java/org/eclipse/mylyn/wikitext/html/HtmlLanguage.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext.html/src/main/java/org/eclipse/mylyn/wikitext/html/HtmlLanguage.java
@@ -33,40 +33,53 @@
* The {@link HtmlLanguage} maps block types as follows:
* </p>
* <ul>
- * <li>{@link BlockType#BULLETED_LIST} maps to HTML tag {@code
- * <ul>
+ * <li>{@link BlockType#BULLETED_LIST} maps to HTML tag {@code
+ *
+<ul>
* }</li>
* <li>{@link BlockType#CODE} maps to HTML tags <code><pre><code></code></li>
- * <li>{@link BlockType#DEFINITION_LIST} maps to HTML tag {@code
- * <dl>
- * }</li>
- * <li>{@link BlockType#DEFINITION_ITEM} maps to HTML tag {@code
- * <dd>}</li>
- * <li>{@link BlockType#DEFINITION_TERM} maps to HTML tag {@code
- * <dt>}</li>
- * <li>{@link BlockType#DIV} maps to HTML tag {@code <div>}</li>
- * <li>{@link BlockType#LIST_ITEM} maps to HTML tag {@code
- * <li>}</li>
- * <li>{@link BlockType#NUMERIC_LIST} maps to HTML tag {@code
- * <ol>
- * }</li>
- * <li>{@link BlockType#PARAGRAPH} maps to HTML tag {@code
- * <p>
- * }</li>
- * <li>{@link BlockType#PREFORMATTED} maps to HTML tag {@code
+ * <li>{@link BlockType#DEFINITION_LIST} maps to HTML tag {@code
*
- * <pre>
+<dl>
+ * }</li>
+ * <li>{@link BlockType#DEFINITION_ITEM} maps to HTML tag {@code
+ *
+<dd>}</li>
+ * <li>{@link BlockType#DEFINITION_TERM} maps to HTML tag {@code
+ *
+<dt>}</li>
+ * <li>{@link BlockType#DIV} maps to HTML tag {@code <div>}</li>
+ * <li>{@link BlockType#LIST_ITEM} maps to HTML tag {@code
+ *
+<li>}</li>
+ * <li>{@link BlockType#NUMERIC_LIST} maps to HTML tag {@code
+ *
+<ol>
+ * }</li>
+ * <li>{@link BlockType#PARAGRAPH} maps to HTML tag {@code
+ *
+<p>
+ * }</li>
+ * <li>{@link BlockType#PREFORMATTED} maps to HTML tag {@code
+ *
+ *
+
+<pre>
* }</li>
* <li>{@link BlockType#QUOTE} maps to HTML tag {@code <blockquote>}</li>
- * <li>{@link BlockType#TABLE} maps to HTML tag {@code
- * <table>
+ * <li>{@link BlockType#TABLE} maps to HTML tag {@code
+ *
+<table>
* }</li>
- * <li>{@link BlockType#TABLE_CELL_HEADER} maps to HTML tag {@code
- * <th>}</li>
- * <li>{@link BlockType#TABLE_CELL_NORMAL} maps to HTML tag {@code
- * <td>}</li>
- * <li>{@link BlockType#TABLE_ROW} maps to HTML tag {@code
- * <tr>
+ * <li>{@link BlockType#TABLE_CELL_HEADER} maps to HTML tag {@code
+ *
+<th>}</li>
+ * <li>{@link BlockType#TABLE_CELL_NORMAL} maps to HTML tag {@code
+ *
+<td>}</li>
+ * <li>{@link BlockType#TABLE_ROW} maps to HTML tag {@code
+ *
+<tr>
* }</li>
* </ul>
* <p>
@@ -82,13 +95,15 @@
* <li>{@link SpanType#ITALIC} maps to HTML tag {@code <i>}</li>
* <li>{@link SpanType#LINK} maps to HTML tag {@code <a>}</li>
* <li>{@link SpanType#MONOSPACE} maps to HTML tag {@code <tt>}</li>
- * <li>{@link SpanType#QUOTE} maps to HTML tag {@code
- * <q>}</li>
+ * <li>{@link SpanType#QUOTE} maps to HTML tag {@code
+ *
+<q>}</li>
* <li>{@link SpanType#SPAN} maps to HTML tag {@code <span>}</li>
* <li>{@link SpanType#STRONG} maps to HTML tag {@code <strong>}</li>
* <li>{@link SpanType#SUBSCRIPT} maps to HTML tag {@code <sub>}</li>
* <li>{@link SpanType#SUPERSCRIPT} maps to HTML tag {@code <sup>}</li>
* <li>{@link SpanType#UNDERLINED} maps to HTML tag {@code <u>}</li>
+ * <li>{@link SpanType#MARK} maps to HTML tag {@mark <u>}</li>
* </ul>
* <p>
* {@link HtmlLanguage} variants created using {@link HtmlLanguageBuilder} may map {@link SpanType} and
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext.html/src/test/java/org/eclipse/mylyn/wikitext/html/internal/HtmlSubsetDocumentBuilderTest.java b/wikitext/core/org.eclipse.mylyn.wikitext.html/src/test/java/org/eclipse/mylyn/wikitext/html/internal/HtmlSubsetDocumentBuilderTest.java
index 26cf9c7..cbd308b 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext.html/src/test/java/org/eclipse/mylyn/wikitext/html/internal/HtmlSubsetDocumentBuilderTest.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext.html/src/test/java/org/eclipse/mylyn/wikitext/html/internal/HtmlSubsetDocumentBuilderTest.java
@@ -20,12 +20,6 @@
import java.io.StringWriter;
import java.util.Collections;
-import org.eclipse.mylyn.wikitext.html.internal.FontElementStrategy;
-import org.eclipse.mylyn.wikitext.html.internal.HtmlSubsetDocumentBuilder;
-import org.eclipse.mylyn.wikitext.html.internal.SpanHtmlElementStrategy;
-import org.eclipse.mylyn.wikitext.html.internal.SupportedBlockStrategy;
-import org.eclipse.mylyn.wikitext.html.internal.SupportedSpanStrategy;
-import org.eclipse.mylyn.wikitext.html.internal.UnsupportedBlockStrategy;
import org.eclipse.mylyn.wikitext.parser.Attributes;
import org.eclipse.mylyn.wikitext.parser.DocumentBuilder.BlockType;
import org.eclipse.mylyn.wikitext.parser.DocumentBuilder.SpanType;
@@ -533,6 +527,11 @@
}
@Test
+ public void spanMarkSupported() {
+ assertSupportedSpan("<mark>test</mark>", SpanType.MARK);
+ }
+
+ @Test
public void spanBoldUnsupported() {
assertUnsupportedSpan("<strong>test</strong>", SpanType.BOLD, SpanType.STRONG);
}
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext.markdown/src/main/java/org/eclipse/mylyn/wikitext/markdown/internal/MarkdownDocumentBuilder.java b/wikitext/core/org.eclipse.mylyn.wikitext.markdown/src/main/java/org/eclipse/mylyn/wikitext/markdown/internal/MarkdownDocumentBuilder.java
index 4f528d3..8c7c51c 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext.markdown/src/main/java/org/eclipse/mylyn/wikitext/markdown/internal/MarkdownDocumentBuilder.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext.markdown/src/main/java/org/eclipse/mylyn/wikitext/markdown/internal/MarkdownDocumentBuilder.java
@@ -327,6 +327,7 @@
return new ContentBlock("<", ">", 0, 0); //$NON-NLS-1$ //$NON-NLS-2$
case ITALIC:
case EMPHASIS:
+ case MARK:
return new ContentBlock("*", "*", 0, 0); //$NON-NLS-1$ //$NON-NLS-2$
case BOLD:
case STRONG:
@@ -356,7 +357,7 @@
}
private String escapeAmpersand(String text) {
- return text.replace("&","&"); //$NON-NLS-1$ //$NON-NLS-2$
+ return text.replace("&", "&"); //$NON-NLS-1$ //$NON-NLS-2$
}
@Override
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext.markdown/src/test/java/org/eclipse/mylyn/internal/wikitext/markdown/tests/MarkdownDocumentBuilderTest.java b/wikitext/core/org.eclipse.mylyn.wikitext.markdown/src/test/java/org/eclipse/mylyn/internal/wikitext/markdown/tests/MarkdownDocumentBuilderTest.java
index 748baff..6b12896 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext.markdown/src/test/java/org/eclipse/mylyn/internal/wikitext/markdown/tests/MarkdownDocumentBuilderTest.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext.markdown/src/test/java/org/eclipse/mylyn/internal/wikitext/markdown/tests/MarkdownDocumentBuilderTest.java
@@ -244,7 +244,8 @@
builder.endBlock();
builder.endBlock();
builder.endDocument();
- assertMarkup("> ## Header.\n\n> * First item.\n> * Second item.\n\n> Some code:\n\n> return shell_exec(\"echo $input | $markdown_script\");\n\n");
+ assertMarkup(
+ "> ## Header.\n\n> * First item.\n> * Second item.\n\n> Some code:\n\n> return shell_exec(\"echo $input | $markdown_script\");\n\n");
}
public void testBlockQuoteTripleNested() {
@@ -438,7 +439,8 @@
builder.endBlock();
builder.endBlock();
builder.endDocument();
- assertMarkup("* A list item with a code block:\n\n code goes here \n code second line\n\n another para\n\n");
+ assertMarkup(
+ "* A list item with a code block:\n\n code goes here \n code second line\n\n another para\n\n");
}
public void testCodeBlock() {
@@ -645,7 +647,17 @@
builder.characters("`foo`");
builder.endSpan();
builder.endDocument();
- assertMarkup("A single backtick in a code span: `` ` `` \nA backtick-delimited string in a code span: `` `foo` ``\n\n");
+ assertMarkup(
+ "A single backtick in a code span: `` ` `` \nA backtick-delimited string in a code span: `` `foo` ``\n\n");
+ }
+
+ public void testMark() {
+ builder.beginDocument();
+ builder.beginSpan(SpanType.MARK, new Attributes());
+ builder.characters("emphasis");
+ builder.endSpan();
+ builder.endDocument();
+ assertMarkup("*emphasis*\n\n");
}
public void testImage() {
@@ -732,7 +744,8 @@
imageAttr.setTitle("Optional image title");
builder.imageLink(linkAttr, imageAttr, "http://example.net/", "/path/to/img.jpg");
builder.endDocument();
- assertMarkup("[![Alt text](/path/to/img.jpg \"Optional image title\")](http://example.net/ \"Optional link title\")\n\n");
+ assertMarkup(
+ "[![Alt text](/path/to/img.jpg \"Optional image title\")](http://example.net/ \"Optional link title\")\n\n");
}
public void testImplicitParagrahWithSpan() {
@@ -829,8 +842,6 @@
String markup = out.toString();
-
-
assertEquals(
"* first\n* second\n * second.1\n\n1. third\n2. fourth\n 1. fourth.1\n 2. fourth.2 \n fourth.2 line 2\n",
markup);
@@ -844,7 +855,7 @@
private void assertMarkup(String expected) {
String markup = out.toString();
-
+
assertEquals(expected, markup);
}
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext.textile/src/main/java/org/eclipse/mylyn/wikitext/textile/internal/TextileDocumentBuilder.java b/wikitext/core/org.eclipse.mylyn.wikitext.textile/src/main/java/org/eclipse/mylyn/wikitext/textile/internal/TextileDocumentBuilder.java
index 8e82eec..a592d9b 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext.textile/src/main/java/org/eclipse/mylyn/wikitext/textile/internal/TextileDocumentBuilder.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext.textile/src/main/java/org/eclipse/mylyn/wikitext/textile/internal/TextileDocumentBuilder.java
@@ -30,7 +30,6 @@
*
* @see HtmlParser
* @author David Green
- *
* @see TextileLanguage
* @see TextileLanguage#createDocumentBuilder(Writer)
*/
@@ -396,6 +395,7 @@
case DELETED:
block = new ContentBlock("-" + spanAttributes, "-", true, false, 0, 0); //$NON-NLS-1$//$NON-NLS-2$
break;
+ case MARK:
case EMPHASIS:
block = new ContentBlock("_" + spanAttributes, "_", true, false, 0, 0); //$NON-NLS-1$//$NON-NLS-2$
break;
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext.textile/src/test/java/org/eclipse/mylyn/wikitext/textile/internal/TextileDocumentBuilderTest.java b/wikitext/core/org.eclipse.mylyn.wikitext.textile/src/test/java/org/eclipse/mylyn/wikitext/textile/internal/TextileDocumentBuilderTest.java
index 44b10c3..ec50f7b 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext.textile/src/test/java/org/eclipse/mylyn/wikitext/textile/internal/TextileDocumentBuilderTest.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext.textile/src/test/java/org/eclipse/mylyn/wikitext/textile/internal/TextileDocumentBuilderTest.java
@@ -16,7 +16,6 @@
import org.eclipse.mylyn.wikitext.parser.Attributes;
import org.eclipse.mylyn.wikitext.parser.DocumentBuilder.BlockType;
import org.eclipse.mylyn.wikitext.parser.DocumentBuilder.SpanType;
-import org.eclipse.mylyn.wikitext.textile.internal.TextileDocumentBuilder;
import org.eclipse.mylyn.wikitext.parser.ImageAttributes;
import org.eclipse.mylyn.wikitext.parser.LinkAttributes;
@@ -56,8 +55,6 @@
String markup = out.toString();
-
-
assertEquals("text more text\n\n", markup);
}
}
@@ -71,8 +68,6 @@
String markup = out.toString();
-
-
assertEquals("a b\n\n", markup);
}
}
@@ -89,8 +84,6 @@
String markup = out.toString();
-
-
assertEquals("text\nmore text\n\n", markup);
}
@@ -104,8 +97,6 @@
String markup = out.toString();
-
-
assertEquals("text\nmore text\n\n", markup);
}
@@ -122,8 +113,6 @@
String markup = out.toString();
-
-
assertEquals("text\n more\n\tmore2 text\n\n", markup);
}
@@ -141,8 +130,6 @@
String markup = out.toString();
-
-
assertEquals("first paragraph\n\nsecond paragraph\n\n", markup);
}
@@ -162,8 +149,6 @@
String markup = out.toString();
-
-
assertEquals("some **bold** and _emphasis_\n\n", markup);
}
@@ -176,8 +161,6 @@
String markup = out.toString();
-
-
assertEquals("p(test). text more text\n\n", markup);
}
@@ -190,8 +173,6 @@
String markup = out.toString();
-
-
assertEquals("p{x-test: foo;}. text more text\n\n", markup);
}
@@ -204,8 +185,6 @@
String markup = out.toString();
-
-
assertEquals("p(#123). text more text\n\n", markup);
}
@@ -218,8 +197,6 @@
String markup = out.toString();
-
-
assertEquals("p(test#123). text more text\n\n", markup);
}
@@ -238,8 +215,6 @@
String markup = out.toString();
-
-
assertEquals("text more text \"baz\":http://example.com/foo+bar/baz.gif test\n\n", markup);
}
@@ -252,8 +227,6 @@
String markup = out.toString();
-
-
assertEquals("bc.. text\n\nmore text\n\n", markup);
}
@@ -272,8 +245,6 @@
String markup = out.toString();
-
-
assertEquals("bc.. text\n\nmore text\n\np. text\n\ntext2\n\n", markup);
}
@@ -289,8 +260,6 @@
String markup = out.toString();
-
-
assertEquals("h1. text more text\n\ntext\n\n", markup);
}
@@ -309,8 +278,6 @@
String markup = out.toString();
-
-
assertEquals("h1. text _emphasized_\n\ntext\n\n", markup);
}
@@ -340,7 +307,6 @@
String markup = out.toString();
-
return markup;
}
@@ -355,8 +321,6 @@
String markup = out.toString();
-
-
assertEquals("text1\n\ntext2\n\ntext3\n\n", markup);
}
@@ -372,8 +336,6 @@
String markup = out.toString();
-
-
assertEquals("*text1*\n\ntext2\n\n", markup);
}
@@ -391,8 +353,6 @@
String markup = out.toString();
-
-
assertEquals("*text2* text3\n\n", markup);
}
@@ -410,8 +370,6 @@
String markup = out.toString();
-
-
assertEquals("text3 **text2**\n\n", markup);
}
@@ -430,8 +388,6 @@
String markup = out.toString();
-
-
assertEquals("text3 **text2** text4\n\n", markup);
}
@@ -451,8 +407,6 @@
String markup = out.toString();
-
-
assertEquals("**text2** __text3__\n\n", markup);
}
@@ -470,8 +424,6 @@
String markup = out.toString();
-
-
assertEquals("**text2**!\n\n", markup);
}
@@ -493,8 +445,6 @@
String markup = out.toString();
-
-
assertEquals("* text2 **text3**\n* text4\n", markup);
}
@@ -520,8 +470,6 @@
String markup = out.toString();
-
-
assertEquals("* first\n** first.1\n** first.2\n* second\n", markup);
}
@@ -557,8 +505,6 @@
String markup = out.toString();
-
-
assertEquals("* first\n* second\n** second.1\n\n# third\n# fourth\n## fourth.1\n", markup);
}
@@ -575,8 +521,6 @@
String markup = out.toString();
-
-
assertEquals("para 1\n\n* list item 1\n* list item 2\n\npara 2\n\n", markup);
}
@@ -608,8 +552,6 @@
String markup = out.toString();
-
-
assertEquals("prefix **bolded** suffix\n\n", markup);
}
@@ -628,8 +570,6 @@
String markup = out.toString();
-
-
assertEquals("prefix suffix\n\n", markup);
}
@@ -648,8 +588,6 @@
String markup = out.toString();
-
-
assertEquals("prefix %{font-family:monospace;}text% suffix\n\n", markup);
}
@@ -672,8 +610,6 @@
String markup = out.toString();
-
-
assertEquals("|content| |\n\n", markup);
}
@@ -701,8 +637,6 @@
String markup = out.toString();
-
-
assertEquals("test\n\nmore **text**\n\n# text2\n", markup);
}
@@ -737,8 +671,6 @@
String markup = out.toString();
-
-
assertEquals("|first| content content2|\n\n", markup);
}
@@ -756,8 +688,6 @@
String markup = out.toString();
-
-
assertEquals("first second\n\n", markup);
}
@@ -777,8 +707,6 @@
String markup = out.toString();
-
-
assertEquals("%{color:blue;}first second%\n\n", markup);
}
@@ -791,8 +719,6 @@
String markup = out.toString();
-
-
assertEquals("line\nbreak\n\n", markup);
}
@@ -813,8 +739,6 @@
String markup = out.toString();
-
-
assertEquals("bc.. one\n\n\ntwo\n\np. line\nbreak\n\n", markup);
}
@@ -829,8 +753,6 @@
String markup = out.toString();
-
-
assertEquals("fn1. line\nbreak\n\n", markup);
}
@@ -846,8 +768,6 @@
String markup = out.toString();
-
-
assertEquals("pre.. line\n\nbreak\n\n", markup);
}
@@ -862,8 +782,6 @@
String markup = out.toString();
-
-
assertEquals("pre. line\nbreak\n\n", markup);
}
@@ -878,8 +796,6 @@
String markup = out.toString();
-
-
assertEquals("a \"link to foo\":#foo test\n\n", markup);
}
@@ -894,8 +810,6 @@
String markup = out.toString();
-
-
assertEquals("an \"external link\":http://example.com/ test\n\n", markup);
}
@@ -910,8 +824,6 @@
String markup = out.toString();
-
-
assertEquals("a \"link text\": test\n\n", markup);
}
@@ -928,8 +840,6 @@
String markup = out.toString();
-
-
assertEquals("a \"link text\": test\n\n", markup);
}
@@ -944,8 +854,6 @@
String markup = out.toString();
-
-
assertEquals("a !fooImage.png!:#foo test\n\n", markup);
}
@@ -960,8 +868,6 @@
String markup = out.toString();
-
-
assertEquals("a !fooImage.png! test\n\n", markup);
}
@@ -973,7 +879,7 @@
builder.endDocument();
String markup = out.toString();
-
+
assertEquals("a test\n\n", markup);
}
@@ -988,8 +894,6 @@
String markup = out.toString();
-
-
assertEquals("a (c) test\n\n", markup);
}
@@ -1002,8 +906,6 @@
String markup = out.toString();
-
-
assertEquals("a (c) test\n\n", markup);
}
@@ -1016,8 +918,6 @@
String markup = out.toString();
-
-
assertEquals("a (r) test\n\n", markup);
}
@@ -1030,8 +930,6 @@
String markup = out.toString();
-
-
assertEquals("a test\n\n", markup);
}
@@ -1047,7 +945,6 @@
builder.endDocument();
String markup = out.toString();
-
assertEquals("bc. // some code\n\n-redacted- text\n\n", markup);
}
@@ -1080,6 +977,10 @@
assertSpan("begin _span text_ end\n\n", SpanType.EMPHASIS);
}
+ public void testSpanMark() {
+ assertSpan("begin _span text_ end\n\n", SpanType.MARK);
+ }
+
public void testSpanInserted() {
assertSpan("begin +span text+ end\n\n", SpanType.INSERTED);
}
@@ -1118,7 +1019,6 @@
builder.endDocument();
String markup = out.toString();
-
assertEquals(expected, markup);
}
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/internal/parser/html/AbstractSaxHtmlParser.java b/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/internal/parser/html/AbstractSaxHtmlParser.java
index 6ffe224..a1ba392 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/internal/parser/html/AbstractSaxHtmlParser.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/internal/parser/html/AbstractSaxHtmlParser.java
@@ -116,6 +116,7 @@
elementNameToSpanType.put("font", SpanType.SPAN); //$NON-NLS-1$
elementNameToSpanType.put("code", SpanType.CODE); //$NON-NLS-1$
elementNameToSpanType.put("tt", SpanType.MONOSPACE); //$NON-NLS-1$
+ elementNameToSpanType.put("mark", SpanType.MARK); //$NON-NLS-1$
}
private static final Map<String, BlockType> elementNameToBlockType = new HashMap<String, DocumentBuilder.BlockType>();
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/DocumentBuilder.java b/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/DocumentBuilder.java
index f07313f..aeadebf 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/DocumentBuilder.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/DocumentBuilder.java
@@ -55,7 +55,7 @@
}
public enum SpanType {
- EMPHASIS, STRONG, ITALIC, BOLD, CITATION, DELETED, INSERTED, SUPERSCRIPT, SUBSCRIPT, SPAN, CODE, MONOSPACE, UNDERLINED,
+ EMPHASIS, STRONG, ITALIC, BOLD, CITATION, DELETED, INSERTED, SUPERSCRIPT, SUBSCRIPT, SPAN, CODE, MONOSPACE, UNDERLINED, MARK,
/**
* a short inline quotation
*/
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/builder/DitaTopicDocumentBuilder.java b/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/builder/DitaTopicDocumentBuilder.java
index e45823e..4d919be 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/builder/DitaTopicDocumentBuilder.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/builder/DitaTopicDocumentBuilder.java
@@ -395,13 +395,15 @@
case INSERTED:
// no equivalent?
writer.writeStartElement("ph"); //$NON-NLS-1$
- attributes.setCssClass(attributes.getCssClass() == null ? "inserted" : attributes.getCssClass() //$NON-NLS-1$
- + " inserted"); //$NON-NLS-1$
+ attributes.setCssClass(attributes.getCssClass() == null
+ ? "inserted" //$NON-NLS-1$
+ : attributes.getCssClass() + " inserted"); //$NON-NLS-1$
break;
case UNDERLINED:
writer.writeStartElement("u"); //$NON-NLS-1$
break;
case ITALIC:
+ case MARK:
writer.writeStartElement("i"); //$NON-NLS-1$
break;
case SPAN:
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/builder/DocBookDocumentBuilder.java b/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/builder/DocBookDocumentBuilder.java
index de6d0d3..70eff1f 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/builder/DocBookDocumentBuilder.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/builder/DocBookDocumentBuilder.java
@@ -413,6 +413,10 @@
}
}
break;
+ case MARK:
+ writer.writeStartElement("emphasis");
+ writer.writeAttribute("role", "marked");
+ break;
default:
Logger.getLogger(DocBookDocumentBuilder.class.getName()).warning("No docbook mapping for " + type); //$NON-NLS-1$
writer.writeStartElement("phrase"); //$NON-NLS-1$
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/builder/HtmlDocumentBuilder.java b/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/builder/HtmlDocumentBuilder.java
index 9052fdf..f31a943 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/builder/HtmlDocumentBuilder.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/builder/HtmlDocumentBuilder.java
@@ -77,6 +77,7 @@
spanTypeToElementNameBuilder.put(SpanType.SPAN, "span"); //$NON-NLS-1$
spanTypeToElementNameBuilder.put(SpanType.CODE, "code"); //$NON-NLS-1$
spanTypeToElementNameBuilder.put(SpanType.MONOSPACE, "tt"); //$NON-NLS-1$
+ spanTypeToElementNameBuilder.put(SpanType.MARK, "mark"); //$NON-NLS-1$
defaultSpanTypeToElementName = spanTypeToElementNameBuilder.build();
}
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/builder/XslfoDocumentBuilder.java b/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/builder/XslfoDocumentBuilder.java
index 48a589a..3c8d709 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/builder/XslfoDocumentBuilder.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext/src/main/java/org/eclipse/mylyn/wikitext/parser/builder/XslfoDocumentBuilder.java
@@ -84,6 +84,7 @@
static {
spanTypeToCssStyles.put(SpanType.STRONG, "font-weight: bold;"); //$NON-NLS-1$
spanTypeToCssStyles.put(SpanType.BOLD, "font-weight: bold;"); //$NON-NLS-1$
+ spanTypeToCssStyles.put(SpanType.MARK, "font-style: italic;"); //$NON-NLS-1$
spanTypeToCssStyles.put(SpanType.MONOSPACE, "font-family: monospace;"); //$NON-NLS-1$
spanTypeToCssStyles.put(SpanType.CODE, "font-family: monospace;"); //$NON-NLS-1$
spanTypeToCssStyles.put(SpanType.CITATION, "font-style: italic;"); //$NON-NLS-1$
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext/src/test/java/org/eclipse/mylyn/wikitext/internal/parser/html/HtmlParserTest.java b/wikitext/core/org.eclipse.mylyn.wikitext/src/test/java/org/eclipse/mylyn/wikitext/internal/parser/html/HtmlParserTest.java
index 5488ac1..0ad8c85 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext/src/test/java/org/eclipse/mylyn/wikitext/internal/parser/html/HtmlParserTest.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext/src/test/java/org/eclipse/mylyn/wikitext/internal/parser/html/HtmlParserTest.java
@@ -139,6 +139,11 @@
}
@Test
+ public void spanMark() {
+ assertParse("<mark>marked text</mark>", "<body><mark>marked text</mark></body>");
+ }
+
+ @Test
public void blockCodeEventOrder() {
assertParseEventOrder("<body><pre><code>some\ncode</code></pre></body>", BlockType.CODE, "some\ncode",
END_BLOCK);
@@ -199,6 +204,11 @@
assertParse("<p>first</p><hr/><p>second</p>", "<body><p>first</p>\n<hr/><p>second</p></body>");
}
+ @Test
+ public void blockMark() {
+ assertParseEventOrder("<body><mark>lorem</mark></body>", SpanType.MARK, "lorem", END_SPAN);
+ }
+
private void assertParseEventOrder(String content, Object... expectedEventTypes) {
final List<Object> actualEventTypes = new ArrayList<>();
DocumentBuilder builder = new NoOpDocumentBuilder() {
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext/src/test/java/org/eclipse/mylyn/wikitext/parser/builder/DocBookDocumentBuilderTest.java b/wikitext/core/org.eclipse.mylyn.wikitext/src/test/java/org/eclipse/mylyn/wikitext/parser/builder/DocBookDocumentBuilderTest.java
index 62056a6..7f95b1d 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext/src/test/java/org/eclipse/mylyn/wikitext/parser/builder/DocBookDocumentBuilderTest.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext/src/test/java/org/eclipse/mylyn/wikitext/parser/builder/DocBookDocumentBuilderTest.java
@@ -349,4 +349,18 @@
assertEquals(DOCBOOK_BEGIN_CHAPTER + expectedContent + DOCBOOK_END_CHAPTER, docbook);
}
+ public void testMarked() {
+ builder.beginDocument();
+ builder.characters("normal text ");
+ builder.beginSpan(SpanType.MARK, new Attributes());
+ builder.characters("marked text");
+ builder.endSpan();
+ builder.endDocument();
+
+ String docbook = out.toString();
+
+ String expectedContent = "normal text <emphasis role=\"marked\">marked text</emphasis>";
+ assertEquals(DOCBOOK_BEGIN + expectedContent + DOCBOOK_END, docbook);
+ }
+
}
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext/src/test/java/org/eclipse/mylyn/wikitext/parser/builder/HtmlDocumentBuilderTest.java b/wikitext/core/org.eclipse.mylyn.wikitext/src/test/java/org/eclipse/mylyn/wikitext/parser/builder/HtmlDocumentBuilderTest.java
index 01343ec..76f5786 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext/src/test/java/org/eclipse/mylyn/wikitext/parser/builder/HtmlDocumentBuilderTest.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext/src/test/java/org/eclipse/mylyn/wikitext/parser/builder/HtmlDocumentBuilderTest.java
@@ -203,6 +203,18 @@
}
@Test
+ public void spanMark() {
+ builder.setEmitAsDocument(false);
+ builder.beginDocument();
+ builder.characters("normal text ");
+ builder.beginSpan(SpanType.MARK, new Attributes());
+ builder.characters("marked text");
+ builder.endSpan();
+ builder.endDocument();
+ assertEquals("normal text <mark>marked text</mark>", out.toString());
+ }
+
+ @Test
public void filterEntityReferences() {
assertEntityReferenceToNumericValue(" ", "nbsp");
assertEntityReferenceToNumericValue("≱", "nge");
diff --git a/wikitext/core/org.eclipse.mylyn.wikitext/src/test/java/org/eclipse/mylyn/wikitext/parser/builder/XslfoDocumentBuilderTest.java b/wikitext/core/org.eclipse.mylyn.wikitext/src/test/java/org/eclipse/mylyn/wikitext/parser/builder/XslfoDocumentBuilderTest.java
index b4f40e6..afa1ede 100644
--- a/wikitext/core/org.eclipse.mylyn.wikitext/src/test/java/org/eclipse/mylyn/wikitext/parser/builder/XslfoDocumentBuilderTest.java
+++ b/wikitext/core/org.eclipse.mylyn.wikitext/src/test/java/org/eclipse/mylyn/wikitext/parser/builder/XslfoDocumentBuilderTest.java
@@ -12,6 +12,8 @@
import java.io.StringWriter;
+import org.eclipse.mylyn.wikitext.parser.Attributes;
+import org.eclipse.mylyn.wikitext.parser.DocumentBuilder.SpanType;
import org.eclipse.mylyn.wikitext.parser.ImageAttributes;
import junit.framework.TestCase;
@@ -20,6 +22,9 @@
* @author David Green
*/
public class XslfoDocumentBuilderTest extends TestCase {
+ private static final String XSLFO_BEGIN = "<root xmlns=\"http://www.w3.org/1999/XSL/Format\"><layout-master-set><simple-page-master master-name=\"page-layout\" page-height=\"29.7cm\" page-width=\"21.0cm\" margin=\"1.5cm\"><region-body margin-bottom=\"3cm\"/><region-after extent=\"2.0cm\" precedence=\"false\" region-name=\"footer\"/></simple-page-master></layout-master-set><page-sequence master-reference=\"page-layout\"><static-content flow-name=\"footer\"><block font-size=\"10.0pt\" text-align=\"outside\"><page-number/></block></static-content><flow flow-name=\"xsl-region-body\">";
+
+ private static final String XSLFO_END = "</flow></page-sequence></root>";
private StringWriter out;
@@ -36,7 +41,7 @@
attributes.setWidth(10);
builder.image(attributes, "some/image.png");
String generatedContent = out.toString();
-
+
assertTrue(generatedContent.contains("width=\"10px\""));
}
@@ -46,7 +51,7 @@
attributes.setWidthPercentage(true);
builder.image(attributes, "some/image.png");
String generatedContent = out.toString();
-
+
assertTrue(generatedContent.contains("width=\"10%\""));
}
@@ -55,7 +60,7 @@
attributes.setHeight(10);
builder.image(attributes, "some/image.png");
String generatedContent = out.toString();
-
+
assertTrue(generatedContent.contains("height=\"10px\""));
}
@@ -65,7 +70,21 @@
attributes.setHeightPercentage(true);
builder.image(attributes, "some/image.png");
String generatedContent = out.toString();
-
+
assertTrue(generatedContent.contains("height=\"10%\""));
}
+
+ public void testMark() {
+ builder.beginDocument();
+ builder.characters("normal text ");
+ builder.beginSpan(SpanType.MARK, new Attributes());
+ builder.characters("marked text");
+ builder.endSpan();
+ builder.endDocument();
+
+ String generatedContent = out.toString();
+ String expectedContent = "normal text <inline font-style=\"italic\">marked text</inline>";
+
+ assertEquals(XSLFO_BEGIN + expectedContent + XSLFO_END, generatedContent);
+ }
}
diff --git a/wikitext/ui/org.eclipse.mylyn.wikitext.ui/src/org/eclipse/mylyn/internal/wikitext/ui/editor/preferences/Preferences.java b/wikitext/ui/org.eclipse.mylyn.wikitext.ui/src/org/eclipse/mylyn/internal/wikitext/ui/editor/preferences/Preferences.java
index 2a3b27b..710b956 100644
--- a/wikitext/ui/org.eclipse.mylyn.wikitext.ui/src/org/eclipse/mylyn/internal/wikitext/ui/editor/preferences/Preferences.java
+++ b/wikitext/ui/org.eclipse.mylyn.wikitext.ui/src/org/eclipse/mylyn/internal/wikitext/ui/editor/preferences/Preferences.java
@@ -65,6 +65,8 @@
public static final String PHRASE_QUOTE = "quote"; //$NON-NLS-1$
+ public static final String PHRASE_MARK = "mark"; //$NON-NLS-1$
+
public static final String BLOCK_QUOTE = "bq."; //$NON-NLS-1$
public static final String BLOCK_PRE = "pre."; //$NON-NLS-1$
@@ -124,6 +126,7 @@
cssByPhraseModifierType.put(PHRASE_MONOSPACE, "font-family: monospace;"); //$NON-NLS-1$
cssByPhraseModifierType.put(PHRASE_UNDERLINED, "text-decoration: underline;"); //$NON-NLS-1$
cssByPhraseModifierType.put(PHRASE_QUOTE, "color: rgb(38,86,145);"); //$NON-NLS-1$
+ cssByPhraseModifierType.put(PHRASE_MARK, "background-color: yellow;"); //$NON-NLS-1$
}
private boolean editorFolding = true;
diff --git a/wikitext/ui/org.eclipse.mylyn.wikitext.ui/src/org/eclipse/mylyn/internal/wikitext/ui/editor/syntax/MarkupTokenScanner.java b/wikitext/ui/org.eclipse.mylyn.wikitext.ui/src/org/eclipse/mylyn/internal/wikitext/ui/editor/syntax/MarkupTokenScanner.java
index 016e34a..9864cfb 100644
--- a/wikitext/ui/org.eclipse.mylyn.wikitext.ui/src/org/eclipse/mylyn/internal/wikitext/ui/editor/syntax/MarkupTokenScanner.java
+++ b/wikitext/ui/org.eclipse.mylyn.wikitext.ui/src/org/eclipse/mylyn/internal/wikitext/ui/editor/syntax/MarkupTokenScanner.java
@@ -342,6 +342,9 @@
case UNDERLINED:
key = Preferences.PHRASE_UNDERLINED;
break;
+ case MARK:
+ key = Preferences.PHRASE_MARK;
+ break;
}
cssStyles = preferences.getCssByPhraseModifierType().get(key);
if (cssStyles == null && span.getAttributes().getCssStyle() == null && span.getChildren().isEmpty()) {
diff --git a/wikitext/ui/org.eclipse.mylyn.wikitext.ui/src/org/eclipse/mylyn/internal/wikitext/ui/viewer/default.css b/wikitext/ui/org.eclipse.mylyn.wikitext.ui/src/org/eclipse/mylyn/internal/wikitext/ui/viewer/default.css
index 43496b2..16b8afb 100644
--- a/wikitext/ui/org.eclipse.mylyn.wikitext.ui/src/org/eclipse/mylyn/internal/wikitext/ui/viewer/default.css
+++ b/wikitext/ui/org.eclipse.mylyn.wikitext.ui/src/org/eclipse/mylyn/internal/wikitext/ui/viewer/default.css
@@ -57,6 +57,10 @@
font-style: italic;
}
+mark {
+ background-color:yellow;
+}
+
var {
font-style: italic;
}