summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Larson <bklarson@gmail.com>2009-11-03 14:22:54 -0600
committerBrad Larson <bklarson@gmail.com>2009-11-03 21:58:22 -0600
commit62f411eb01ea6e8f6c5cab57d050294498293181 (patch)
tree0aad3a2fbdae3d32a981584c52f6f505f08a12f4
parentccbb96132633d52385a9b9b8a636e57d56b339fc (diff)
downloadgwtexpui-62f411eb01ea6e8f6c5cab57d050294498293181.tar.gz
Add custom find/replace to SafeHtml
Apps can now specify a list of find/replace strings to SafeHtml. This is currently used to turn string identifiers into links. Signed-off-by: Brad Larson <bklarson@gmail.com>
-rw-r--r--src/main/java/com/google/gwtexpui/safehtml/client/RegexFindReplace.java42
-rw-r--r--src/main/java/com/google/gwtexpui/safehtml/client/SafeHtml.java17
2 files changed, 59 insertions, 0 deletions
diff --git a/src/main/java/com/google/gwtexpui/safehtml/client/RegexFindReplace.java b/src/main/java/com/google/gwtexpui/safehtml/client/RegexFindReplace.java
new file mode 100644
index 0000000..fe272d4
--- /dev/null
+++ b/src/main/java/com/google/gwtexpui/safehtml/client/RegexFindReplace.java
@@ -0,0 +1,42 @@
+// Copyright (C) 2009 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gwtexpui.safehtml.client;
+
+/** A Find/Replace pair used against the SafeHtml block of text */
+public class RegexFindReplace {
+ private String find;
+ private String replace;
+
+ protected RegexFindReplace() {
+ }
+
+ public RegexFindReplace(final String find, final String replace) {
+ this.find = find;
+ this.replace = replace;
+ }
+
+ public String find() {
+ return find;
+ }
+
+ public String replace() {
+ return replace;
+ }
+
+ @Override
+ public String toString() {
+ return "find = " + find + ", replace = " + replace;
+ }
+}
diff --git a/src/main/java/com/google/gwtexpui/safehtml/client/SafeHtml.java b/src/main/java/com/google/gwtexpui/safehtml/client/SafeHtml.java
index b19ad6c..4be11de 100644
--- a/src/main/java/com/google/gwtexpui/safehtml/client/SafeHtml.java
+++ b/src/main/java/com/google/gwtexpui/safehtml/client/SafeHtml.java
@@ -22,6 +22,8 @@ import com.google.gwt.user.client.ui.HasHTML;
import com.google.gwt.user.client.ui.InlineHTML;
import com.google.gwt.user.client.ui.Widget;
+import java.util.List;
+
/** Immutable string safely placed as HTML without further escaping. */
public abstract class SafeHtml {
/** @return the existing HTML property of a widget. */
@@ -173,6 +175,21 @@ public abstract class SafeHtml {
return new SafeHtmlString(asString().replaceAll(regex, repl));
}
+ /**
+ * Go through the {@link RegexFindReplace} list, calling {@link #replaceAll()}
+ * on the HTML string for every find/replace pair in the list.
+ */
+ public SafeHtml replaceAll(final List<RegexFindReplace> findReplaceList) {
+ if (findReplaceList == null) {
+ return this;
+ }
+ String html = this.asString();
+ for (RegexFindReplace findReplace : findReplaceList) {
+ html = html.replaceAll(findReplace.find(), findReplace.replace());
+ }
+ return new SafeHtmlString(html);
+ }
+
/** @return a GWT block display widget displaying this HTML. */
public Widget toBlockWidget() {
return new HTML(asString());