You can use alternation: (foo|bar). So combined it'd be:
match = "^\\s*(?:this\\.|(var\\b)?\\s*)([a-zA-Z_]\\w*)\\s*=\\s*
(function)\s*\(([^)]*)\)";
I used the (?:foo|bar) form to avoid making it a capture. It is btw possible to prefix the expression with (?x) to enter “extended’ mode where whitespace and comments are ignored, so we can pretty print it:
match = "(?x) ^\\s* # begin-of-line + leading space (?: this\\. # literal this. | (var\\s+) # -> or literal var (capture #1) | # -> or nothing ) ([a-zA-Z_]\\w*)\\s* # actual function name (capture #2) =\\s* # literal = (function)\\s* # function keyword (capture #3) \\(([^)]*)\\) # the parameters (capture #4) ";
Don't know if you find that more readable or not…
"That'll work to" - Jet Li's The One :)
<That page shows 'private' functions, 'privileged' functions, and public functions. If the examples don't answer your question, feel free to contact me off-list (as I fear we're straying far from TextMate topics. ;)>
Thanks a lot Gavin, great page! I got the idea from Crockford from the beginning, but this seems a bit more comprehensive.
Andreas