dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dotgnu-pnet-commits] CVS: pnetlib/runtime/System/IO Directory.cs,1.15,


From: Rhys Weatherley <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnetlib/runtime/System/IO Directory.cs,1.15,1.16
Date: Sun, 06 Apr 2003 01:21:11 -0500

Update of /cvsroot/dotgnu-pnet/pnetlib/runtime/System/IO
In directory subversions:/tmp/cvs-serv26274/runtime/System/IO

Modified Files:
        Directory.cs 
Log Message:


Implement a better regular expression library.


Index: Directory.cs
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnetlib/runtime/System/IO/Directory.cs,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -r1.15 -r1.16
*** Directory.cs        3 Apr 2003 16:15:51 -0000       1.15
--- Directory.cs        6 Apr 2003 06:21:09 -0000       1.16
***************
*** 358,367 ****
                }
                
!               /* internal class to convert Glob expression to Regexp */
                private class GlobMatch : IDisposable
                {
!                       Regexp expr;
                        String pattern;
-                       String translated;
                        bool disposed=false;
                        
--- 358,366 ----
                }
                
!               /* internal class to convert Glob expression to Regex */
                private class GlobMatch : IDisposable
                {
!                       Regex expr;
                        String pattern;
                        bool disposed=false;
                        
***************
*** 370,422 ****
                                StringBuilder builder=new StringBuilder();
                                pattern=glob;
!                               char[] arr=glob.ToCharArray();
!                               for(int i=0;i<arr.Length;i++)
!                               {
!                                       switch(arr[i])
!                                       {
!                                               case '.':
!                                               {
!                                                       if(i < arr.Length-1)
!                                                       {
!                                                               
if(arr[i+1]=='?')
!                                                               {
!                                                                       
builder.Append("\\.{0,1}");
!                                                                       i=i+1;
!                                                               }
!                                                               else 
if(arr[i+1]=='*')
!                                                               {
!                                                                       
builder.Append(".*");
!                                                                       i=i+1;
!                                                               }
!                                                               else
!                                                               {
!                                                                       
builder.Append("\\.");
!                                                               }
!                                                       }
!                                                       else
!                                                       {
!                                                               
builder.Append("\\.");
!                                                       }
!                                               }
!                                               break;
!                                       case '*':
!                                               builder.Append(".*");
!                                               break;
!                                       case '?':
!                                               builder.Append(".");
!                                               break;
!                                       case '[':
!                                       case ']':
!                                       case '^':
!                                       case '\\':
!                                               builder.Append("\\"+arr[i]);
!                                               break;
!                                       default:
!                                               builder.Append(arr[i]);
!                                               break;
!                                       }
!                               }
!                               translated="^"+builder.ToString()+"$"; 
//perfect match
!                               expr=new Regexp(translated);
                        }
  
--- 369,373 ----
                                StringBuilder builder=new StringBuilder();
                                pattern=glob;
!                               expr=new Regex(glob, RegexSyntax.Wildcard);
                        }
  





reply via email to

[Prev in Thread] Current Thread [Next in Thread]