Use a simpler escapeRegExp method

This commit is contained in:
Corey Johnson
2013-08-23 12:21:27 -07:00
parent e03544bab6
commit 9f1edd3189

View File

@@ -26,40 +26,7 @@ _.mixin
original.apply(this, args)
escapeRegExp: (string) ->
# Referring to the table here:
# https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/regexp
# these characters should be escaped
# \ ^ $ * + ? . ( ) | { } [ ]
# These characters only have special meaning inside of brackets
# they do not need to be escaped, but they MAY be escaped
# without any adverse effects (to the best of my knowledge and casual testing)
# : ! , =
# my test "~!@#$%^&*(){}[]`/=?+\|-_;:'\",<.>".match(/[\#]/g)
specials = [
# order matters for these
"-"
"["
"]"
# order doesn't matter for any of these
"/"
"{"
"}"
"("
")"
"*"
"+"
"?"
"."
"\\"
"^"
"$"
"|"]
# I choose to escape every character with '\'
# even though only some strictly require it when inside of []
regex = RegExp('[' + specials.join('\\') + ']', 'g')
string.replace(regex, "\\$&")
string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')
humanizeEventName: (eventName, eventDoc) ->
[namespace, event] = eventName.split(':')