1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-03-16 13:03:31 +01:00

Allow scripts to bulk-load new highlight groups, as in style.js; add Styles#loadCSS.

This commit is contained in:
Kris Maglione
2009-10-02 19:46:57 -04:00
parent ea90165a0f
commit e0ebc32489

View File

@@ -213,13 +213,15 @@ function Highlights(name, store)
}; };
/** /**
* Reloads the values in {@link #CSS}. * Bulk loads new CSS rules.
*
* @param {string} css The rules to load. See {@link Highlights#css}.
*/ */
this.reload = function () this.loadCSS = function (css)
{ {
this.CSS.replace(/\{((?:.|\n)*?)\}/g, function (_, _1) _1.replace(/\n\s*/g, " ")) css.replace(/\{((?:.|\n)*?)\}/g, function (_, _1) _1.replace(/\n\s*/g, " "))
.split("\n").filter(function (s) /\S/.test(s)) .split("\n").filter(function (s) /\S/.test(s))
.forEach(function (style) .forEach(function (style)
{ {
style = Highlight.apply(Highlight, Array.slice(style.match(/^\s*([^,\s]+)(?:,([^,\s]+)?)?(?:,([^,\s]+))?\s*(.*)$/), 1)); style = Highlight.apply(Highlight, Array.slice(style.match(/^\s*([^,\s]+)(?:,([^,\s]+)?)?(?:,([^,\s]+))?\s*(.*)$/), 1));
if (/^[>+ ]/.test(style.selector)) if (/^[>+ ]/.test(style.selector))
@@ -236,7 +238,7 @@ function Highlights(name, store)
this.set(class); this.set(class);
} }
}; };
this.reload(); this.loadCSS(this.CSS);
} }
/** /**
@@ -325,7 +327,7 @@ function Styles(name, store)
if (name && name in names) if (name && name in names)
this.removeSheet(system, name); this.removeSheet(system, name);
let sheet = Sheet(name, id++, filter.split(",").filter(util.identity), css, null, system, agent); let sheet = Sheet(name, id++, filter.split(",").filter(util.identity), String(css), null, system, agent);
try try
{ {
@@ -508,7 +510,7 @@ const highlight = storage.newObject("highlight", Highlights, false);
if (highlight.CSS != Highlights.prototype.CSS) if (highlight.CSS != Highlights.prototype.CSS)
{ {
highlight.CSS = Highlights.prototype.CSS; highlight.CSS = Highlights.prototype.CSS;
highlight.reload(); highlight.loadCSS(highlight.CSS);
} }
liberator.triggerObserver("load_styles", "styles"); liberator.triggerObserver("load_styles", "styles");