Merging in 1035 fix. fileName -> filename ... a bit of refactoring.

This commit is contained in:
Jeremy Ashkenas 2011-01-15 10:46:53 -05:00
parent ba45dedbd5
commit 7c7b9a4be1
11 changed files with 44 additions and 38 deletions

View File

@ -212,11 +212,11 @@ runTests = (CoffeeScript) ->
fs.readdir 'test', (err, files) ->
files.forEach (file) ->
return unless file.match(/\.coffee$/i)
fileName = path.join 'test', file
fs.readFile fileName, (err, code) ->
currentFile = fileName
filename = path.join 'test', file
fs.readFile filename, (err, code) ->
currentFile = filename
try
CoffeeScript.run code.toString(), {fileName}
CoffeeScript.run code.toString(), {filename}
catch e
failures.push file: currentFile, error: e

View File

@ -1,4 +1,4 @@
for fileName in list
do (fileName) ->
fs.readFile fileName, (err, contents) ->
compile fileName, contents.toString()
for filename in list
do (filename) ->
fs.readFile filename, (err, contents) ->
compile filename, contents.toString()

View File

@ -39,7 +39,7 @@
}
args = process.argv.slice(2);
CoffeeScript.run(fs.readFileSync('Cakefile').toString(), {
fileName: 'Cakefile'
filename: 'Cakefile'
});
oparse = new optparse.OptionParser(switches);
if (!args.length) {

View File

@ -25,8 +25,8 @@
try {
return (parser.parse(lexer.tokenize(code))).compile(options);
} catch (err) {
if (options.fileName) {
err.message = "In " + options.fileName + ", " + err.message;
if (options.filename) {
err.message = "In " + options.filename + ", " + err.message;
}
throw err;
}
@ -47,7 +47,7 @@
while (root.parent) {
root = root.parent;
}
root.filename = options.fileName ? fs.realpathSync(options.fileName) : '.';
root.filename = options.filename ? fs.realpathSync(options.filename) : '.';
if (root.moduleCache) {
root.moduleCache = {};
}
@ -59,7 +59,7 @@
};
exports.eval = function(code, options) {
var __dirname, __filename;
__filename = module.filename = options.fileName;
__filename = module.filename = options.filename;
__dirname = path.dirname(__filename);
return eval(compile(code, options));
};

View File

@ -1,5 +1,5 @@
(function() {
var BANNER, CoffeeScript, EventEmitter, SWITCHES, compileJoin, compileOptions, compileScript, compileScripts, compileStdio, contents, exec, forkNode, fs, helpers, lint, optionParser, optparse, opts, parseOptions, path, printLine, printTokens, printWarn, sources, spawn, usage, util, version, watch, writeJs, _ref;
var BANNER, CoffeeScript, EventEmitter, SWITCHES, compileJoin, compileOptions, compileScript, compileScripts, compileStdio, contents, exec, forkNode, fs, helpers, lint, loadRequires, optionParser, optparse, opts, parseOptions, path, printLine, printTokens, printWarn, sources, spawn, usage, util, version, watch, writeJs, _ref;
fs = require('fs');
path = require('path');
util = require('util');
@ -22,7 +22,6 @@
contents = [];
optionParser = null;
exports.run = function() {
var oldModuleFilename, req, _i, _len, _ref;
parseOptions();
if (opts.nodejs) {
return forkNode();
@ -34,14 +33,7 @@
return version();
}
if (opts.require) {
oldModuleFilename = module.filename;
module.filename = '.';
_ref = opts.require;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
req = _ref[_i];
require(req);
}
module.filename = oldModuleFilename;
loadRequires();
}
if (opts.interactive) {
return require('./repl');
@ -163,6 +155,17 @@
code = contents.join('\n');
return compileScript("concatenation", code, "concatenation");
};
loadRequires = function() {
var realFilename, req, _i, _len, _ref;
realFilename = module.filename;
module.filename = '.';
_ref = opts.require;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
req = _ref[_i];
require(req);
}
return module.filename = realFilename;
};
watch = function(source, base) {
return fs.watchFile(source, {
persistent: true,
@ -241,9 +244,9 @@
o.print = !!(o.print || (o.eval || o.stdio && o.compile));
return sources = o.arguments;
};
compileOptions = function(fileName) {
compileOptions = function(filename) {
return {
fileName: fileName,
filename: filename,
bare: opts.bare
};
};

View File

@ -18,7 +18,7 @@
val = CoffeeScript.eval(buffer.toString(), {
bare: true,
globals: true,
fileName: 'repl'
filename: 'repl'
});
if (val !== void 0) {
console.log(val);

View File

@ -47,7 +47,7 @@ exports.run = ->
path.exists 'Cakefile', (exists) ->
throw new Error("Cakefile not found in #{process.cwd()}") unless exists
args = process.argv.slice 2
CoffeeScript.run fs.readFileSync('Cakefile').toString(), fileName: 'Cakefile'
CoffeeScript.run fs.readFileSync('Cakefile').toString(), filename: 'Cakefile'
oparse = new optparse.OptionParser switches
return printTasks() unless args.length
options = oparse.parse(args)

View File

@ -34,7 +34,7 @@ exports.compile = compile = (code, options = {}) ->
try
(parser.parse lexer.tokenize code).compile options
catch err
err.message = "In #{options.fileName}, #{err.message}" if options.fileName
err.message = "In #{options.filename}, #{err.message}" if options.filename
throw err
# Tokenize a string of CoffeeScript code, and return the array of tokens.
@ -58,7 +58,7 @@ exports.run = (code, options) ->
while root.parent
root = root.parent
# Set the filename.
root.filename = if options.fileName then fs.realpathSync(options.fileName) else '.'
root.filename = if options.filename then fs.realpathSync(options.filename) else '.'
# Clear the module cache.
root.moduleCache = {} if root.moduleCache
# Compile.
@ -70,7 +70,7 @@ exports.run = (code, options) ->
# Compile and evaluate a string of CoffeeScript (in a Node.js-like environment).
# The CoffeeScript REPL uses this to run the input.
exports.eval = (code, options) ->
__filename = module.filename = options.fileName
__filename = module.filename = options.filename
__dirname = path.dirname __filename
eval compile code, options

View File

@ -59,11 +59,7 @@ exports.run = ->
return forkNode() if opts.nodejs
return usage() if opts.help
return version() if opts.version
if opts.require
oldModuleFilename = module.filename
module.filename = '.'
require req for req in opts.require
module.filename = oldModuleFilename
loadRequires() if opts.require
return require './repl' if opts.interactive
return compileStdio() if opts.stdio
return compileScript null, sources[0] if opts.eval
@ -138,6 +134,13 @@ compileJoin = ->
code = contents.join '\n'
compileScript "concatenation", code, "concatenation"
# Load files that are to-be-required before compilation occurs.
loadRequires = ->
realFilename = module.filename
module.filename = '.'
require req for req in opts.require
module.filename = realFilename
# Watch a source CoffeeScript file using `fs.watchFile`, recompiling it every
# time the file is updated. May be used in combination with other options,
# such as `--lint` or `--print`.
@ -194,7 +197,7 @@ parseOptions = ->
sources = o.arguments
# The compile-time options to pass to the CoffeeScript compiler.
compileOptions = (fileName) -> {fileName, bare: opts.bare}
compileOptions = (filename) -> {filename, bare: opts.bare}
# Start up a new Node.js instance with the arguments in `--nodejs` passed to
# the `node` binary, preserving the other options.

View File

@ -24,7 +24,7 @@ helpers.extend global, quit: -> process.exit(0)
# of exiting.
run = (buffer) ->
try
val = CoffeeScript.eval buffer.toString(), bare: on, globals: on, fileName: 'repl'
val = CoffeeScript.eval buffer.toString(), bare: on, globals: on, filename: 'repl'
console.log val if val isnt undefined
catch err
error err

View File

@ -14,7 +14,7 @@ doesNotThrow -> CoffeeScript.compile 'one\r\ntwo', bare: on
# `globals: on` removes `var`s
eq -1, CoffeeScript.compile('x = y', bare: on, globals: on).indexOf 'var'
ok 'passed' is CoffeeScript.eval '"passed"', bare: on, fileName: 'test'
ok 'passed' is CoffeeScript.eval '"passed"', bare: on, filename: 'test'
# multiple generated references
(->