Parcourir la source

Fixing new RegExp("/")

#16
Sebastien Ros il y a 11 ans
Parent
commit
b8ecfcf2c0
2 fichiers modifiés avec 18 ajouts et 11 suppressions
  1. 8 0
      Jint.Tests/Runtime/EngineTests.cs
  2. 10 11
      Jint/Native/RegExp/RegExpConstructor.cs

+ 8 - 0
Jint.Tests/Runtime/EngineTests.cs

@@ -621,6 +621,14 @@ namespace Jint.Tests.Runtime
             ");
         }
 
+        [Fact]
+        public void ShouldNotAlterSlashesInRegex()
+        {
+            RunTest(@"
+                assert(new RegExp('/').toString() === '///');
+            ");
+        }
+
         [Fact]
         public void ShouldComputeFractionInBase()
         {

+ 10 - 11
Jint/Native/RegExp/RegExpConstructor.cs

@@ -71,7 +71,16 @@ namespace Jint.Native.RegExp
             }
             else
             {
-                p = pattern != Undefined.Instance ? TypeConverter.ToString(pattern).Trim('/') : "";
+                if (pattern == Undefined.Instance)
+                {
+                    p = "";
+
+                }
+                else
+                {
+                    p = TypeConverter.ToString(pattern);
+                }
+                
                 f = flags != Undefined.Instance ? TypeConverter.ToString(flags) : "";
             }
 
@@ -93,16 +102,6 @@ namespace Jint.Native.RegExp
             string s;
             s = p;
              
-            if (s.StartsWith("/"))
-            {
-                s = "\\" + s;
-            }
-
-            if (s.EndsWith("/"))
-            {
-                s = s.TrimEnd('/') + "\\/";
-            }
-
             if (System.String.IsNullOrEmpty(s))
             {
                 s = "(?:)";