text: 
  /**
   * 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 + '$');
  }
  