working on the printing code.
This commit is contained in:
parent
3aa90e6b40
commit
6d00f88717
|
@ -46,7 +46,7 @@
|
||||||
params.put(this, true);
|
params.put(this, true);
|
||||||
var parent = document.createElement("span");
|
var parent = document.createElement("span");
|
||||||
parent.appendChild(document.createTextNode('#&'));
|
parent.appendChild(document.createTextNode('#&'));
|
||||||
parent.appendChild(baselib.format.toDomNode(this.val, params));
|
parent.appendChild(params.recur(this.val));
|
||||||
return parent;
|
return parent;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -221,11 +221,11 @@
|
||||||
ToDomNodeParameters.prototype.incrementDepth = function() {
|
ToDomNodeParameters.prototype.incrementDepth = function() {
|
||||||
return new ToDomNodeParameters({ mode : this.mode,
|
return new ToDomNodeParameters({ mode : this.mode,
|
||||||
depth: this.depth + 1,
|
depth: this.depth + 1,
|
||||||
objectCounter: objectCounter });
|
objectCounter: this.objectCounter });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// getMode: -> (U "print" "display" "write")
|
// getMode: -> (U "print" "display" "write" "constructor")
|
||||||
ToDomNodeParameters.prototype.getMode = function() {
|
ToDomNodeParameters.prototype.getMode = function() {
|
||||||
if (this.mode) {
|
if (this.mode) {
|
||||||
return this.mode;
|
return this.mode;
|
||||||
|
@ -336,9 +336,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// toDomNode: scheme-value -> dom-node
|
var coerseToParams = function(params) {
|
||||||
var toDomNode = function(x, params) {
|
|
||||||
var node;
|
|
||||||
if (params === 'write') {
|
if (params === 'write') {
|
||||||
params = new ToDomNodeParameters({'mode' : 'write'});
|
params = new ToDomNodeParameters({'mode' : 'write'});
|
||||||
} else if (params === 'print') {
|
} else if (params === 'print') {
|
||||||
|
@ -350,6 +348,14 @@
|
||||||
} else {
|
} else {
|
||||||
params = params || new ToDomNodeParameters({'mode' : 'display'});
|
params = params || new ToDomNodeParameters({'mode' : 'display'});
|
||||||
}
|
}
|
||||||
|
return params;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// toDomNode: scheme-value -> dom-node
|
||||||
|
var toDomNode = function(x, params) {
|
||||||
|
var node;
|
||||||
|
params = coerseToParams(params);
|
||||||
|
|
||||||
if (baselib.numbers.isSchemeNumber(x)) {
|
if (baselib.numbers.isSchemeNumber(x)) {
|
||||||
node = numberToDomNode(x, params);
|
node = numberToDomNode(x, params);
|
||||||
|
@ -379,7 +385,7 @@
|
||||||
|
|
||||||
if (x === null) {
|
if (x === null) {
|
||||||
node = document.createElement("span");
|
node = document.createElement("span");
|
||||||
node.appendChild(document.createTextNode("null"));
|
node.appendChild(document.createTextNode("#<null>"));
|
||||||
$(node).addClass("null");
|
$(node).addClass("null");
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
@ -387,18 +393,10 @@
|
||||||
if (x === undefined) {
|
if (x === undefined) {
|
||||||
node = document.createElement("span");
|
node = document.createElement("span");
|
||||||
node.appendChild(document.createTextNode("#<undefined>"));
|
node.appendChild(document.createTextNode("#<undefined>"));
|
||||||
|
$(node).addClass("undefined");
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (typeof(x) === 'object') {
|
|
||||||
if (params.containsKey(x)) {
|
|
||||||
node = document.createElement("span");
|
|
||||||
node.appendChild(document.createTextNode("#" + params.get(x)));
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (baselib.functions.isProcedure(x)) {
|
if (baselib.functions.isProcedure(x)) {
|
||||||
node = document.createElement("span");
|
node = document.createElement("span");
|
||||||
node.appendChild(document.createTextNode('#<procedure: ' + x.displayName + '>'));
|
node.appendChild(document.createTextNode('#<procedure: ' + x.displayName + '>'));
|
||||||
|
@ -406,31 +404,36 @@
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof(x) !== 'object' && typeof(x) !== 'function') {
|
if (typeof(x) !== 'object') {
|
||||||
node = document.createElement("span");
|
node = document.createElement("span");
|
||||||
node.appendChild(document.createTextNode(x.toString()));
|
node.appendChild(document.createTextNode(x.toString()));
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Otherwise, we know the value is an object.
|
||||||
|
if (params.containsKey(x)) {
|
||||||
|
node = document.createElement("span");
|
||||||
|
node.appendChild(document.createTextNode("#" + params.get(x)));
|
||||||
|
return node;
|
||||||
|
}
|
||||||
var returnVal;
|
var returnVal;
|
||||||
if (x.nodeType) {
|
if (x.nodeType) {
|
||||||
returnVal = x;
|
returnVal = x;
|
||||||
} else if (x.toDomNode) {
|
} else if (x.toDomNode) {
|
||||||
returnVal = x.toDomNode(params);
|
returnVal = x.toDomNode(params);
|
||||||
} else if (params.getMode() === 'write' && x.toWrittenString) {
|
} else if (params.getMode() === 'write' && x.toWrittenString) {
|
||||||
node = document.createElement("span");
|
node = document.createElement("span");
|
||||||
node.appendChild(document.createTextNode(x.toWrittenString(params)));
|
node.appendChild(document.createTextNode(x.toWrittenString(params)));
|
||||||
returnVal = node;
|
returnVal = node;
|
||||||
} else if (params.getMode() === 'display' && x.toDisplayedString) {
|
} else if (params.getMode() === 'display' && x.toDisplayedString) {
|
||||||
node = document.createElement("span");
|
node = document.createElement("span");
|
||||||
node.appendChild(document.createTextNode(x.toDisplayedString(params)));
|
node.appendChild(document.createTextNode(x.toDisplayedString(params)));
|
||||||
returnVal = node;
|
returnVal = node;
|
||||||
} else {
|
} else {
|
||||||
node = document.createElement("span");
|
node = document.createElement("span");
|
||||||
node.appendChild(document.createTextNode(x.toString()));
|
node.appendChild(document.createTextNode(x.toString()));
|
||||||
returnVal = node;
|
returnVal = node;
|
||||||
}
|
}
|
||||||
params.remove(x);
|
|
||||||
return returnVal;
|
return returnVal;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,24 @@
|
||||||
Empty.prototype.toDisplayedString = function (cache) { return "empty"; };
|
Empty.prototype.toDisplayedString = function (cache) { return "empty"; };
|
||||||
Empty.prototype.toString = function (cache) { return "()"; };
|
Empty.prototype.toString = function (cache) { return "()"; };
|
||||||
|
|
||||||
|
Empty.prototype.toDomNode = function(params) {
|
||||||
|
if (params.getMode() === "display") {
|
||||||
|
return $("<span/>").text("()").get(0);
|
||||||
|
} else if (params.getMode() === "write") {
|
||||||
|
return $("<span/>").text("()").get(0);
|
||||||
|
} else if (params.getMode() === "print") {
|
||||||
|
if (params.getDepth() === 0) {
|
||||||
|
return $("<span/>").text("'()").get(0);
|
||||||
|
} else {
|
||||||
|
return $("<span/>").text("()").get(0);
|
||||||
|
}
|
||||||
|
} else if (params.getMode() === "constructor") {
|
||||||
|
return $("<span/>").text("(list)").get(0);
|
||||||
|
} else {
|
||||||
|
return $("<span/>").text("()").get(0);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// Empty.append: (listof X) -> (listof X)
|
// Empty.append: (listof X) -> (listof X)
|
||||||
Empty.prototype.append = function (b) {
|
Empty.prototype.append = function (b) {
|
||||||
|
@ -131,25 +149,25 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Cons.prototype.toDomNode = function (cache) {
|
Cons.prototype.toDomNode = function (params) {
|
||||||
cache.put(this, true);
|
params.put(this, true);
|
||||||
var node = document.createElement("span");
|
var node = document.createElement("span");
|
||||||
node.appendChild(document.createTextNode("("));
|
node.appendChild(document.createTextNode("("));
|
||||||
var p = this;
|
var p = this;
|
||||||
while (p instanceof Cons) {
|
while (p instanceof Cons) {
|
||||||
node.appendChild(baselib.format.toDomNode(p.first, cache));
|
node.appendChild(params.recur(p.first));
|
||||||
p = p.rest;
|
p = p.rest;
|
||||||
if (p !== EMPTY) {
|
if (p !== EMPTY) {
|
||||||
node.appendChild(document.createTextNode(" "));
|
node.appendChild(document.createTextNode(" "));
|
||||||
}
|
}
|
||||||
if (typeof (p) === 'object' && cache.containsKey(p)) {
|
if (typeof (p) === 'object' && params.containsKey(p)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (p !== EMPTY) {
|
if (p !== EMPTY) {
|
||||||
node.appendChild(document.createTextNode("."));
|
node.appendChild(document.createTextNode("."));
|
||||||
node.appendChild(document.createTextNode(" "));
|
node.appendChild(document.createTextNode(" "));
|
||||||
node.appendChild(baselib.format.toDomNode(p, cache));
|
node.appendChild(params.recur(p));
|
||||||
}
|
}
|
||||||
|
|
||||||
node.appendChild(document.createTextNode(")"));
|
node.appendChild(document.createTextNode(")"));
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
$(node).append(document.createTextNode(this._constructorName));
|
$(node).append(document.createTextNode(this._constructorName));
|
||||||
for(i = 0; i < this._fields.length; i++) {
|
for(i = 0; i < this._fields.length; i++) {
|
||||||
$(node).append(document.createTextNode(" "));
|
$(node).append(document.createTextNode(" "));
|
||||||
$(node).append(baselib.format.toDomNode(this._fields[i], params));
|
$(node).append(params.recur(this._fields[i]));
|
||||||
}
|
}
|
||||||
$(node).append(document.createTextNode(")"));
|
$(node).append(document.createTextNode(")"));
|
||||||
return node;
|
return node;
|
||||||
|
|
|
@ -82,12 +82,12 @@
|
||||||
return "#(" + texts.join(" ") + ")";
|
return "#(" + texts.join(" ") + ")";
|
||||||
};
|
};
|
||||||
|
|
||||||
Vector.prototype.toDomNode = function (cache) {
|
Vector.prototype.toDomNode = function (params) {
|
||||||
var node = document.createElement("span"), i;
|
var node = document.createElement("span"), i;
|
||||||
cache.put(this, true);
|
params.put(this, true);
|
||||||
node.appendChild(document.createTextNode("#("));
|
node.appendChild(document.createTextNode("#("));
|
||||||
for (i = 0; i < this.length(); i++) {
|
for (i = 0; i < this.length(); i++) {
|
||||||
node.appendChild(baselib.format.toDomNode(this.ref(i), cache));
|
node.appendChild(params.recur(this.ref(i)));
|
||||||
if (i !== this.length() - 1) {
|
if (i !== this.length() - 1) {
|
||||||
node.appendChild(document.createTextNode(" "));
|
node.appendChild(document.createTextNode(" "));
|
||||||
}
|
}
|
||||||
|
|
|
@ -225,7 +225,7 @@
|
||||||
this.params = {
|
this.params = {
|
||||||
|
|
||||||
// print-as-expression: boolean
|
// print-as-expression: boolean
|
||||||
'print-as-expression' : true,
|
'print-as-expression' : false,
|
||||||
|
|
||||||
// print-mode: (one-of "write" "print" "constructor")
|
// print-mode: (one-of "write" "print" "constructor")
|
||||||
'print-mode' : 'write',
|
'print-mode' : 'write',
|
||||||
|
|
|
@ -46,7 +46,7 @@ var injectImageMethods = function(r, img) {
|
||||||
installHackToSupportAnimatedGifs(r);
|
installHackToSupportAnimatedGifs(r);
|
||||||
ctx.drawImage(r.animationHackImg, x, y);
|
ctx.drawImage(r.animationHackImg, x, y);
|
||||||
};
|
};
|
||||||
r.toDomNode = function() {
|
r.toDomNode = function(params) {
|
||||||
return img.cloneNode(true);
|
return img.cloneNode(true);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -95,7 +95,7 @@ WorldConfigOption.prototype.configure = function(config) {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
WorldConfigOption.prototype.toDomNode = function(cache) {
|
WorldConfigOption.prototype.toDomNode = function(params) {
|
||||||
var span = document.createElement('span');
|
var span = document.createElement('span');
|
||||||
span.appendChild(document.createTextNode("(" + this.name + " ...)"));
|
span.appendChild(document.createTextNode("(" + this.name + " ...)"));
|
||||||
return span;
|
return span;
|
||||||
|
@ -311,7 +311,7 @@ ToDraw.prototype.toRawHandler = function(MACHINE, toplevelNode) {
|
||||||
v.render(ctx, 0, 0);
|
v.render(ctx, 0, 0);
|
||||||
success([toplevelNode, reusableCanvasNode]);
|
success([toplevelNode, reusableCanvasNode]);
|
||||||
} else {
|
} else {
|
||||||
success([toplevelNode, rawJsworld.node_to_tree(plt.baselib.format.toDomNode(v))]);
|
success([toplevelNode, rawJsworld.node_to_tree(plt.baselib.format.toDomNode(v, MACHINE.params['print-mode']))]);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -346,7 +346,8 @@ DefaultDrawingOutput.prototype.toRawHandler = function(MACHINE, toplevelNode) {
|
||||||
var that = this;
|
var that = this;
|
||||||
var worldFunction = function(world, success) {
|
var worldFunction = function(world, success) {
|
||||||
success([toplevelNode,
|
success([toplevelNode,
|
||||||
rawJsworld.node_to_tree(plt.baselib.format.toDomNode(world))]);
|
rawJsworld.node_to_tree(plt.baselib.format.toDomNode(world,
|
||||||
|
MACHINE.params['print-mode']))]);
|
||||||
//k(rawJsworld.node_to_tree(plt.baselib.format.toDomNode(world)));
|
//k(rawJsworld.node_to_tree(plt.baselib.format.toDomNode(world)));
|
||||||
};
|
};
|
||||||
var cssFunction = function(w, success) { success([]); }
|
var cssFunction = function(w, success) { success([]); }
|
||||||
|
|
Loading…
Reference in New Issue
Block a user