Makes your code tell you what the intermediate results are when executing a script.

npm install scriptie-talkie
1 downloads in the last day
10 downloads in the last week
84 downloads in the last month

scriptie-talkie build status

Makes your code tell you what the intermediate results are when executing a script.

try it in the browser

var a = 3;

a = a + 1;

var b = 2;
b = b + a;



npm install scriptie-talkie

(Add -g to install as global command line tool)

Command Line Tool

scriptie-talkie a file

scriptie-talkie path/to/script.js

Prints the highlighted code of script.js with intermediate results.

piping into scriptie-talkie

curl | scriptie-talkie

Prints the highlighted code of ansicolors.js with intermediate results.

Note that in this case require statements cannot be resolved.


scriptie-talkie(script, scriptPath, opts)

 * Evaluates all snippets in the given script and calls opts.write with the result.
 * @name exports
 * @function
 * @param script {String} The String to evaluate.
 * @param scriptPath {String} The path to the script (important to resolve require statements)
 * @param opts {Object} { 
 *    toLines: function(code:String) -> [String] - to split script into lines -- uses cardinal syntax highlighter by default
 *    write  : function(result:String) - to be called to write the result -- default console.log
 *    diff   : { joinLinesAt: at what point is diff compacted to one line               -- default 20
 *             , maxLineLength: at which length is a diff line cut of with an ellipsis  -- default 380
 *             }
var talk    =  require('scriptie-talkie')
  , fs      =  require('fs');
  ,  script =  fs.readFileSync(scriptPath, 'utf-8');

talk(script, scriptPath, { write: console.error, { diff: { joinLinesAt: 80 } });

browser support

scriptie-talkie does work in the browser as long as a vm and Buffer module is available. Additionally the presence of a process with process.browser = true is essential.

The easiest way to build an application that uses sciptie-talkie via browserify as I did in this example. The above mentioned live sample was built like that.


More Examples

var o = { a: 1 };

o.a = 2;


var a = 3;

a + b;

var b = 2;



var a = 1;

function foo () {
  return a++;
foo() + 1;


npm loves you