register.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Generated by CoffeeScript 1.12.6
  2. (function() {
  3. var CoffeeScript, Module, binary, child_process, ext, findExtension, fork, helpers, i, len, loadFile, path, ref;
  4. CoffeeScript = require('./coffee-script');
  5. child_process = require('child_process');
  6. helpers = require('./helpers');
  7. path = require('path');
  8. loadFile = function(module, filename) {
  9. var answer;
  10. answer = CoffeeScript._compileFile(filename, false, true);
  11. return module._compile(answer, filename);
  12. };
  13. if (require.extensions) {
  14. ref = CoffeeScript.FILE_EXTENSIONS;
  15. for (i = 0, len = ref.length; i < len; i++) {
  16. ext = ref[i];
  17. require.extensions[ext] = loadFile;
  18. }
  19. Module = require('module');
  20. findExtension = function(filename) {
  21. var curExtension, extensions;
  22. extensions = path.basename(filename).split('.');
  23. if (extensions[0] === '') {
  24. extensions.shift();
  25. }
  26. while (extensions.shift()) {
  27. curExtension = '.' + extensions.join('.');
  28. if (Module._extensions[curExtension]) {
  29. return curExtension;
  30. }
  31. }
  32. return '.js';
  33. };
  34. Module.prototype.load = function(filename) {
  35. var extension;
  36. this.filename = filename;
  37. this.paths = Module._nodeModulePaths(path.dirname(filename));
  38. extension = findExtension(filename);
  39. Module._extensions[extension](this, filename);
  40. return this.loaded = true;
  41. };
  42. }
  43. if (child_process) {
  44. fork = child_process.fork;
  45. binary = require.resolve('../../bin/coffee');
  46. child_process.fork = function(path, args, options) {
  47. if (helpers.isCoffee(path)) {
  48. if (!Array.isArray(args)) {
  49. options = args || {};
  50. args = [];
  51. }
  52. args = [path].concat(args);
  53. path = binary;
  54. }
  55. return fork(path, args, options);
  56. };
  57. }
  58. }).call(this);