PageRenderTime 42ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/src/node-loaders/coffee-script.js

https://github.com/geekdave/blanket
JavaScript | 33 lines | 29 code | 4 blank | 0 comment | 1 complexity | a2f90c6399eeea5568df97f5673330a4 MD5 | raw file
Possible License(s): MIT
  1. var fs = require("fs"),
  2. path = require("path");
  3. module.exports = function(blanket){
  4. var coffeeScript = require("coffee-script");
  5. var oldLoaderCS = require.extensions['.coffee'];
  6. require.extensions['.coffee'] = function(localModule, filename) {
  7. var pattern = blanket.options("filter");
  8. filename = blanket.normalizeBackslashes(filename);
  9. if (blanket.matchPattern(filename,pattern)){
  10. var content = fs.readFileSync(filename, 'utf8');
  11. content = coffeeScript.compile(content);
  12. blanket.instrument({
  13. inputFile: content,
  14. inputFileName: filename
  15. },function(instrumented){
  16. var baseDirPath = blanket.normalizeBackslashes(path.dirname(filename))+'/.';
  17. try{
  18. instrumented = instrumented.replace(/require\s*\(\s*("|')\./g,'require($1'+baseDirPath);
  19. localModule._compile(instrumented, filename);
  20. }
  21. catch(err){
  22. console.log("Error parsing instrumented code: "+err);
  23. }
  24. });
  25. }else{
  26. oldLoaderCS(localModule,filename);
  27. }
  28. };
  29. };