X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=common%2Fmodules%2Fstyles.jsm;fp=common%2Fmodules%2Fstyles.jsm;h=70608b9fb170eca5cddec2992b490b093028bb25;hb=70740024f9c028c1fd63e1a1850ab062ff956054;hp=adfc725c8269780495c182289689e672b9c1af67;hpb=718c614c183350706466e22939d0101ca4c87efe;p=dactyl.git diff --git a/common/modules/styles.jsm b/common/modules/styles.jsm index adfc725..70608b9 100644 --- a/common/modules/styles.jsm +++ b/common/modules/styles.jsm @@ -68,17 +68,20 @@ update(Sheet.prototype, { get fullCSS() { let filter = this.sites; let css = this.css; + + let preamble = "/* " + this.uri + (this.agent ? " (agent)" : "") + " */\n\n" + namespace + "\n"; if (filter[0] == "*") - return namespace + css; + return preamble + css; let selectors = filter.map(function (part) - (/[*]$/.test(part) ? "url-prefix" : - /[\/:]/.test(part) ? "url" - : "domain") - + '("' + part.replace(/"/g, "%22").replace(/\*$/, "") + '")') + !/^(?:[a-z-]+[:*]|[a-z-.]+$)/i.test(part) ? "regexp(" + (".*(?:" + part + ").*").quote() + ")" : + (/[*]$/.test(part) ? "url-prefix" : + /[\/:]/.test(part) ? "url" + : "domain") + + '("' + part.replace(/"/g, "%22").replace(/\*$/, "") + '")') .join(",\n "); - return "/* " + this.uri + (this.agent ? " (agent)" : "") + " */\n\n" - + namespace + "\n@-moz-document " + selectors + " {\n\n" + css + "\n\n}\n"; + + return preamble + "@-moz-document " + selectors + " {\n\n" + css + "\n\n}\n"; } }); @@ -253,8 +256,8 @@ var Styles = Module("Styles", { services["dactyl:"].providers["style"] = function styleProvider(uri) { let id = /^\/(\d*)/.exec(uri.path)[1]; - if (set.has(styles.allSheets, id)) - return ["text/css", unescape(encodeURI(styles.allSheets[id].fullCSS))]; + if (Set.has(styles.allSheets, id)) + return ["text/css", styles.allSheets[id].fullCSS]; return null; }; }, @@ -296,13 +299,15 @@ var Styles = Module("Styles", { systemNames: Class.Property({ get: deprecated("Styles#system.names", function systemNames() this.system.names) }), sites: Class.Property({ get: deprecated("Styles#user.sites", function sites() this.user.sites) }), - list: function list(content, filter, name, hives) { + list: function list(content, sites, name, hives) { const { commandline, dactyl } = this.modules; hives = hives || styles.hives.filter(function (h) h.modifiable && h.sheets.length); function sheets(group) group.sheets.slice() + .filter(function (sheet) (!name || sheet.name === name) && + (!sites || sites.every(function (s) sheet.sites.indexOf(s) >= 0))) .sort(function (a, b) a.name && b.name ? String.localeCompare(a.name, b.name) : !!b.name - !!a.name || a.id - b.id); @@ -312,9 +317,9 @@ var Styles = Module("Styles", { - Name - Filter - CSS + {_("title.Name")} + {_("title.Filter")} + {_("title.CSS")} @@ -365,9 +370,13 @@ var Styles = Module("Styles", { for (let prop in Styles.propertyIter(str)) props[prop.name] = prop.value; - return Object.keys(props)[sort ? "sort" : "slice"]() - .map(function (prop) prop + ": " + props[prop] + ";") - .join(" "); + let val = Object.keys(props)[sort ? "sort" : "slice"]() + .map(function (prop) prop + ": " + props[prop] + ";") + .join(" "); + + if (/^\s*(\/\*.*?\*\/)/.exec(src)) + val = RegExp.$1 + " " + val; + return val; }, completeSite: function (context, content, group) { @@ -377,8 +386,8 @@ var Styles = Module("Styles", { context.fork("current", 0, this, function (context) { context.title = ["Current Site"]; context.completions = [ - [content.location.host, "Current Host"], - [content.location.href, "Current URL"] + [content.location.host, /*L*/"Current Host"], + [content.location.href, /*L*/"Current URL"] ]; }); } @@ -389,7 +398,7 @@ var Styles = Module("Styles", { context.generate = function () values(group.sites); context.keys.text = util.identity; - context.keys.description = function (site) this.sheets.length + " sheet" + (this.sheets.length == 1 ? "" : "s") + ": " + + context.keys.description = function (site) this.sheets.length + /*L*/" sheet" + (this.sheets.length == 1 ? "" : "s") + ": " + array.compact(this.sheets.map(function (s) s.name)).join(", "); context.keys.sheets = function (site) group.sheets.filter(function (s) s.sites.indexOf(site) >= 0); context.keys.active = function (site) uris.some(Styles.matchFilter(site)); @@ -434,7 +443,7 @@ var Styles = Module("Styles", { for (let item in Iterator({ Active: true, Inactive: false })) { let [name, active] = item; context.split(name, null, function (context) { - context.title[0] = name + " " + (title || "Sheets"); + context.title[0] = /*L*/name + " " + (title || "Sheets"); context.filters.push(function (item) !!item.active == active); }); } @@ -553,17 +562,16 @@ var Styles = Module("Styles", { let [filter, css] = args; if (!css) - styles.list(window.content, filter, args["-name"], args.explicitOpts["-group"] ? [args["-group"]] : null); + styles.list(window.content, filter ? filter.split(",") : null, args["-name"], args.explicitOpts["-group"] ? [args["-group"]] : null); else { util.assert(args["-group"].modifiable && args["-group"].hive.modifiable, - "Cannot modify styles in the builtin group"); + _("group.cantChangeBuiltin", _("style.styles"))); if (args["-append"]) { let sheet = args["-group"].get(args["-name"]); if (sheet) { - filter = sheet.sites.concat(filter).join(","); + filter = array(sheet.sites).concat(filter).uniq().join(","); css = sheet.css + " " + css; - } } let style = args["-group"].add(args["-name"], filter, css, args["-agent"]); @@ -573,7 +581,6 @@ var Styles = Module("Styles", { } }, { - bang: true, completer: function (context, args) { let compl = []; let sheet = args["-group"].get(args["-name"]); @@ -584,7 +591,9 @@ var Styles = Module("Styles", { } else if (args.completeArg == 1) { if (sheet) - context.completions = [[sheet.css, "Current Value"]]; + context.completions = [ + [sheet.css, _("option.currentValue")] + ]; context.fork("css", 0, modules.completion, "css"); } }, @@ -607,9 +616,8 @@ var Styles = Module("Styles", { command: "style", arguments: [style.sites.join(",")], literalArg: style.css, - options: update({ - "-group": hive.name, - }, + options: update( + hive.name == "user" ? {} : { "-group": hive.name }, style.name ? { "-name": style.name } : {}) }))) .flatten().array @@ -642,7 +650,7 @@ var Styles = Module("Styles", { commands.add(cmd.name, cmd.desc, function (args) { dactyl.assert(args.bang ^ !!(args[0] || args[1] || args["-name"] || args["-index"]), - "Argument or ! required"); + _("error.argumentOrBang")); args["-group"].find(args["-name"], args[0], args.literalArg, args["-index"]) .forEach(cmd.action);