/// <reference path="less.d.ts" />

import less = require("less");

less.render(".class { width: (1 + 1) }").then((output) => {
    console.log(output.css);
});

less.render("fail").then((output) => {
    throw new Error("promise should have been rejected");
}, (error: Less.RenderError) => {
    console.log("rejected as expected on line number " + error.line);
});

var preProcessor: Less.PreProcessor = {
    process: (src, extra) => {
        console.log(extra.imports, extra.context);
        if (extra.fileInfo.filename === "foo.less") {
            return ".other-rule { width: (1 + 1); }\n " + src;
        } else {
            return src;
        }
    }
};

var myPlugin: Less.Plugin = {
    install: (less, pluginManager) => {
        alert(less.version[2]);
        pluginManager.addPreProcessor(preProcessor, 1000);
    }
};

var options: Less.Options = {
    plugins: [myPlugin]
};

less.render("h1 { background: red; }", options);
