Skip to content

thlorenz/scriptie-talkie

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
bin
 
 
 
 
 
 
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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;
a++;

var b = 2;
b = b + a;

changing-var

Installation

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 https://raw.github.com/thlorenz/ansicolors/master/ansicolors.js | scriptie-talkie

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

Note that in this case require statements cannot be resolved.

API

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.

Roadmap

More Examples

var o = { a: 1 };

o.a = 2;

objects-simple

var a = 3;

a + b;

var b = 2;

console.log(b.hello());

error

var a = 1;
foo();

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

function-call-before-declaration.png

About

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

Resources

Stars

Watchers

Forks

Packages

No packages published