fixing the printing of values

This commit is contained in:
Danny Yoo 2013-04-04 17:29:39 -06:00
parent efdfa015ad
commit 4860edf678
5 changed files with 55 additions and 33 deletions

View File

@ -277,11 +277,11 @@
var chunks = baselib.numbers.toRepeatingDecimal(baselib.numbers.numerator(n),
baselib.numbers.denominator(n),
{limit: 25});
repeatingDecimalNode.appendChild(document.createTextNode(chunks[0] + '.'));
repeatingDecimalNode.appendChild(document.createTextNode(chunks[1]));
repeatingDecimalNode.appendChild($('<span/>').text(chunks[0] + '.').get(0));
repeatingDecimalNode.appendChild($('<span/>').text(chunks[1]).get(0));
if (chunks[2] === '...') {
repeatingDecimalNode.appendChild(
document.createTextNode(chunks[2]));
$('<span/>').text(chunks[2]).get(0));
} else if (chunks[2] !== '0') {
var overlineSpan = document.createElement("span");
overlineSpan.style.textDecoration = 'overline';
@ -296,11 +296,12 @@
var denominatorNode = document.createElement("sub");
denominatorNode.appendChild(document.createTextNode(String(baselib.numbers.denominator(n))));
fractionalNode.appendChild(numeratorNode);
fractionalNode.appendChild(document.createTextNode("/"));
fractionalNode.appendChild($('<span/>').text('/').get(0));
fractionalNode.appendChild(denominatorNode);
var numberNode = document.createElement("span");
numberNode.className = "wescheme-number Rational";
numberNode.appendChild(repeatingDecimalNode);
numberNode.appendChild(fractionalNode);
fractionalNode.style['display'] = 'none';
@ -326,21 +327,25 @@
if (baselib.numbers.isExact(n)) {
if (baselib.numbers.isInteger(n)) {
node = document.createElement("span");
node.className = "wescheme-number Integer";
node.appendChild(document.createTextNode(n.toString()));
return node;
} else if (baselib.numbers.isRational(n)) {
return rationalToDomNode(n);
} else if (baselib.numbers.isComplex(n)) {
node = document.createElement("span");
node.className = "wescheme-number Complex";
node.appendChild(document.createTextNode(n.toString()));
return node;
} else {
node = document.createElement("span");
node.className = "wescheme-number";
node.appendChild(document.createTextNode(n.toString()));
return node;
}
} else {
node = document.createElement("span");
node.className = "wescheme-number";
node.appendChild(document.createTextNode(n.toString()));
return node;
}
@ -397,14 +402,14 @@
node = document.createTextNode(toDisplayedString(x));
}
wrapper.appendChild(node);
$(wrapper).addClass("string");
$(wrapper).addClass("wescheme-string");
return wrapper;
}
if (x === true || x === false) {
node = document.createElement("span");
node.appendChild(document.createTextNode(x ? "true" : "false"));
$(node).addClass("boolean");
$(node).addClass("wescheme-boolean");
return node;
}
@ -482,4 +487,4 @@
exports.toDomNode = toDomNode;
exports.escapeString = escapeString;
}(this.plt.baselib, jQuery));
}(this.plt.baselib, jQuery));

View File

@ -179,48 +179,51 @@
node = subelts[subelts.length - 1];
for (i = subelts.length - 2; i >= 0; i--) {
node = $('<span/>')
.text("(cons ")
.append($('<span/>').text("(").addClass('lParen'))
.append($('<span/>').text("cons"))
.append(" ")
.append(subelts[i])
.append(" ")
.append(node)
.append(")").get(0);
.append($('<span/>').text(")").addClass('rParen'))
.get(0);
}
return node;
} else {
node = document.createElement("span");
node.appendChild(document.createTextNode("("));
node.appendChild(document.createTextNode("list"));
node.appendChild(document.createTextNode(" "));
node.appendChild(subelts[0]);
node = $("<span/>").addClass("wescheme-cons");
node.append($('<span/>').text("(").addClass('lParen'));
node.append($('<span/>').text("list"));
node.append(" ");
node.append(subelts[0]);
for (i = 1; i < subelts.length; i++) {
node.appendChild(document.createTextNode(" "));
node.appendChild(subelts[i]);
node.append(" ");
node.append(subelts[i]);
}
node.appendChild(document.createTextNode(")"));
return node;
node.append($('<span/>').text(')').addClass('rParen'));
return node.get(0);
}
}
node = document.createElement('span');
node = $('<span/>').addClass("wescheme-cons");
if (params.getMode() === 'print') {
node.appendChild(document.createTextNode("'"));
node.append($("<span/>").text("'"));
}
node.appendChild(document.createTextNode("("));
node.appendChild(subelts[0]);
node.append($('<span/>').text('(').addClass('lParen'))
node.append(subelts[0]);
if (subelts.length > 1) {
for (i = 1; i < subelts.length - 1; i++) {
node.appendChild(document.createTextNode(" "));
node.appendChild(subelts[i]);
node.append(" ");
node.append(subelts[i]);
}
if (dottedPair) {
node.appendChild(document.createTextNode(" "));
node.appendChild(document.createTextNode("."));
node.append(" ");
node.append(".");
}
node.appendChild(document.createTextNode(" "));
node.appendChild(subelts[subelts.length - 1]);
node.append(" ");
node.append(subelts[subelts.length - 1]);
}
node.appendChild(document.createTextNode(")"));
return node;
node.append($('<span/>').text(")").addClass('rParen'));
return node.get(0);
};
@ -347,4 +350,4 @@
exports.listToArray = listToArray;
exports.arrayToList = arrayToList;
}(this.plt.baselib, jQuery));
}(this.plt.baselib, jQuery));

View File

@ -76,6 +76,14 @@
Str.prototype.toDisplayedString = Str.prototype.toString;
Str.prototype.toDomNode = function(params) {
return $("<span/>")
.text(escapeString(this.toString()))
.addClass('wescheme-string')
.get(0);
};
Str.prototype.copy = function () {
return Str.makeInstance(this.chars.slice(0));
};
@ -145,4 +153,4 @@
exports.isMutableString = isMutableString;
exports.makeMutableString = Str.makeInstance;
}(this.plt.baselib));
}(this.plt.baselib));

View File

@ -13,6 +13,7 @@
var Repl = function(options, afterSetup) {
this.M = plt.runtime.currentMachine;
this.M.params['print-mode'] = 'constructor';
this.compilerUrl = options.compilerUrl || 'rpc.html';
this._xhr = undefined;
if (options.write) { this.write = options.write; }
@ -89,6 +90,7 @@
M.reset();
// We configure the machine's output to send it to the
// "output" DOM node.
M.params['print-mode'] = 'constructor';
M.params.currentDisplayer = function(MACHINE, domNode) {
that.write(domNode);
};

View File

@ -63,4 +63,8 @@
;(for/hash ([(key path) module-mappings])
; (values key (path->string (file-name-from-path path))))
)
)
(module+ main
(write-repl-runtime-files))