public bool Parse(StringScanner s) { // Can't be empty if (s.eof) return false; // Regex? if (s.current == '/') { s.SkipForward(1); s.Mark(); while (s.current != '/') { if (s.eof) return false; if (s.current == '\\') s.SkipForward(2); else s.SkipForward(1); } try { m_regex = new System.Text.RegularExpressions.Regex(s.Extract()); s.SkipForward(1); return true; } catch (Exception) { return false; } } // Wildcard or explicit bool bWildcard = false; bool bLeading = true; s.Mark(); while (!s.eof && s.current != '.') { // Wildcard? if (s.current == '?' || s.current == '*') { bWildcard = true; s.SkipForward(1); bLeading=false; continue; } // Valid identifier character? if (bLeading) { if (!Tokenizer.IsIdentifierLeadChar(s.current)) return false; } else { if (!Tokenizer.IsIdentifierChar(s.current)) return false; } // Next s.SkipForward(1); bLeading = false; } // Extract it string str = s.Extract(); // If it ends with an asterix, it's a wildcard if (bWildcard) { str = str.Replace("*", "(.*)"); str = str.Replace("?", "(.)"); m_regex = new System.Text.RegularExpressions.Regex("^" + str + "$"); return true; } /// Store it m_identifier = str; return true; }
public bool Parse(StringScanner s) { // Can't be empty if (s.eof) { return(false); } // Regex? if (s.current == '/') { s.SkipForward(1); s.Mark(); while (s.current != '/') { if (s.eof) { return(false); } if (s.current == '\\') { s.SkipForward(2); } else { s.SkipForward(1); } } try { m_regex = new System.Text.RegularExpressions.Regex(s.Extract()); s.SkipForward(1); return(true); } catch (Exception) { return(false); } } // Wildcard or explicit bool bWildcard = false; bool bLeading = true; s.Mark(); while (!s.eof && s.current != '.') { // Wildcard? if (s.current == '?' || s.current == '*') { bWildcard = true; s.SkipForward(1); bLeading = false; continue; } // Valid identifier character? if (bLeading) { if (!Tokenizer.IsIdentifierLeadChar(s.current)) { return(false); } } else { if (!Tokenizer.IsIdentifierChar(s.current)) { return(false); } } // Next s.SkipForward(1); bLeading = false; } // Extract it string str = s.Extract(); // If it ends with an asterix, it's a wildcard if (bWildcard) { str = str.Replace("*", "(.*)"); str = str.Replace("?", "(.)"); m_regex = new System.Text.RegularExpressions.Regex("^" + str + "$"); return(true); } /// Store it m_identifier = str; return(true); }