UNPKG

1.28 kBJavaScriptView Raw
1'use strict';
2
3var path = require('path'),
4 jade = require('gulp-jade'),
5 rename = require('gulp-rename'),
6 changed = require('gulp-changed');
7
8var getData = require('../utils/data');
9
10module.exports = function(options) {
11 var src = path.join(options.paths.views.cwd, options.paths.views.glob),
12 dest = path.join(options.paths.dest, options.paths.views.dest);
13
14 function compile(stream, onError) {
15 var locals = {
16 data: options.data || {}
17 };
18
19 options.paths.data.src
20 .forEach(function(data_src) {
21 var data = getData(data_src);
22
23 for (var key in data) {
24 locals.data[key] = data[key];
25 }
26 });
27
28 for (var fn in options.locals) {
29 locals[fn] = options.locals[fn];
30 }
31
32 return stream.pipe(jade({
33 pretty: true,
34 locals: locals,
35 basedir: process.cwd()
36 }).on('error', onError))
37 .pipe(rename(function(file) {
38 if (options.paths.views.ext !== '.html') {
39 file.extname = options.paths.views.ext;
40 }
41 }));
42 }
43
44 function ifChanged(stream, onError) {
45 return stream.pipe(changed(dest, {
46 extension: options.paths.views.ext
47 })).on('error', onError);
48 }
49
50 return {
51 src: src,
52 dest: dest,
53 pipe: compile,
54 check: ifChanged
55 };
56};