-// Copyright (c) 2008-2012 Kris Maglione <maglione.k at Gmail>
+// Copyright (c) 2008-2014 Kris Maglione <maglione.k at Gmail>
//
// This work is licensed for reuse under an MIT license. Details are
// given in the LICENSE.txt file included with this file.
Highlight.defaultValue("style", function ()
styles.system.add("highlight:" + this.class, this.sites, this.css, this.agent, true));
-Highlight.defaultValue("defaultExtends", function () []);
-Highlight.defaultValue("defaultValue", function () "");
+Highlight.defaultValue("defaultExtends", () => []);
+Highlight.defaultValue("defaultValue", () => "");
Highlight.defaultValue("extends", function () this.defaultExtends);
Highlight.defaultValue("value", function () this.defaultValue);
update(Highlight.prototype, {
get base() this.baseClass != this.class && highlight.highlight[this.baseClass] || null,
- get bases() array.compact(this.extends.map(function (name) highlight.get(name))),
+ get bases() array.compact(this.extends.map(name => highlight.get(name))),
get inheritedCSS() {
if (this.gettingCSS)
return "";
try {
this.gettingCSS = true;
- return this.bases.map(function (b) b.cssText.replace(/;?\s*$/, "; ")).join("");
+ return this.bases.map(b => b.cssText.replace(/;?\s*$/, "; ")).join("");
}
finally {
this.gettingCSS = false;
keys: function keys() Object.keys(this.highlight).sort(),
- __iterator__: function () values(this.highlight).sort(function (a, b) String.localeCompare(a.class, b.class))
+ __iterator__: function () values(this.highlight).sort((a, b) => String.localeCompare(a.class, b.class))
.iterValues(),
_create: function _create(agent, args) {
if (/^[[>+: ]/.test(args[1]))
obj.selector = this.selector(obj.class) + args[1];
else if (args[1])
- obj.selector = this.selector(args[1]);
+ obj.selector = this.selector(args[1].replace(/^,/, ""));
if (old && old.value != old.defaultValue)
obj.value = old.value;
obj.style.enabled = true;
else
this.loaded.__defineSetter__(obj.class, function () {
- delete this[obj.class];
- this[obj.class] = true;
+ Object.defineProperty(this, obj.class, {
+ value: true,
+ configurable: true,
+ enumerable: true,
+ writable: true
+ });
if (obj.class === obj.baseClass)
for (let h in highlight)
node.setAttributeNS(NS, "highlight", group);
let groups = group.split(" ");
- for each (let group in groups)
+ for (let group of groups)
this.loaded[group] = true;
if (applyBindings)
- for each (let group in groups) {
+ for (let group of groups) {
if (applyBindings.bindings && group in applyBindings.bindings)
applyBindings.bindings[group](node, applyBindings);
else if (group in template.bindings)
* @param {string} class
*/
selector: function selector(class_)
- let (self = this)
- class_.replace(/(^|[>\s])([A-Z][\w-]+)\b/g,
- function (m, n1, hl) n1 +
- (self.highlight[hl] && self.highlight[hl].class != class_
- ? self.highlight[hl].selector : "[dactyl|highlight~=" + hl + "]")),
+ class_.replace(/(^|[>\s])([A-Z][\w-]+)\b/g,
+ (m, n1, hl) => {
+ if (this.highlight[hl] && this.highlight[hl].class != class_)
+ return n1 + this.highlight[hl].selector;
+ return n1 + "[dactyl|highlight~=" + hl + "]";
+ }),
groupRegexp: util.regexp(literal(/*
^
* If Star is provided, the style is applied as an agent sheet.
*
* The new styles are lazily activated unless Bang or *eager* is
- * provided. See {@link Util#xmlToDom}.
+ * provided.
*
* @param {string} css The rules to load. See {@link Highlights#css}.
* @param {boolean} eager When true, load all provided rules immediately.
*/
loadCSS: function loadCSS(css, eager) {
String.replace(css, /\\\n/g, "")
- .replace(this.groupRegexp, function (m, m1, m2) m1 + " " + m2.replace(/\n\s*/g, " "))
- .split("\n").filter(function (s) /\S/.test(s) && !/^\s*\/\//.test(s))
+ .replace(this.groupRegexp, (m, m1, m2) => (m1 + " " + m2.replace(/\n\s*/g, " ")))
+ .split("\n").filter(s => (/\S/.test(s) && !/^\s*\/\//.test(s)))
.forEach(function (highlight) {
let bang = eager || /^\s*!/.test(highlight);
"text-align: center"],
([h.class,
["span", { style: "text-align: center; line-height: 1em;" + h.value + style }, "XXX"],
- template.map(h.extends, function (s) template.highlight(s), ","),
+ template.map(h.extends, s => template.highlight(s), ","),
template.highlightRegexp(h.value, /\b[-\w]+(?=:)|\/\*.*?\*\//g,
- function (match) ["span", { highlight: match[0] == "/" ? "Comment" : "Key" }, match])
+ match => ["span", { highlight: match[0] == "/" ? "Comment" : "Key" }, match])
]
for (h in highlight)
if (!key || h.class.indexOf(key) > -1))));
completer: function (context, args) {
let group = args[0] && highlight.get(args[0]);
if (group)
- context.fork("extra", 0, this, function (context) [
+ context.fork("extra", 0, this, context => [
[String(group.extends), _("option.currentValue")],
[String(group.defaultExtends) || "", _("option.defaultValue")]
]);
let extRe = RegExp("\\." + config.fileExtension + "$");
context.title = ["Color Scheme", "Runtime Path"];
- context.keys = { text: function (f) f.leafName.replace(extRe, ""), description: ".parent.path" };
+ context.keys = { text: f => f.leafName.replace(extRe, ""),
+ description: ".parent.path" };
context.completions =
array.flatten(
io.getRuntimeDirectories("colors").map(
- function (dir) dir.readDirectory().filter(
- function (file) extRe.test(file.leafName))))
+ dir => dir.readDirectory()
+ .filter(file => extRe.test(file.leafName))))
.concat([
{ leafName: "default", parent: { path: /*L*/"Revert to builtin colorscheme" } }
]);
};
},
javascript: function initJavascript(dactyl, modules, window) {
- modules.JavaScript.setCompleter(["get", "set"].map(function (m) highlight[m]),
- [ function (context, obj, args) Iterator(highlight.highlight) ]);
- modules.JavaScript.setCompleter(["highlightNode"].map(function (m) highlight[m]),
- [ null, function (context, obj, args) Iterator(highlight.highlight) ]);
+ modules.JavaScript.setCompleter(["get", "set"].map(m => highlight[m]),
+ [ (context, obj, args) => Iterator(highlight.highlight) ]);
+ modules.JavaScript.setCompleter(["highlightNode"].map(m => highlight[m]),
+ [ null, (context, obj, args) => Iterator(highlight.highlight) ]);
}
});
endModule();
-// vim: set fdm=marker sw=4 ts=4 et ft=javascript:
+// vim: set fdm=marker sw=4 sts=4 ts=8 et ft=javascript: