var gulp = require ( 'gulp' ) ;
var handlebars = require ( 'gulp-handlebars' ) ;
var declare = require ( 'gulp-declare' ) ;
var concat = require ( 'gulp-concat' ) ;
var wrap = require ( "gulp-wrap" ) ;
var livereload = require ( 'gulp-livereload' ) ;
var path = require ( 'path' ) ;
var streamqueue = require ( 'streamqueue' ) ;
var stripbom = require ( 'gulp-stripbom' ) ;
var paths = require ( './paths.js' ) ;
gulp . task ( 'handlebars' , function ( ) {
var coreStream = gulp . src ( [
paths . src . templates ,
'!*/**/*Partial.*'
] )
. pipe ( stripbom ( { showLog : false } ) )
. pipe ( handlebars ( ) )
. pipe ( declare ( {
namespace : 'T' ,
noRedeclare : true ,
processName : function ( filePath ) {
filePath = path . relative ( paths . src . root , filePath ) ;
return filePath . replace ( /\\/g , '/' )
. toLocaleLowerCase ( )
. replace ( 'template' , '' )
. replace ( '.js' , '' ) ;
}
} ) ) ;
var partialStream = gulp . src ( [ paths . src . partials ] )
. pipe ( stripbom ( { showLog : false } ) )
. pipe ( handlebars ( ) )
. pipe ( wrap ( 'Handlebars.template(<%= contents %>)' ) )
. pipe ( wrap ( 'Handlebars.registerPartial(<%= processPartialName(file.relative) %>, <%= contents %>)' , { } , {
imports : {
processPartialName : function ( fileName ) {
return JSON . stringify (
path . basename ( fileName , '.js' )
) ;
}
}
} ) ) ;
return streamqueue ( { objectMode : true } ,
partialStream ,
coreStream
) . pipe ( concat ( 'templates.js' ) )
. pipe ( gulp . dest ( paths . dest . root ) )
. pipe ( livereload ( ) ) ;
} ) ;