You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.9 KiB
63 lines
1.9 KiB
define(function() {
|
|
"use strict";
|
|
|
|
var jade = null,
|
|
builds = {};
|
|
|
|
var fetchText = function() {
|
|
throw new Error("Environment not supported.");
|
|
};
|
|
|
|
if (typeof process !== "undefined") {
|
|
var fs = require.nodeRequire("fs");
|
|
jade = require.nodeRequire("jade");
|
|
fetchText = function(path, callback) {
|
|
callback(fs.readFileSync(path, "utf-8"));
|
|
};
|
|
} else if ((typeof window !== "undefined" && window.navigator && window.document) || typeof importScripts !== "undefined") {
|
|
fetchText = function (url, callback) {
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.open('GET', url, true);
|
|
xhr.onreadystatechange = function() {
|
|
if (xhr.readyState === 4) {
|
|
callback(xhr.responseText);
|
|
}
|
|
};
|
|
xhr.send(null);
|
|
};
|
|
}
|
|
|
|
return {
|
|
|
|
fetchText: fetchText,
|
|
|
|
load: function(name, req, onload, config) {
|
|
var path = req.toUrl(name + ".jade");
|
|
fetchText(path, function(text) {
|
|
if (jade === null) {
|
|
req(["libjs-jade"], function(jade) {
|
|
onload(jade.compileClient(text));
|
|
onload(text);
|
|
});
|
|
} else {
|
|
builds[name] = jade.compileClient(text);
|
|
onload(builds[name]);
|
|
}
|
|
});
|
|
|
|
},
|
|
write: function(plugin, name, write) {
|
|
if (builds.hasOwnProperty(name)) {
|
|
write("define('" + plugin + "!" + name +"', function () {" +
|
|
" var wfn = function (jade) {" +
|
|
" var fn = " + builds[name] + ";" +
|
|
" return fn;" +
|
|
" };" +
|
|
"wfn.compiled = true;" +
|
|
"return wfn;" +
|
|
"});\n");
|
|
}
|
|
}
|
|
};
|
|
});
|