- if(!arguments.callee.sRE) {
- var specials = [
- '/', '.', '*', '+', '?', '|',
- '(', ')', '[', ']', '{', '}', '\\'
- ];
- arguments.callee.sRE = new RegExp('(\\' + specials.join('|\\') + ')', 'g');
+ return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
+};
+
+RegExp.fromIRCPattern = function(t) {
+ /* escape everything but ? . and * */
+ var t = t.replace(/[-[\]{}()+,\\^$|#\s]/g, "\\$&");
+ t = t.split("");
+ var out = [];
+
+ /* now process the rest */
+ for(var i=0;i<t.length;i++) {
+ var c = t[i];
+ switch(c) {
+ case '.':
+ out.push("\\.");
+ break;
+ case '?':
+ out.push(".");
+ break;
+ case '*':
+ out.push(".*");
+ break;
+ default:
+ out.push(c);
+ }