simplestyle
Version:
Simple Style Guide Tool based on Atomic Web Design
62 lines (54 loc) • 1.95 kB
JavaScript
var gulp = require('gulp'),
gs = require('glob-stream'),
chalk = require('chalk'),
plumber = require('gulp-plumber'),
path = require('path'),
handlebars = require('gulp-handlebars'),
wrap = require('gulp-wrap'),
declare = require('gulp-declare'),
concat = require('gulp-concat'),
merge = require('merge-stream');
module.exports = function(patternConfig) {
'use strict';
var callDir = process.cwd();
var hbOptions = {
handlebars: require('handlebars')
};
var config = require(process.cwd() + '/gulp.config.js');
// partials stream
var partials = gulp.src(patternConfig.partials)
.pipe(plumber())
// handlebars
.pipe(handlebars(hbOptions))
// wrap inline javascript
.pipe(wrap('Handlebars.registerPartial(<%= imports.processPartialName(file.relative) %>,' +
'Handlebars.template(<%= contents %>));', {}, {
imports: {
processPartialName: function(fileName) {
var patternName = path.basename(fileName, '.js');
if (patternName.indexOf("_") === 0) {
patternName = patternName.substr(1);
}
return JSON.stringify(patternName);
}
}
}));
// template stream
var templates = gulp.src(patternConfig.templates)
.pipe(plumber())
// handlebars
.pipe(handlebars(hbOptions))
// wrap
.pipe(wrap('Handlebars.template(<%= contents %>)'))
// namespace
.pipe(declare({
namespace: patternConfig.namespace,
noRedeclare: true
}));
// return merge
return merge(partials, templates)
// concat
.pipe(concat(patternConfig.namespace + '.js'))
// build
.pipe(gulp.dest('./' + config.tempFiles + 'scripts'));
};