You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by jo...@apache.org on 2009/02/28 01:27:23 UTC

svn commit: r748762 - in /incubator/shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/variables/Substitutions.java test/java/org/apache/shindig/gadgets/variables/SubstitutionsTest.java

Author: johnh
Date: Sat Feb 28 00:27:22 2009
New Revision: 748762

URL: http://svn.apache.org/viewvc?rev=748762&view=rev
Log:
Fix for hangman substitution accommodating an odd number of underbars preceding a variable expansion.

Closes issue SHINDIG-956.


Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/variables/Substitutions.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/variables/SubstitutionsTest.java

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/variables/Substitutions.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/variables/Substitutions.java?rev=748762&r1=748761&r2=748762&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/variables/Substitutions.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/variables/Substitutions.java Sat Feb 28 00:27:22 2009
@@ -128,9 +128,12 @@
       }
 
       if (replacement == null) {
-        // Keep it.
-        output.append(pattern);
-        lastPosition = next;
+        // Just append the first underbar of the __ prefix. The substitution
+        // selection algorithm will move on to the next underbar, which itself
+        // might be a __ prefix suitable for substitution, ensuring proper
+        // accommodation of cases such as ___MODULE_ID__.
+        output.append('_');
+        lastPosition = i + 1;
       } else {
         lastPosition = next + 2;
         if (isMessage && !isNested) {

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/variables/SubstitutionsTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/variables/SubstitutionsTest.java?rev=748762&r1=748761&r2=748762&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/variables/SubstitutionsTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/variables/SubstitutionsTest.java Sat Feb 28 00:27:22 2009
@@ -91,6 +91,24 @@
     assertEquals("Hello__________ten__________World____", subst.substituteString(msg));
   }
 
+  public void testMessageId() throws Exception {
+    String msg = "Hello, __MODULE_ID__!";
+    subst.addSubstitution(Type.MODULE, "ID", "123");
+    assertEquals("Hello, 123!", subst.substituteString(msg));
+  }
+
+  public void testOddNumberOfPrecedingUnderscores() throws Exception {
+    String msg = "<div id='div___MODULE_ID__'/>";
+    subst.addSubstitution(Type.MODULE, "ID", "123");
+    assertEquals("<div id='div_123'/>", subst.substituteString(msg));
+  }
+
+  public void testOddUnderscoresWithInvalidSubstFollowedByValidSubst() throws Exception {
+    String msg = "<div id='div___HI_THERE__MODULE_ID___'/>";
+    subst.addSubstitution(Type.MODULE, "ID", "123");
+    assertEquals("<div id='div___HI_THERE123_'/>", subst.substituteString(msg));
+  }
+
   public void loadTest() throws Exception {
     String msg
         = "Random text and __UP_hello__, amongst other words __MSG_world__ stuff __weeeeee";