forked from HubSpot/youmightnotneedjquery
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.coffee
66 lines (48 loc) · 1.49 KB
/
gulpfile.coffee
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
gulp = require('gulp')
stylus = require('gulp-stylus')
jade = require('gulp-jade')
coffee = require('gulp-coffee')
readTree = require('./readTree')
CAPS_WORDS = ['JSON', 'HTML', 'AJAX']
titleCase = (str) ->
str = str.replace /(^|\b)([a-z])([a-z]+)/g, (match, space, first, rest) ->
"#{ space }#{ first.toUpperCase() }#{ rest }"
str = str.replace new RegExp("(?:^|\b)(#{ CAPS_WORDS.join('|') })(?:$|\b)", 'ig'), (match, word) ->
word.toUpperCase()
str
getNamePart = (str) ->
str.split('.')[0]
fullLanguage = (ext) ->
LANGS =
js: 'javascript'
css: 'css'
LANGS[ext]
gulp.task 'coffee', ->
gulp.src('./coffee/*')
.pipe(coffee())
.pipe(gulp.dest('./js/'))
gulp.task 'stylus', ->
gulp.src('./styl/index.styl')
.pipe(stylus({use: ['nib']}))
.pipe(gulp.dest('./css/'))
gulp.task 'jade', ->
readTree (err, comparisons) ->
if err
console.error "Error loading comparisons tree", err
return
comps = []
for title, comparison of comparisons
comps.push {title, comparison}
comps.sort (a, b) ->
a.title.localeCompare b.title
gulp.src('./jade/**/index.jade')
.pipe(jade({pretty: true, data: {comparisons: comps, titleCase, getNamePart, fullLanguage}}))
.pipe(gulp.dest('./'))
gulp.task 'default', ->
gulp.run 'coffee', 'stylus', 'jade'
gulp.watch './coffee/*', ->
gulp.run 'coffee'
gulp.watch './styl/*', ->
gulp.run 'stylus'
gulp.watch ['./jade/**/*.jade', './comparisons/**/*'], ->
gulp.run 'jade'