From be5ad2ddb59ba24dfce9cab350b3e09de98df9ea Mon Sep 17 00:00:00 2001 From: Jez Ng Date: Wed, 20 Jun 2012 20:48:18 -0700 Subject: Refactor prefix recognition, add about: prefix as well. --- lib/utils.coffee | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/utils.coffee b/lib/utils.coffee index 91d79c4c..598b631a 100644 --- a/lib/utils.coffee +++ b/lib/utils.coffee @@ -30,9 +30,15 @@ Utils = return -> id += 1 )() + hasChromePrefix: (url) -> + chromePrefixes = [ 'about', 'view-source' ] + for prefix in chromePrefixes + return true if url.startsWith prefix + false + # Completes a partial URL (without scheme) createFullUrl: (partialUrl) -> - if (!/^[a-z]{3,}:\/\//.test(partialUrl)) and not /^view-source:/.test partialUrl + if (!/^[a-z]{3,}:\/\//.test(partialUrl)) "http://" + partialUrl else partialUrl @@ -54,10 +60,6 @@ Utils = # are there more? specialHostNames = [ 'localhost' ] - # special-case view-source:[url] - if /^view-source:/.test str - return true - # it starts with a scheme, so it's definitely an URL if (/^[a-z]{3,}:\/\//.test(str)) return true @@ -106,7 +108,10 @@ Utils = # We don't bother with escaping characters as Chrome will do that for us. convertToUrl: (string) -> string = string.trim() - if (Utils.isUrl(string)) then Utils.createFullUrl(string) else Utils.createSearchUrl(string) + # special-case about:[url] and view-source:[url] + if Utils.hasChromePrefix string then string + else + if (Utils.isUrl(string)) then Utils.createFullUrl(string) else Utils.createSearchUrl(string) # This creates a new function out of an existing function, where the new function takes fewer arguments. # This allows us to pass around functions instead of functions + a partial list of arguments. @@ -117,6 +122,8 @@ Function.prototype.curry = -> Array.copy = (array) -> Array.prototype.slice.call(array, 0) +String::startsWith = (str) -> @indexOf(str) == 0 + # A very simple method for defining a new class (constructor and methods) using a single hash. # No support for inheritance is included because we really shouldn't need it. # TODO(philc): remove this. -- cgit v1.2.3