From bcbcd61eb9fc91a9ed1b3096ce9f2b686a2114b9 Mon Sep 17 00:00:00 2001 From: Einar Egilsson Date: Wed, 23 Jan 2008 22:22:35 +0000 Subject: Version 1.5.1 git-svn-id: http://einaregilsson.googlecode.com/svn/mozilla/redirector/trunk@104 119bf307-c92d-0410-89bd-8f53e6181181 --- chrome/content/help.html | 10 +--------- chrome/content/redirector.js | 32 +++++++------------------------- 2 files changed, 8 insertions(+), 34 deletions(-) (limited to 'chrome/content') diff --git a/chrome/content/help.html b/chrome/content/help.html index b4846aa..e74048e 100644 --- a/chrome/content/help.html +++ b/chrome/content/help.html @@ -23,7 +23,6 @@
  • Wildcards
  • Regular expressions
  • -
  • XPath redirects
  • Examples
    1. Static redirect
    2. @@ -71,8 +70,7 @@ include pattern. You can use the special signs $1, $2, $3 etc. in the url, they will be replaced by the results of captures with regular expressions or stars with wildcards. For instance, if you have the include pattern http://google.com/*, redirect to http://froogle.com/$1 and you open the page http://google.com/foobar, then you will be redireced to http://froogle.com/foobar, since 'foobar' was what the star replaced. $1 is for the - first star in the pattern, $2 for the second and so on. For regular expression $1 is for the first parantheses, $2 for the second etc. The redirect url - can also be specified as a XPath expression. + first star in the pattern, $2 for the second and so on. For regular expression $1 is for the first parantheses, $2 for the second etc.
    3. Pattern type: This specifies how Redirector should interpret the patterns, either as wildcards or regular expressions.
    4. @@ -115,12 +113,6 @@ the ? sign in the querystring of the url. ? is a special character in regular expressions so if you want to match an url with a querystring you should escape it as \?).

      - -

      XPath redirects

      -

      The redirect url can be specified as an xpath expression by starting it with xpath: and then you will be redirected to the url - that the xpath expression matches. Example: Redirect url is xpath:/div/span/a/@href, then you will be redirected to the href value - of the first link that's inside a div in the original page.

      -

      Examples

      diff --git a/chrome/content/redirector.js b/chrome/content/redirector.js index 62966d6..98d1c4b 100644 --- a/chrome/content/redirector.js +++ b/chrome/content/redirector.js @@ -67,11 +67,11 @@ var Redirector = { //we need the original page to verify that it exists. //Slow redirect will be done automatically. if (redirectUrl) { - if (!redirect.onlyIfLinkExists && !redirect.redirectUrl.startsWith('xpath:')) { - RedirLib.debug('%1 matches %2, and it\'s not only if link exists and not an xpath expression. Can do instant redirect.'._(redirect.pattern, url)); + if (redirect.redirectUrl.startsWith('xpath:')) { + RedirLib.msgBox(this.strings.getString('extensionName'), this.strings.getString('xpathDeprecated')); + } else if (!redirect.onlyIfLinkExists) { + RedirLib.debug('%1 matches %2, and it\'s not only if link exists. Can do instant redirect.'._(redirect.pattern, url)); return { 'url' : redirectUrl, 'pattern' : redirect.pattern}; - } else if (redirect.redirectUrl.startsWith('xpath:')) { - RedirLib.debug('%1 matches %2, but the redirect is a xpath expression and so has to be a slow redirect'._(redirect.pattern, url)); } else { RedirLib.debug('%1 matches %2, but it\'s "only if link exists" and so has to be a slow redirect'._(redirect.pattern, url)); } @@ -148,29 +148,11 @@ var Redirector = { goto : function(redirectUrl, pattern, url, doc) { - - if (redirectUrl.startsWith('xpath:')) { - - var xpath = redirectUrl.substr('xpath:'.length); - RedirLib.debug('Evaluating xpath: ' + xpath); - xpathResult = doc.evaluate(redirectUrl.substr('xpath:'.length), doc, null, XPathResult.STRING_TYPE,null); - if (!xpathResult) { - //fail silently - RedirLib.debug('%1 returned nothing on url %2'._(xpath, url)); - return; - } else { - RedirLib.debug('%1 evaluated to %2'._(redirectUrl, xpathResult.stringValue)); - redirectUrl = xpathResult.stringValue; - if (redirectUrl == '') { - RedirLib.debug('XPath failed, no redirection will be made'); - return; - } - } - } - redirectUrl = this.makeAbsoluteUrl(url, redirectUrl); - if (redirectUrl == url) { + if (redirectUrl.startsWith('xpath:')) { + //Do nothing, the instant redirect will have popped up a message + } else if (redirectUrl == url) { RedirLib.msgBox(this.strings.getString('extensionName'), this.strings.getFormattedString('recursiveError', [pattern, redirectUrl])); } else { doc.location.href = redirectUrl; -- cgit v1.2.3-70-g09d2