// Generated by CoffeeScript 1.10.0
(function() {
  var Adapter, MinifyCSS, W,
    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
    hasProp = {}.hasOwnProperty;

  Adapter = require('../../adapter_base');

  W = require('when');

  MinifyCSS = (function(superClass) {
    var compile;

    extend(MinifyCSS, superClass);

    function MinifyCSS() {
      return MinifyCSS.__super__.constructor.apply(this, arguments);
    }

    MinifyCSS.prototype.name = 'minify-css';

    MinifyCSS.prototype.extensions = ['css'];

    MinifyCSS.prototype.output = 'css';

    MinifyCSS.prototype.supportedEngines = ['clean-css'];


    /**
     * It is sometimes isolated, but not always because you can get it to process
       `import` rules with `processImport`
     */

    MinifyCSS.prototype.isolated = false;

    MinifyCSS.prototype._render = function(str, options) {
      return compile((function(_this) {
        return function() {
          return (new _this.engine(options)).minify(str);
        };
      })(this));
    };

    compile = function(fn) {
      var err, error, res;
      try {
        res = fn();
      } catch (error) {
        err = error;
        return W.reject(err);
      }
      if (res.errors.length > 0) {
        W.reject(res);
      }
      return W.resolve({
        result: res.styles,
        warnings: res.warnings,
        stats: res.stats
      });
    };

    return MinifyCSS;

  })(Adapter);

  module.exports = MinifyCSS;

}).call(this);
