got the CoffeeScript-in-CoffeeScript REPL running, and boy is she fast

This commit is contained in:
Jeremy Ashkenas 2010-02-13 10:27:18 -05:00
parent b224d58a36
commit c88b1f6a15
6 changed files with 13 additions and 10 deletions

View File

@ -26,8 +26,8 @@
};
exports.VERSION = '0.5.0';
// Compile CoffeeScript to JavaScript, using the Coffee/Jison compiler.
exports.compile = function compile(code) {
return (parser.parse(lexer.tokenize(code))).compile();
exports.compile = function compile(code, options) {
return (parser.parse(lexer.tokenize(code))).compile(options);
};
// Just the tokens.
exports.tokenize = function tokenize(code) {

View File

@ -14,7 +14,7 @@
exports.run = function run() {
parse_options();
if (options.interactive) {
launch_repl();
return require('./repl');
}
if (!(sources.length)) {
usage();

View File

@ -11,7 +11,10 @@
};
// The main REPL function. Called everytime a line of code is entered.
readline = function readline(code) {
return coffee.ruby_compile(code, run);
return run(coffee.compile(code, {
no_wrap: true,
globals: true
}));
};
// Attempt to evaluate the command. If there's an exception, print it.
run = function run(js) {
@ -27,7 +30,7 @@
return print(prompt);
};
// Start up the REPL.
process.stdio.open();
process.stdio.addListener('data', readline);
process.stdio.open();
print(prompt);
})();

View File

@ -20,8 +20,8 @@ parser.lexer: {
exports.VERSION: '0.5.0'
# Compile CoffeeScript to JavaScript, using the Coffee/Jison compiler.
exports.compile: (code) ->
(parser.parse lexer.tokenize code).compile()
exports.compile: (code, options) ->
(parser.parse lexer.tokenize code).compile(options)
# Just the tokens.
exports.tokenize: (code) ->

View File

@ -35,7 +35,7 @@ option_parser: null
# The CommandLine handles all of the functionality of the `coffee` utility.
exports.run: ->
parse_options()
launch_repl() if options.interactive
return require './repl' if options.interactive
usage() unless sources.length
compile_scripts()
this

View File

@ -9,7 +9,7 @@ prompt: 'coffee> '
quit: -> process.stdio.close()
# The main REPL function. Called everytime a line of code is entered.
readline: (code) -> coffee.ruby_compile code, run
readline: (code) -> run coffee.compile code, {no_wrap: true, globals: true}
# Attempt to evaluate the command. If there's an exception, print it.
run: (js) ->
@ -21,6 +21,6 @@ run: (js) ->
print prompt
# Start up the REPL.
process.stdio.open()
process.stdio.addListener 'data', readline
process.stdio.open()
print prompt