Skip to content

Instantly share code, notes, and snippets.

@spikebrehm
Created May 23, 2013 00:43
Show Gist options
  • Save spikebrehm/5632016 to your computer and use it in GitHub Desktop.
Save spikebrehm/5632016 to your computer and use it in GitHub Desktop.
same script for generating views for @rendrjs
var prompt = require("prompt"),
fs = require('fs'),
pwd = process.env.PWD;
var args = process.argv.slice(2),
viewName = args.shift(),
uppercaseRe = /([A-Z])/g;
if (viewName) {
generateViewFiles(viewName);
} else {
prompt.start();
prompt.get({
properties: {
name: {
message: "What's the name of the view?"
}
}
}, function(err, result) {
generateViewFiles(result.name);
});
}
function generateViewFiles(name) {
var underscored;
underscored = underscorize(name);
makeTemplate(name, underscored);
makeView(name, underscored);
makeStylesheet(name, underscored);
}
function makeTemplate(name, underscored) {
makeFile('app/templates/' + underscored + '.hbs', '');
}
function makeView(name, underscored) {
makeFile('app/views/' + underscored + '.coffee',
"BaseView = require('./base_view')\n\n\
module.exports = class " + name + " extends BaseView\n\
@id = '" + name + "'\n\
className: '" + underscored + "'");
}
function makeStylesheet(name, underscored) {
makeFile('assets/stylesheets/views/' + underscored + '.styl', "." + underscored + " {\n\n}\n");
}
function makeFile(path, contents) {
fs.writeFileSync(pwd + '/' + path, contents);
console.log(('+ ' + path).green);
}
function underscorize(name) {
name = name.replace(uppercaseRe, function(char) { return "_" + char.toLowerCase(); });
if (name[0] === '_') {
name = name.slice(1);
}
return name;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment