| |
| /** |
| * Module exports. |
| */ |
| |
| module.exports = shExpMatch; |
| |
| /** |
| * Returns true if the string matches the specified shell |
| * expression. |
| * |
| * Actually, currently the patterns are shell expressions, |
| * not regular expressions. |
| * |
| * Examples: |
| * |
| * ``` js |
| * shExpMatch("http://home.netscape.com/people/ari/index.html", "*\/ari/*") |
| * // is true. |
| * |
| * shExpMatch("http://home.netscape.com/people/montulli/index.html", "*\/ari/*") |
| * // is false. |
| * ``` |
| * |
| * @param {String} str is any string to compare (e.g. the URL, or the hostname). |
| * @param {String} shexp is a shell expression to compare against. |
| * @return {Boolean} true if the string matches the shell expression. |
| */ |
| |
| function shExpMatch (str, shexp) { |
| var re = toRegExp(shexp); |
| return re.test(str); |
| } |
| |
| /** |
| * Converts a "shell expression" to a JavaScript RegExp. |
| * |
| * @api private |
| */ |
| |
| function toRegExp (str) { |
| str = String(str) |
| .replace(/\?/g, '.') |
| .replace(/\*/g, '(.*)'); |
| return new RegExp('^' + str + '$'); |
| } |