@@ -14,9 +14,12 @@ var diveSync = require('diveSync'),
14
14
glob = require ( 'glob' ) ,
15
15
_ = require ( 'lodash' ) ,
16
16
path = require ( 'path' ) ,
17
+ inherits = require ( 'util' ) . inherits ,
17
18
pm = require ( './plugin_manager' ) ,
18
19
plutils = require ( './utilities' ) ;
19
20
21
+ var EventEmitter = require ( 'events' ) . EventEmitter ;
22
+
20
23
function buildPatternData ( dataFilesPath , fs ) {
21
24
var dataFilesPath = dataFilesPath ;
22
25
var dataFiles = glob . sync ( dataFilesPath + '*.json' , { "ignore" : [ dataFilesPath + 'listitems.json' ] } ) ;
@@ -88,6 +91,11 @@ function initializePlugins(patternlab) {
88
91
}
89
92
}
90
93
94
+ function PatternLabEventEmitter ( ) {
95
+ EventEmitter . call ( this ) ;
96
+ }
97
+ inherits ( PatternLabEventEmitter , EventEmitter ) ;
98
+
91
99
var patternlab_engine = function ( config ) {
92
100
'use strict' ;
93
101
@@ -102,8 +110,11 @@ var patternlab_engine = function (config) {
102
110
103
111
patternlab . package = fs . readJSONSync ( path . resolve ( __dirname , '../../package.json' ) ) ;
104
112
patternlab . config = config || fs . readJSONSync ( path . resolve ( __dirname , '../../patternlab-config.json' ) ) ;
113
+ patternlab . events = new PatternLabEventEmitter ( ) ;
105
114
106
115
checkConfiguration ( patternlab ) ;
116
+
117
+ //todo: determine if this is the best place to wire up plugins
107
118
initializePlugins ( patternlab ) ;
108
119
109
120
var paths = patternlab . config . paths ;
@@ -207,6 +218,9 @@ var patternlab_engine = function (config) {
207
218
}
208
219
209
220
function buildPatterns ( deletePatternDir ) {
221
+
222
+ patternlab . events . emit ( 'patternlab-build-pattern-start' , patternlab ) ;
223
+
210
224
try {
211
225
patternlab . data = buildPatternData ( paths . source . data , fs ) ;
212
226
} catch ( ex ) {
@@ -244,9 +258,13 @@ var patternlab_engine = function (config) {
244
258
245
259
pattern_assembler . combine_listItems ( patternlab ) ;
246
260
261
+ patternlab . events . emit ( 'patternlab-build-global-data-end' , patternlab ) ;
262
+
247
263
// diveSync once to perform iterative populating of patternlab object
248
264
processAllPatternsIterative ( pattern_assembler , patterns_dir , patternlab ) ;
249
265
266
+ patternlab . events . emit ( 'patternlab-pattern-iteration-end' , patternlab ) ;
267
+
250
268
//diveSync again to recursively include partials, filling out the
251
269
//extendedTemplate property of the patternlab.patterns elements
252
270
processAllPatternsRecursive ( pattern_assembler , patterns_dir , patternlab ) ;
@@ -369,6 +387,8 @@ var patternlab_engine = function (config) {
369
387
patternLabFoot : footerPartial
370
388
} ) ;
371
389
390
+ patternlab . events . emit ( 'patternlab-pattern-write-begin' , patternlab , pattern ) ;
391
+
372
392
//write the compiled template to the public patterns directory
373
393
var patternPage = headHTML + pattern . patternPartialCode + footerHTML ;
374
394
fs . outputFileSync ( paths . public . patterns + pattern . getPatternLink ( patternlab , 'rendered' ) , patternPage ) ;
@@ -379,6 +399,8 @@ var patternlab_engine = function (config) {
379
399
//write the encoded version too
380
400
fs . outputFileSync ( paths . public . patterns + pattern . getPatternLink ( patternlab , 'markupOnly' ) , pattern . patternPartialCode ) ;
381
401
402
+ patternlab . events . emit ( 'patternlab-pattern-write-end' , patternlab , pattern ) ;
403
+
382
404
return true ;
383
405
} ) ;
384
406
0 commit comments