/** * Составляет embed из выбранной директории */ if (process.argv.length <= 2) { console.log("Usage: " + __filename + " path/to/directory"); process.exit(-1); } var fs = require("fs"); var path = require("path"); var workingDir = process.argv[2] if (fs.lstatSync(workingDir).isDirectory() == false) { console.log("Error: " + __filename + " is not directory"); process.exit(-1); } var images = fs.readdirSync(workingDir).filter(isImage).map(getBaseName); var classes = images.map(getClassName); var embeds = []; for (var i = 0; i < images.length; i++) { embeds.push(generateEmbed(images[i], classes[i])); } var embedsConcat = embeds.join("\n"); console.log(embedsConcat); //console.log("images" + images.toString()); //console.log("classes " + classes.toString()); var template = fs.readFileSync("classTemplate.txt", {encoding:"UTF-8"}); //template = template.replace("{{embeds}}", embedTemplate); //console.log(template); function generateEmbed(fileName, className) { var embedTemplate = "[Embed(source = \"{{name}}\")] public static const {{className}}:Class;"; embedTemplate = embedTemplate.replace("{{name}}", fileName).replace("{{className}}", className); return embedTemplate; } function getClassName(str) { var extRemoved = str.split(".")[0]; var upper = toUpperCaseEachWord(extRemoved, "_"); console.log(upper); return upper; } function getBaseName(str) { return path.basename(str); } function isImage(str) { var ext = extension(str); return ext == "jpg" || ext == "png" } function extension(str) { var arr = str.split("."); return arr[arr.length-1]; } function toUpperCaseEachWord( str, delim ) { delim = delim ? delim : ' '; return str.split( delim ).map( function(v) { return toUpperCaseFirstChar(v) } ).join(""); } function toUpperCaseFirstChar( str ) { return str.substr( 0, 1 ).toUpperCase() + str.substr( 1 ); }