Skip to content

Instantly share code, notes, and snippets.

@umi-uyura
Created December 17, 2013 16:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save umi-uyura/8007278 to your computer and use it in GitHub Desktop.
Save umi-uyura/8007278 to your computer and use it in GitHub Desktop.
Alloy with StylusでFontも設定(改良記法)できるようにしたもの
task("pre:compile", function(event, logger) {
var wrench = require("wrench"),
fs = require("fs"),
path = require("path"),
styl = require("stylus"),
style_root = event.dir.styles;
event.alloyConfig.stylus = [];
var compileTSS = function(root, target) {
var data = fs.readFileSync(path.join(root, target), "utf8"),
tss;
styl.render(data, function(err, css) {
css = css.replace(/;/gi, ",");
css = css.replace(/\}/gi, "},");
css = css.replace(/(.+?).?\{/gi, "\"$1\": {");
css = css.replace(/,\n\},/gi, "\n\}");
css = css.replace(/\}\n\"/gi, "\},\n\"");
css = css.replace(/['"]expr(.+?)['"]/gi, "expr$1");
css = css.replace(/['"]Ti(.+?)['"]/gi, "Ti$1");
css = css.replace(/['"]Titanium(.+?)['"]/gi, "Titanium$1");
css = css.replace(/['"]Alloy(.+?)['"]/gi, "Alloy$1");
tss = css;
});
var tss2 = [];
tss.split("\n").forEach(function(line) {
if (line.match(/font:/)) {
var fontObj = RegExp.rightContext.replace(/(^\s+)|(\s+$)/g, "");
var closeBrace = " }";
if (fontObj.match(/,$/)) {
closeBrace = closeBrace + ",";
fontObj = fontObj.replace(/,$/, "");
}
tss2.push(" font: {");
var fontObjArray = fontObj.split(",");
for (var i = 0; i < fontObjArray.length; i++) {
var f = fontObjArray[i].replace(/(^\s+)|(\s+$)/g, "").replace(/ /, ":");
if (1 < fontObjArray.length && i < (fontObjArray.length - 1)) {
f = f + ",";
}
tss2.push(" " + f);
}
tss2.push(closeBrace);
} else {
tss2.push(line);
}
});
return tss2.join("\n");
}
wrench.readdirSyncRecursive(style_root).forEach(function(view) {
if (view.match("styl$")) {
var tss = compileTSS(style_root, view);
event.alloyConfig.stylus.push(view.replace(/\.styl$/, ".tss"));
fs.writeFileSync(path.join(style_root, view.replace("styl", "tss")), tss);
}
});
});
task("post:compile", function(event, logger) {
var fs = require("fs"),
style_root = event.dir.styles;
if (event.alloyConfig.deploytype != "development") {
event.alloyConfig.stylus.forEach(function(target) {
fs.unlinkSync(style_root + "/" + target);
});
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment