Style quoted text with a bar on the left
Update wikify() to understand the quoted text format now used on ChangeScreen2 when replying to a comment. Hide the " > " prefix markers and instead display a horizontal bar down the left margin. This style of presentation is commonly used in modern email clients for quoted text. Change-Id: Ib7cb309a17dedfb00af7fb82c776b07055f8d47d
This commit is contained in:
		| @@ -52,6 +52,10 @@ public abstract class SafeHtml | ||||
|               return "wikiPreFormat"; | ||||
|             } | ||||
|  | ||||
|             public String wikiQuote() { | ||||
|               return "wikiQuote"; | ||||
|             } | ||||
|  | ||||
|             public boolean ensureInjected() { | ||||
|               return false; | ||||
|             } | ||||
| @@ -139,7 +143,10 @@ public abstract class SafeHtml | ||||
|   public SafeHtml wikify() { | ||||
|     final SafeHtmlBuilder r = new SafeHtmlBuilder(); | ||||
|     for (final String p : linkify().asString().split("\n\n")) { | ||||
|       if (isPreFormat(p)) { | ||||
|       if (isQuote(p)) { | ||||
|         wikifyQuote(r, p); | ||||
|  | ||||
|       } else if (isPreFormat(p)) { | ||||
|         r.openElement("p"); | ||||
|         for (final String line : p.split("\n")) { | ||||
|           r.openSpan(); | ||||
| @@ -202,6 +209,31 @@ public abstract class SafeHtml | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   private void wikifyQuote(SafeHtmlBuilder r, String p) { | ||||
|     r.openElement("blockquote"); | ||||
|     r.setStyleName(RESOURCES.css().wikiQuote()); | ||||
|     if (p.startsWith("> ")) { | ||||
|       p = p.substring(5); | ||||
|     } else if (p.startsWith(" > ")) { | ||||
|       p = p.substring(6); | ||||
|     } | ||||
|     p = p.replaceAll("\\n ?> ", "\n"); | ||||
|     for (String e : p.split("\n\n")) { | ||||
|       if (isQuote(e)) { | ||||
|         SafeHtmlBuilder b = new SafeHtmlBuilder(); | ||||
|         wikifyQuote(b, e); | ||||
|         r.append(b); | ||||
|       } else { | ||||
|         r.append(asis(e)); | ||||
|       } | ||||
|     } | ||||
|     r.closeElement("blockquote"); | ||||
|   } | ||||
|  | ||||
|   private static boolean isQuote(String p) { | ||||
|     return p.startsWith("> ") || p.startsWith(" > "); | ||||
|   } | ||||
|  | ||||
|   private static boolean isPreFormat(final String p) { | ||||
|     return p.contains("\n ") || p.contains("\n\t") || p.startsWith(" ") | ||||
|         || p.startsWith("\t"); | ||||
|   | ||||
| @@ -17,6 +17,7 @@ package com.google.gwtexpui.safehtml.client; | ||||
| import com.google.gwt.resources.client.CssResource; | ||||
|  | ||||
| public interface SafeHtmlCss extends CssResource { | ||||
|   String wikiPreFormat(); | ||||
|   String wikiList(); | ||||
|   String wikiPreFormat(); | ||||
|   String wikiQuote(); | ||||
| } | ||||
|   | ||||
| @@ -13,11 +13,17 @@ | ||||
|  * limitations under the License. | ||||
|  */ | ||||
|  | ||||
| .wikiList { | ||||
| } | ||||
|  | ||||
| .wikiPreFormat { | ||||
|   white-space: pre; | ||||
|   font-family: 'Lucida Console', 'Lucida Sans Typewriter', Monaco, monospace; | ||||
|   font-size: small; | ||||
| } | ||||
|  | ||||
| .wikiList { | ||||
| .wikiQuote { | ||||
|   margin-left: 0; | ||||
|   border-left: 1px solid #888; | ||||
|   padding-left: 5px; | ||||
| } | ||||
|   | ||||
| @@ -48,7 +48,8 @@ limitations under the License. | ||||
|       position: relative; | ||||
|     } | ||||
|  | ||||
|     .contents p { | ||||
|     .contents p, | ||||
|     .contents blockquote { | ||||
|       -webkit-margin-before: 0; | ||||
|       -webkit-margin-after: 0.3em; | ||||
|     } | ||||
|   | ||||
| @@ -54,7 +54,8 @@ | ||||
|   position: relative; | ||||
| } | ||||
| .contents p, | ||||
| .contents ul { | ||||
| .contents ul, | ||||
| .contents blockquote { | ||||
|   -webkit-margin-before: 0; | ||||
|   -webkit-margin-after: 0.3em; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Shawn Pearce
					Shawn Pearce