]> git.donarmstrong.com Git - dactyl.git/blobdiff - common/modules/options.jsm
Import 1.0 supporting Firefox up to 14.*
[dactyl.git] / common / modules / options.jsm
index 512e304f789b800506c8fe4be6fa6e13f6d6f223..dacafbdd28b282cc3e9879e3c6c7871ceff749aa 100644 (file)
@@ -339,7 +339,9 @@ var Option = Class("Option", {
         if (isArray(defaultValue))
             defaultValue = defaultValue.map(Option.quote).join(",");
         else if (isObject(defaultValue))
-            defaultValue = iter(defaultValue).map(function (val) val.map(Option.quote).join(":")).join(",");
+            defaultValue = iter(defaultValue).map(function (val) val.map(function (v) Option.quote(v, /:/))
+                                                                    .join(":"))
+                                             .join(",");
 
         if (isArray(defaultValue))
             defaultValue = defaultValue.map(Option.quote).join(",");
@@ -446,16 +448,16 @@ var Option = Class("Option", {
     },
 
     unparseRegexp: function unparseRegexp(re, quoted) re.bang + Option.quote(util.regexp.getSource(re), /^!|:/) +
-        (typeof re.result === "boolean" ? "" : ":" + (quoted ? re.result : Option.quote(re.result))),
+        (typeof re.result === "boolean" ? "" : ":" + (quoted ? re.result : Option.quote(re.result, /:/))),
 
     parseSite: function parseSite(pattern, result, rest) {
         if (isArray(rest)) // Called by Array.map
             result = undefined;
 
         let [, bang, filter] = /^(!?)(.*)/.exec(pattern);
-        filter = Option.dequote(filter);
+        filter = Option.dequote(filter).trim();
 
-        let quote = this.keepQuotes ? util.identity : Option.quote;
+        let quote = this.keepQuotes ? util.identity : function (v) Option.quote(v, /:/);
 
         return update(Styles.matchFilter(filter), {
             bang: bang,
@@ -491,7 +493,7 @@ var Option = Class("Option", {
 
         stringlist:  function (vals) vals.map(Option.quote).join(","),
 
-        stringmap:   function (vals) [Option.quote(k, /:/) + ":" + Option.quote(v) for ([k, v] in Iterator(vals))].join(","),
+        stringmap:   function (vals) [Option.quote(k, /:/) + ":" + Option.quote(v, /:/) for ([k, v] in Iterator(vals))].join(","),
 
         regexplist:  function (vals) vals.join(","),
         get regexpmap() this.regexplist,