-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
executable file
·120 lines (94 loc) · 2.6 KB
/
gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
process.env.TZ = 'Europe/Amsterdam';
var requireDir = require('require-dir');
var path = require('path');
var site = {
pages: [],
posts: [],
authors: [],
pagesMap: {},
postsMap: {},
authorsMap: {},
authors_order: [],
pages_order: []
};
global.site = site;
function pureName(name) {
['.hbs', '.md', '.markdown', '.html'].forEach(function(ext) {
name = path.basename(name, ext);
});
return name;
}
site.pureName = pureName;
function buildPostMetaData(name, fm) {
fm.url += '.html';
fm.title = titleCaps(fm.title);
fm.full_url = site.url + fm.url;
return fm;
}
site.buildPostMetaData = buildPostMetaData;
function fUpper(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
site.fUpper = fUpper;
/*
* Title Caps
*
* Ported to JavaScript By John Resig - http://ejohn.org/ - 21 May 2008
* Original by John Gruber - http://daringfireball.net/ - 10 May 2008
* License: http://www.opensource.org/licenses/mit-license.php
*/
var small = '(a|an|and|as|at|but|by|en|for|if|in|of|on|or|the|to|v[.]?|via|vs[.]?)';
var punct = '([!"#$%&\'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]*)';
var titleCaps = function(title) {
var parts = [];
var split = /[:.;?!] |(?: |^)["Ò]/g;
var index = 0;
var punct = function(all, punct, word) {
return punct + upper(word);
};
var test = function(all) {
return /[A-Za-z]\.[A-Za-z]/.test(all) ? all : upper(all);
};
while (true) {
var m = split.exec(title);
parts.push(title.substring(index, m ? m.index : title.length)
.replace(/\b([A-Za-z][a-z.'Õ]*)\b/g, test)
.replace(RegExp('\\b' + small + '\\b', 'ig'), lower)
.replace(RegExp('^' + punct + small + '\\b', 'ig'), punct)
.replace(RegExp('\\b' + small + punct + '$', 'ig'), upper));
index = split.lastIndex;
if (m) parts.push(m[0]);
else break;
}
return parts.join('').replace(/ V(s?)\. /ig, ' v$1. ')
.replace(/(['Õ])S\b/ig, '$1s')
.replace(/\b(AT&T|Q&A)\b/ig, function(all) {
return all.toUpperCase();
});
};
function lower(word) {
return word.toLowerCase();
}
function upper(word) {
return word.substr(0, 1).toUpperCase() + word.substr(1);
}
site.titleCaps = titleCaps;
var yaml = require('js-yaml');
var fs = require('fs');
var _ = require('lodash');
try {
var doc = yaml.safeLoad(fs.readFileSync(process.cwd() + '/config.yml', 'utf-8'));
_.merge(site, doc);
if (!site.pages_order) {
site.pages_order = [];
}
} catch (e) {
console.log(e);
}
requireDir('./tasks');
try {
requireDir('./user_tasks');
console.log('Using user tasks');
} catch (err) {
console.log('Error loading user tasks ' + err);
}