diff options
author | Brad Larson <bklarson@gmail.com> | 2009-11-03 14:22:54 -0600 |
---|---|---|
committer | Brad Larson <bklarson@gmail.com> | 2009-11-03 21:58:22 -0600 |
commit | 62f411eb01ea6e8f6c5cab57d050294498293181 (patch) | |
tree | 0aad3a2fbdae3d32a981584c52f6f505f08a12f4 | |
parent | ccbb96132633d52385a9b9b8a636e57d56b339fc (diff) | |
download | gwtexpui-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.java | 42 | ||||
-rw-r--r-- | src/main/java/com/google/gwtexpui/safehtml/client/SafeHtml.java | 17 |
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()); |