You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2009/12/04 17:07:07 UTC
svn commit: r887245 - in /myfaces/tobago/trunk/theme/standard/src:
main/java/org/apache/myfaces/tobago/renderkit/util/JQueryUtils.java
test/java/org/apache/myfaces/tobago/renderkit/util/JQueryUtilsUnitTest.java
Author: lofwyr
Date: Fri Dec 4 16:07:06 2009
New Revision: 887245
URL: http://svn.apache.org/viewvc?rev=887245&view=rev
Log:
TOBAGO-833: jQuery
Added:
myfaces/tobago/trunk/theme/standard/src/main/java/org/apache/myfaces/tobago/renderkit/util/JQueryUtils.java
myfaces/tobago/trunk/theme/standard/src/test/java/org/apache/myfaces/tobago/renderkit/util/JQueryUtilsUnitTest.java
Added: myfaces/tobago/trunk/theme/standard/src/main/java/org/apache/myfaces/tobago/renderkit/util/JQueryUtils.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/theme/standard/src/main/java/org/apache/myfaces/tobago/renderkit/util/JQueryUtils.java?rev=887245&view=auto
==============================================================================
--- myfaces/tobago/trunk/theme/standard/src/main/java/org/apache/myfaces/tobago/renderkit/util/JQueryUtils.java (added)
+++ myfaces/tobago/trunk/theme/standard/src/main/java/org/apache/myfaces/tobago/renderkit/util/JQueryUtils.java Fri Dec 4 16:07:06 2009
@@ -0,0 +1,96 @@
+package org.apache.myfaces.tobago.renderkit.util;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+public class JQueryUtils {
+
+ private JQueryUtils() {
+ // to prevent instantiation
+ }
+
+ /**
+ * Puts two backslashes before : and . to escape them.
+ * Two are needed, because of JavaScript string literals.
+ */
+ public static String escapeId(String id) {
+ return id.replaceAll("([\\:\\.])", "\\\\\\\\$1");
+ }
+
+ /**
+ * Puts one backslashes before \ to escape it.
+ * It is needed, because of JavaScript string literals.
+ */
+ public static String escapeValue(String value) {
+ return value.replaceAll("\\\\", "\\\\\\\\");
+ }
+
+ /**
+ * Puts two backslashes before #;&,.+*~':"!^$[]()=>|/ to escape them.
+ * Two are needed, because of JavaScript string literals.
+ * Puts three backslashes before a \ itself, to escape it.
+ */
+ public static String escapeSelector(String value) {
+ StringBuilder builder = new StringBuilder();
+ for (char c : value.toCharArray()) {
+ switch (c) {
+ case '\\':
+ builder.append("\\\\\\\\");
+ break;
+ case '#':
+ case ';':
+ case '&':
+ case ',':
+ case '.':
+ case '+':
+ case '*':
+ case '~':
+ case '\'':
+ case ':':
+ case '"':
+ case '!':
+ case '^':
+ case '$':
+ case '[':
+ case ']':
+ case '(':
+ case ')':
+ case '=':
+ case '>':
+ case '|':
+ case '/':
+ builder.append("\\\\");
+ default:
+ builder.append(c);
+ break;
+ }
+ }
+ return builder.toString();
+ }
+
+ /**
+ * Creates a selector for an id like $('#id').
+ * The id will be escaped if necessary.
+ */
+ public static String selectId(String id) {
+ StringBuilder builder = new StringBuilder();
+ builder.append("$('#");
+ builder.append(escapeId(id));
+ builder.append("')");
+ return builder.toString();
+ }
+}
Added: myfaces/tobago/trunk/theme/standard/src/test/java/org/apache/myfaces/tobago/renderkit/util/JQueryUtilsUnitTest.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/theme/standard/src/test/java/org/apache/myfaces/tobago/renderkit/util/JQueryUtilsUnitTest.java?rev=887245&view=auto
==============================================================================
--- myfaces/tobago/trunk/theme/standard/src/test/java/org/apache/myfaces/tobago/renderkit/util/JQueryUtilsUnitTest.java (added)
+++ myfaces/tobago/trunk/theme/standard/src/test/java/org/apache/myfaces/tobago/renderkit/util/JQueryUtilsUnitTest.java Fri Dec 4 16:07:06 2009
@@ -0,0 +1,69 @@
+package org.apache.myfaces.tobago.renderkit.util;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+public class JQueryUtilsUnitTest {
+
+ @Test
+ public void testEscapeId() {
+ Assert.assertEquals("test", JQueryUtils.escapeId("test"));
+ Assert.assertEquals("\\\\:t\\\\.e-s\\\\.t\\\\:", JQueryUtils.escapeId(":t.e-s.t:"));
+ }
+
+ @Test
+ public void testEscapeValue() {
+ Assert.assertEquals("te\\\\st", JQueryUtils.escapeValue("te\\st"));
+ }
+
+ @Test
+ public void testEscapeSelector() {
+ Assert.assertEquals("test", JQueryUtils.escapeSelector("test"));
+ Assert.assertEquals("\\\\:t\\\\.e-s\\\\.t\\\\:", JQueryUtils.escapeSelector(":t.e-s.t:"));
+ Assert.assertEquals("\\\\#", JQueryUtils.escapeSelector("#"));
+ Assert.assertEquals("\\\\;", JQueryUtils.escapeSelector(";"));
+ Assert.assertEquals("\\\\&", JQueryUtils.escapeSelector("&"));
+ Assert.assertEquals("\\\\,", JQueryUtils.escapeSelector(","));
+ Assert.assertEquals("\\\\.", JQueryUtils.escapeSelector("."));
+ Assert.assertEquals("\\\\+", JQueryUtils.escapeSelector("+"));
+ Assert.assertEquals("\\\\*", JQueryUtils.escapeSelector("*"));
+ Assert.assertEquals("\\\\~", JQueryUtils.escapeSelector("~"));
+ Assert.assertEquals("\\\\'", JQueryUtils.escapeSelector("'"));
+ Assert.assertEquals("\\\\:", JQueryUtils.escapeSelector(":"));
+ Assert.assertEquals("\\\\\\\\", JQueryUtils.escapeSelector("\\"));
+ Assert.assertEquals("\\\\\"", JQueryUtils.escapeSelector("\""));
+ Assert.assertEquals("\\\\!", JQueryUtils.escapeSelector("!"));
+ Assert.assertEquals("\\\\^", JQueryUtils.escapeSelector("^"));
+ Assert.assertEquals("\\\\$", JQueryUtils.escapeSelector("$"));
+ Assert.assertEquals("\\\\[", JQueryUtils.escapeSelector("["));
+ Assert.assertEquals("\\\\]", JQueryUtils.escapeSelector("]"));
+ Assert.assertEquals("\\\\(", JQueryUtils.escapeSelector("("));
+ Assert.assertEquals("\\\\)", JQueryUtils.escapeSelector(")"));
+ Assert.assertEquals("\\\\=", JQueryUtils.escapeSelector("="));
+ Assert.assertEquals("\\\\>", JQueryUtils.escapeSelector(">"));
+ Assert.assertEquals("\\\\|", JQueryUtils.escapeSelector("|"));
+ Assert.assertEquals("\\\\/", JQueryUtils.escapeSelector("/"));
+ }
+
+ @Test
+ public void selectId() {
+ Assert.assertEquals("$('#test\\\\:test')", JQueryUtils.selectId("test:test"));
+ }
+}