mirror of
https://github.com/jashkenas/coffeescript.git
synced 2026-04-11 03:00:13 -04:00
30 lines
963 B
CoffeeScript
30 lines
963 B
CoffeeScript
# A very simple Read-Eval-Print-Loop. Compiles one line at a time to JavaScript
|
|
# and evaluates it. Good for simple tests, or poking around the **Node.js** API.
|
|
# Using it looks like this:
|
|
#
|
|
# coffee> puts "$num bottles of beer" for num in [99..1]
|
|
|
|
# Require the **coffee-script** module to get access to the compiler.
|
|
CoffeeScript: require 'coffee-script'
|
|
|
|
# Our prompt.
|
|
prompt: 'coffee> '
|
|
|
|
# Quick alias for quitting the REPL.
|
|
quit: -> process.exit(0)
|
|
|
|
# The main REPL function. **run** is called every time a line of code is entered.
|
|
# Attempt to evaluate the command. If there's an exception, print it out instead
|
|
# of exiting.
|
|
run: (code) ->
|
|
try
|
|
val: eval CoffeeScript.compile code, {no_wrap: true, globals: true}
|
|
p val if val isnt undefined
|
|
catch err
|
|
puts err.stack or err.toString()
|
|
print prompt
|
|
|
|
# Start up the REPL by opening **stdio** and listening for input.
|
|
process.stdio.addListener 'data', run
|
|
process.stdio.open()
|
|
print prompt |