Browse Source

reimplemented unescapeHtmlString to fix bug, added test cases

Darren Ranalli 16 years ago
parent
commit
791162d433
1 changed files with 20 additions and 11 deletions
  1. 20 11
      direct/src/showbase/PythonUtil.py

+ 20 - 11
direct/src/showbase/PythonUtil.py

@@ -4021,17 +4021,26 @@ def histogramDict(l):
 def unescapeHtmlString(s):
 def unescapeHtmlString(s):
     # converts %## to corresponding character
     # converts %## to corresponding character
     # replaces '+' with ' '
     # replaces '+' with ' '
-    while 1:
-        try:
-            i = s.index('%')
-        except:
-            break
-        lastCharIndex = len(s)-1
-        if i <= lastCharIndex-2:
-            num = eval('0x' + s[i+1:i+3])
-            s = s[:i] + chr(num) + s[i+3:]
-    s = s.replace('+', ' ')
-    return s
+    result = ''
+    i = 0
+    while i < len(s):
+        char = s[i]
+        if char == '+':
+            char = ' '
+        elif char == '%':
+            if i < (len(s)-2):
+                num = eval('0x' + s[i+1:i+3])
+                char = chr(num)
+                i += 2
+        i += 1
+        result += char
+    return result
+
+if __debug__:
+    assert unescapeHtmlString('asdf') == 'asdf'
+    assert unescapeHtmlString('as+df') == 'as df'
+    assert unescapeHtmlString('as%32df') == 'as2df'
+    assert unescapeHtmlString('asdf%32') == 'asdf2'
 
 
 import __builtin__
 import __builtin__
 __builtin__.Functor = Functor
 __builtin__.Functor = Functor