From a62300554bc3c4f0e5df918fef40c57fef521974 Mon Sep 17 00:00:00 2001
From: Einar Egilsson
Date: Sat, 2 Jun 2007 23:53:51 +0000
Subject: git-svn-id:
http://einaregilsson.googlecode.com/svn/mozilla/redirector/trunk@58
119bf307-c92d-0410-89bd-8f53e6181181
---
chrome/content/redirect.js | 22 +++++++++++--
chrome/content/redirect.xul | 31 +++++++++++--------
chrome/content/redirectList.xul | 2 +-
chrome/content/redirector.js | 51 ++++++++++++++++++++++---------
chrome/locale/en-US/redirect.dtd | 1 +
chrome/locale/en-US/redirector.properties | 5 +--
6 files changed, 80 insertions(+), 32 deletions(-)
(limited to 'chrome')
diff --git a/chrome/content/redirect.js b/chrome/content/redirect.js
index 5be85f7..f4609e3 100644
--- a/chrome/content/redirect.js
+++ b/chrome/content/redirect.js
@@ -10,6 +10,8 @@ var Redirect = {
$('txtRedirectUrl').value = item.redirectUrl || '';
$('chkOnlyIfLinkExists').checked = item.onlyIfLinkExists || false;
+ this.strings = document.getElementById("redirector-strings");
+
if (item.patternType == kRedirectorRegex) {
$('rdoRegex').setAttribute('selected', true);
$('rdoWildcard').setAttribute('selected', false);
@@ -34,9 +36,25 @@ var Redirect = {
},
testPattern : function() {
- var match;
+ var redirectUrl, pattern, example, extName;
+
+ redirectUrl = $('txtRedirectUrl').value;
+ pattern = $('txtPattern').value;
+ example = $('txtExampleUrl').value;
+
+ extName = this.strings.getString('extensionName');
- alert(Redirector.wildcardMatch($('txtPattern').value, $('txtExampleUrl').value));
+ if ($('rdoRegex').selected) {
+ redirectUrl = Redirector.regexMatch(pattern, example, redirectUrl);
+ } else {
+ redirectUrl = Redirector.wildcardMatch(pattern, example, redirectUrl);
+ }
+
+ if (redirectUrl || (redirectUrl === '' && $('txtRedirectUrl').value === '')) {
+ RedirLib.msgBox(extName, this.strings.getFormattedString('testPatternSuccess', [pattern, example, redirectUrl]));
+ } else {
+ RedirLib.msgBox(extName, this.strings.getFormattedString('testPatternFailure', [pattern, example]));
+ }
}
};
\ No newline at end of file
diff --git a/chrome/content/redirect.xul b/chrome/content/redirect.xul
index 8db1891..479729a 100644
--- a/chrome/content/redirect.xul
+++ b/chrome/content/redirect.xul
@@ -13,33 +13,38 @@
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
+
-
-
+
+
+
+
+
+
+
diff --git a/chrome/content/redirectList.xul b/chrome/content/redirectList.xul
index 688457b..264baa2 100644
--- a/chrome/content/redirectList.xul
+++ b/chrome/content/redirectList.xul
@@ -16,7 +16,7 @@
-
+
diff --git a/chrome/content/redirector.js b/chrome/content/redirector.js
index 8ec4af7..18ac1f9 100644
--- a/chrome/content/redirector.js
+++ b/chrome/content/redirector.js
@@ -51,7 +51,7 @@ var Redirector = {
},
processUrl : function(url) {
- var redirect, link, links, redirectUrl, match;
+ var redirect, link, links, redirectUrl;
if (!this.enabled) {
return;
@@ -59,17 +59,14 @@ var Redirector = {
for each (redirect in this.list) {
- var redirectUrl;
if (redirect.patternType == kRedirectorWildcard) {
- match = this.wildcardMatch(redirect.pattern, url);
- redirectUrl = redirect.redirectUrl;
+ redirectUrl = this.wildcardMatch(redirect.pattern, url, redirect.redirectUrl);
} else if (redirect.patternType == kRedirectorRegex) {
- match = this.regexMatch(redirect.pattern, url);
- redirectUrl = redirect.redirectUrl;
+ redirectUrl = this.regexMatch(redirect.pattern, url, redirect.redirectUrl);
}
- if (match) {
+ if (redirectUrl) {
RedirLib.debug('%1 matches %2'._(redirect.pattern, url));
if (redirect.onlyIfLinkExists) {
links = window.content.document.getElementsByTagName('a');
@@ -101,12 +98,38 @@ var Redirector = {
}
},
- regexMatch : function(pattern, text) {
- alert('regexmatch');
+ regexMatch : function(pattern, text, redirectUrl) {
+
+ var strings, rx, match;
+ try {
+ rx = new RegExp(pattern, 'gi');
+ match = rx.exec(text);
+ } catch(e) {
+ //HACK, need to make this better
+ if (window.RedirectorOverlay) {
+ strings = window.RedirectorOverlay.strings;
+ } else if(window.Redirect) {
+ strings = window.Redirect.strings;
+ }
+ RedirLib.msgBox(strings.getString('extensionName'), strings.getFormattedString('regexPatternError', [pattern, e.toString()]));
+ return null;
+ }
+
+ var rxrepl;
+
+ if (match) {
+ for (var i = 1; i < match.length; i++) {
+ rxrepl = new RegExp('\\$' + i, 'gi');
+ redirectUrl = redirectUrl.replace(rxrepl, match[i]);
+ }
+ return redirectUrl;
+ }
+
+ return null;
},
- wildcardMatch : function(pattern, text) {
+ wildcardMatch : function(pattern, text, redirectUrl) {
var parts
, part
, i
@@ -121,22 +144,22 @@ var Redirector = {
pos = text.indexOf(part);
if (pos == -1) {
- return false;
+ return null;
}
if (i == 0 && pos != 0) {
- return false;
+ return null;
}
if (i == parts.length -1 && i != "" && text.substr(text.length - part.length) != part) {
- return false;
+ return null;
}
text = text.substr(pos + part.length);
}
- return true;
+ return redirectUrl;
},
prefObserver : {
diff --git a/chrome/locale/en-US/redirect.dtd b/chrome/locale/en-US/redirect.dtd
index d5ff86c..45a1d30 100644
--- a/chrome/locale/en-US/redirect.dtd
+++ b/chrome/locale/en-US/redirect.dtd
@@ -8,5 +8,6 @@
+
diff --git a/chrome/locale/en-US/redirector.properties b/chrome/locale/en-US/redirector.properties
index df70f6b..66a0287 100644
--- a/chrome/locale/en-US/redirector.properties
+++ b/chrome/locale/en-US/redirector.properties
@@ -6,5 +6,6 @@ addLinkUrl=Add link url to Redirector
recursiveError=A redirect with the pattern %S matches %S and is trying to redirect to it again. You should change this rule so it won't work recursively.
enabledTooltip=Redirector is enabled
disabledTooltip=Redirector is disabled
-testPatternSuccess=The pattern %S matches example URL %S, and would redirect you to %S
-testPatternFailure=The pattern %S does not match example URL %S
\ No newline at end of file
+testPatternSuccess=The pattern %S matches example URL %S, and would redirect you to url: %S
+testPatternFailure=The pattern %S does not match example URL %S
+regexPatternError=The pattern '%S' is not a legal regular expression pattern. Details: %S
\ No newline at end of file
--
cgit v1.2.3-70-g09d2