Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: lib/utils.js

Issue 9846017: Make JavaScript sources compile into the library; convert JavaScript files on the fly (Closed)
Patch Set: Review comments addressed Created March 15, 2013, 3:59 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/prefs.js ('k') | libadblockplus.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/utils.js
===================================================================
new file mode 100644
--- /dev/null
+++ b/lib/utils.js
@@ -0,0 +1,82 @@
+var Utils = exports.Utils = {
+ systemPrincipal: null,
+ getString: function(id)
+ {
+ return id;
+ },
+ runAsync: function(callback, thisPtr)
+ {
+ var params = Array.prototype.slice.call(arguments, 2);
+ window.setTimeout(function()
+ {
+ callback.apply(thisPtr, params);
+ }, 0);
+ },
+ get appLocale()
+ {
+ var locale = chrome.i18n.getMessage("@@ui_locale").replace(/_/g, "-");
+ this.__defineGetter__("appLocale", function() {return locale});
+ return this.appLocale;
+ },
+ generateChecksum: function(lines)
+ {
+ // We cannot calculate MD5 checksums yet :-(
+ return null;
+ },
+ makeURI: function(url)
+ {
+ return Services.io.newURI(url);
+ },
+
+ checkLocalePrefixMatch: function(prefixes)
+ {
+ if (!prefixes)
+ return null;
+
+ var list = prefixes.split(",");
+ for (var i = 0; i < list.length; i++)
+ if (new RegExp("^" + list[i] + "\\b").test(this.appLocale))
+ return list[i];
+
+ return null;
+ },
+
+ chooseFilterSubscription: function(subscriptions)
+ {
+ var selectedItem = null;
+ var selectedPrefix = null;
+ var matchCount = 0;
+ for (var i = 0; i < subscriptions.length; i++)
+ {
+ var subscription = subscriptions[i];
+ if (!selectedItem)
+ selectedItem = subscription;
+
+ var prefix = require("utils").Utils.checkLocalePrefixMatch(subscription.getAttribute("prefixes"));
+ if (prefix)
+ {
+ if (!selectedPrefix || selectedPrefix.length < prefix.length)
+ {
+ selectedItem = subscription;
+ selectedPrefix = prefix;
+ matchCount = 1;
+ }
+ else if (selectedPrefix && selectedPrefix.length == prefix.length)
+ {
+ matchCount++;
+
+ // If multiple items have a matching prefix of the same length:
+ // Select one of the items randomly, probability should be the same
+ // for all items. So we replace the previous match here with
+ // probability 1/N (N being the number of matches).
+ if (Math.random() * matchCount < 1)
+ {
+ selectedItem = subscription;
+ selectedPrefix = prefix;
+ }
+ }
+ }
+ }
+ return selectedItem;
+ }
+};
« no previous file with comments | « lib/prefs.js ('k') | libadblockplus.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld