From 8ef095c7196e10bcfe533851a26d162a730947e9 Mon Sep 17 00:00:00 2001 From: jmoenig Date: Fri, 21 Jun 2013 15:11:21 +0200 Subject: [PATCH] code mapping: pretty printing support (work-in-progress) commented out for now, not yet functional --- blocks.js | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/blocks.js b/blocks.js index 033af74b..942eae4b 100644 --- a/blocks.js +++ b/blocks.js @@ -2246,6 +2246,44 @@ BlockMorph.prototype.mappedCode = function () { return code; }; +/* // under construction - pretty printing +BlockMorph.prototype.mappedCode = function () { + var key = this.selector.substr(0, 5) === 'reify' ? + 'reify' : this.selector, + code, + codeLines, + count = 1, + parts = []; + code = key === 'reportGetVar' ? this.blockSpec + : this.definition ? this.definition.codeMapping || '' + : StageMorph.prototype.codeMappings[key] || ''; + codeLines = code.split('\n'); + this.inputs().forEach(function (input) { + parts.push(input.mappedCode()); + }); + parts.forEach(function (part) { + var partLines = part.split('\n'), + placeHolder = '<#' + count + '>', + rx = new RegExp(placeHolder, 'g'); + codeLines.forEach(function (codeLine) { + var prefix = '', + indent; + if (codeLine.trimLeft().startsWith(placeHolder)) { + indent = codeLine.indexOf(placeHolder); + prefix = codeLine.slice(0, indent); + } + code = codeLine.replace(new RexExp(placeHolder), part); + code = code.replace(rx, part); + }); + count += 1; + }); + if (this.nextBlock && this.nextBlock()) { // Command + code += this.nextBlock().mappedCode(); + } + return code; +}; +*/ + BlockMorph.prototype.codeMappingHeader = function () { var block = this.definition ? this.definition.blockInstance() : SpriteMorph.prototype.blockForSelector(this.selector),