1 | 'use strict';
|
2 |
|
3 | var path = require('path'),
|
4 | jade = require('gulp-jade'),
|
5 | rename = require('gulp-rename'),
|
6 | changed = require('gulp-changed');
|
7 |
|
8 | var getData = require('../utils/data');
|
9 |
|
10 | module.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 | };
|