0.0.8 • Published 11 years ago

projmate-filters v0.0.8

Weekly downloads
-
License
-
Repository
-
Last release
11 years ago

projmate-filters

Projmate supported filters.

Filters

FilterDescription
addHeaderAdds buffer header.
catConcatenates one or more buffers.
coffeeCompiles CoffeeScript.
commonJsifyCreates browser-compatible CommonJS package. Based on stitch.
functoidCreate ad-hoc filters.
lessCompile less scripts.
loadFilesLoads files into buffers.
writeFileWrites files to file system.

Projmate filter v GruntJS plugin

Projmate filter

module.exports = (Projmate) ->
  class Coffee extends Projmate.Filter
    extnames: ".coffee"
    outExtname: ".js"

    process: (asset, options, cb) ->
      try
        js = coffee.compile(asset.text, options)
        cb null, js
      catch ex
        cb ex

GruntJS plugin. Yikes, almost like sbt v Maven.

module.exports = function(grunt) {
  'use strict';

  grunt.registerMultiTask('coffee', 'Compile CoffeeScript files into JavaScript', function() {
    var path = require('path');

    var options = this.options({
      bare: false,
      separator: grunt.util.linefeed
    });

    if (options.basePath || options.flatten) {
      grunt.fail.warn('Experimental destination wildcards are no longer supported. please refer to README.');
    }

    grunt.verbose.writeflags(options, 'Options');

    this.files.forEach(function(f) {
      var output = f.src.filter(function(filepath) {
        // Warn on and remove invalid source files (if nonull was set).
        if (!grunt.file.exists(filepath)) {
          grunt.log.warn('Source file "' + filepath + '" not found.');
          return false;
        } else {
          return true;
        }
      }).map(function(filepath) {
        return compileCoffee(filepath, options);
      }).join(grunt.util.normalizelf(options.separator));

      if (output.length < 1) {
        grunt.log.warn('Destination not written because compiled files were empty.');
      } else {
        grunt.file.write(f.dest, output);
        grunt.log.writeln('File ' + f.dest + ' created.');
      }
    });
  });

  var compileCoffee = function(srcFile, options) {
    options = grunt.util._.extend({filename: srcFile}, options);

    if (require('path').extname(srcFile) === '.litcoffee') {
      options.literate = true;
    }

    var srcCode = grunt.file.read(srcFile);

    try {
      return require('coffee-script').compile(srcCode, options);
    } catch (e) {
      grunt.log.error(e);
      grunt.fail.warn('CoffeeScript failed to compile.');
    }
  };
};

License

Copyright (c) 2013 Mario Gutierrez mario@projmate.com

See the file LICENSE for copying permission.