@@ -14,9 +14,12 @@ var diveSync = require('diveSync'),
1414 glob = require ( 'glob' ) ,
1515 _ = require ( 'lodash' ) ,
1616 path = require ( 'path' ) ,
17+ inherits = require ( 'util' ) . inherits ,
1718 pm = require ( './plugin_manager' ) ,
1819 plutils = require ( './utilities' ) ;
1920
21+ var EventEmitter = require ( 'events' ) . EventEmitter ;
22+
2023function buildPatternData ( dataFilesPath , fs ) {
2124 var dataFilesPath = dataFilesPath ;
2225 var dataFiles = glob . sync ( dataFilesPath + '*.json' , { "ignore" : [ dataFilesPath + 'listitems.json' ] } ) ;
@@ -88,6 +91,11 @@ function initializePlugins(patternlab) {
8891 }
8992}
9093
94+ function PatternLabEventEmitter ( ) {
95+ EventEmitter . call ( this ) ;
96+ }
97+ inherits ( PatternLabEventEmitter , EventEmitter ) ;
98+
9199var patternlab_engine = function ( config ) {
92100 'use strict' ;
93101
@@ -102,8 +110,11 @@ var patternlab_engine = function (config) {
102110
103111 patternlab . package = fs . readJSONSync ( path . resolve ( __dirname , '../../package.json' ) ) ;
104112 patternlab . config = config || fs . readJSONSync ( path . resolve ( __dirname , '../../patternlab-config.json' ) ) ;
113+ patternlab . events = new PatternLabEventEmitter ( ) ;
105114
106115 checkConfiguration ( patternlab ) ;
116+
117+ //todo: determine if this is the best place to wire up plugins
107118 initializePlugins ( patternlab ) ;
108119
109120 var paths = patternlab . config . paths ;
@@ -207,6 +218,9 @@ var patternlab_engine = function (config) {
207218 }
208219
209220 function buildPatterns ( deletePatternDir ) {
221+
222+ patternlab . events . emit ( 'patternlab-build-pattern-start' , patternlab ) ;
223+
210224 try {
211225 patternlab . data = buildPatternData ( paths . source . data , fs ) ;
212226 } catch ( ex ) {
@@ -244,9 +258,13 @@ var patternlab_engine = function (config) {
244258
245259 pattern_assembler . combine_listItems ( patternlab ) ;
246260
261+ patternlab . events . emit ( 'patternlab-build-global-data-end' , patternlab ) ;
262+
247263 // diveSync once to perform iterative populating of patternlab object
248264 processAllPatternsIterative ( pattern_assembler , patterns_dir , patternlab ) ;
249265
266+ patternlab . events . emit ( 'patternlab-pattern-iteration-end' , patternlab ) ;
267+
250268 //diveSync again to recursively include partials, filling out the
251269 //extendedTemplate property of the patternlab.patterns elements
252270 processAllPatternsRecursive ( pattern_assembler , patterns_dir , patternlab ) ;
@@ -369,6 +387,8 @@ var patternlab_engine = function (config) {
369387 patternLabFoot : footerPartial
370388 } ) ;
371389
390+ patternlab . events . emit ( 'patternlab-pattern-write-begin' , patternlab , pattern ) ;
391+
372392 //write the compiled template to the public patterns directory
373393 var patternPage = headHTML + pattern . patternPartialCode + footerHTML ;
374394 fs . outputFileSync ( paths . public . patterns + pattern . getPatternLink ( patternlab , 'rendered' ) , patternPage ) ;
@@ -379,6 +399,8 @@ var patternlab_engine = function (config) {
379399 //write the encoded version too
380400 fs . outputFileSync ( paths . public . patterns + pattern . getPatternLink ( patternlab , 'markupOnly' ) , pattern . patternPartialCode ) ;
381401
402+ patternlab . events . emit ( 'patternlab-pattern-write-end' , patternlab , pattern ) ;
403+
382404 return true ;
383405 } ) ;
384406
0 commit comments