// Generated by CoffeeScript 1.12.1
(function() {
  var Adapter, Myth, W, convert,
    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');

  convert = require('convert-source-map');

  W = require('when');

  Myth = (function(superClass) {
    var compile;

    extend(Myth, superClass);

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

    Myth.prototype.name = 'myth';

    Myth.prototype.extensions = ['myth', 'mcss'];

    Myth.prototype.output = 'css';

    Myth.prototype._render = function(str, options) {
      options.source = options.filename;
      delete options.filename;
      return compile(options.sourcemap, ((function(_this) {
        return function() {
          return _this.engine(str, options);
        };
      })(this)));
    };

    compile = function(sourcemap, fn) {
      var data, err, map, res, src;
      try {
        res = fn();
      } catch (error) {
        err = error;
        return W.reject(err);
      }
      data = {
        result: res
      };
      if (sourcemap) {
        map = convert.fromSource(res).sourcemap;
        src = convert.removeComments(res);
        data = {
          result: src,
          sourcemap: map
        };
      }
      return W.resolve(data);
    };

    return Myth;

  })(Adapter);

  module.exports = Myth;

}).call(this);
