mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2026-02-10 23:05:56 +01:00
Death to E4X and stuff.
This commit is contained in:
@@ -10,6 +10,7 @@ defineModule("dom", {
|
||||
});
|
||||
|
||||
lazyRequire("highlight", ["highlight"]);
|
||||
lazyRequire("messages", ["_"]);
|
||||
lazyRequire("template", ["template"]);
|
||||
|
||||
var XBL = Namespace("xbl", "http://www.mozilla.org/xbl");
|
||||
@@ -1383,7 +1384,7 @@ var DOM = Class("DOM", {
|
||||
? function (elem, dir) services.dactyl.getScrollable(elem) & (dir ? services.dactyl["DIRECTION_" + dir.toUpperCase()] : ~0)
|
||||
: function (elem, dir) true),
|
||||
|
||||
isJSONXML: function isJSONXML(val) isArray(val) && isString(val[0]) || isObject(val) && "toDOM" in val,
|
||||
isJSONXML: function isJSONXML(val) isArray(val) && (isString(val[0]) || isArray(val[0])) || isObject(val) && "toDOM" in val,
|
||||
|
||||
DOMString: function (val) ({
|
||||
toDOM: function toDOM(doc) doc.createTextNode(val)
|
||||
@@ -1555,7 +1556,11 @@ var DOM = Class("DOM", {
|
||||
function tag(args, namespaces) {
|
||||
let _namespaces = namespaces;
|
||||
|
||||
if (isinstance(args, ["String", _]))
|
||||
return doc.createTextNode(args);
|
||||
|
||||
let [name, attr] = args;
|
||||
attr = attr || {};
|
||||
|
||||
if (Array.isArray(name) || args.length == 0) {
|
||||
var frag = doc.createDocumentFragment();
|
||||
@@ -1607,8 +1612,7 @@ var DOM = Class("DOM", {
|
||||
elem.setAttribute(key, val);
|
||||
}
|
||||
args.forEach(function(e) {
|
||||
elem.appendChild(typeof e == "object" ? tag(e, namespaces) :
|
||||
e instanceof Node ? e : doc.createTextNode(e));
|
||||
elem.appendChild(e instanceof Ci.nsIDOMNode ? e : tag(e, namespaces));
|
||||
});
|
||||
|
||||
if ("highlight" in attr)
|
||||
|
||||
@@ -1024,6 +1024,63 @@ var Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
|
||||
return color ? <div style="white-space: pre-wrap;">{string}</div> : [s for each (s in string)].join("");
|
||||
},
|
||||
|
||||
prettifyJSON: function prettifyJSON(data, indent) {
|
||||
const INDENT = indent || " ";
|
||||
|
||||
function rec(data, level, seen) {
|
||||
if (isObject(data)) {
|
||||
if (~seen.indexOf(data))
|
||||
throw Error("Recursive object passed");
|
||||
seen = seen.concat([data]);
|
||||
}
|
||||
|
||||
let prefix = level + INDENT;
|
||||
|
||||
if (data === undefined)
|
||||
data = null;
|
||||
|
||||
if (~["boolean", "number"].indexOf(typeof data) || data === null)
|
||||
res.push(String(data));
|
||||
else if (isinstance(data, ["String", _]))
|
||||
res.push(String.quote(data));
|
||||
else if (isArray(data)) {
|
||||
if (data.length == 0)
|
||||
res.push("[]");
|
||||
else {
|
||||
res.push("[\n")
|
||||
for (let [i, val] in Iterator(data)) {
|
||||
if (i)
|
||||
res.push(",\n");
|
||||
res.push(prefix)
|
||||
rec(val, prefix, seen);
|
||||
}
|
||||
res.push("\n", level, "]");
|
||||
}
|
||||
}
|
||||
else if (isObject(data)) {
|
||||
res.push("{\n")
|
||||
|
||||
let i = 0;
|
||||
for (let [key, val] in Iterator(data)) {
|
||||
if (i++)
|
||||
res.push(",\n");
|
||||
res.push(prefix, String.quote(key), ": ")
|
||||
rec(val, prefix, seen);
|
||||
}
|
||||
if (i > 0)
|
||||
res.push("\n", level, "}")
|
||||
else
|
||||
res[res.length - 1] = "{}";
|
||||
}
|
||||
else
|
||||
throw Error("Invalid JSON object");
|
||||
}
|
||||
|
||||
let res = [];
|
||||
rec(data, "", []);
|
||||
return res.join("");
|
||||
},
|
||||
|
||||
observers: {
|
||||
"dactyl-cleanup-modules": function (subject, reason) {
|
||||
defineModule.loadLog.push("dactyl: util: observe: dactyl-cleanup-modules " + reason);
|
||||
|
||||
Reference in New Issue
Block a user