@@ -146,7 +146,7 @@ const patternlab_module = function (config) {
146
146
}
147
147
}
148
148
149
- function buildPatterns ( deletePatternDir ) {
149
+ function buildPatterns ( deletePatternDir , additionalData ) {
150
150
patternlab . events . emit ( 'patternlab-build-pattern-start' , patternlab ) ;
151
151
152
152
//
@@ -170,9 +170,8 @@ const patternlab_module = function (config) {
170
170
//
171
171
cleanBuildDirectory ( patternlab . incrementalBuildsEnabled ) ;
172
172
173
- patternlab . buildGlobalData ( ) ;
173
+ patternlab . buildGlobalData ( additionalData ) ;
174
174
175
- // diveSync once to perform iterative populating of patternlab object
176
175
return patternlab . processAllPatternsIterative ( paths . source . patterns ) . then ( ( ) => {
177
176
178
177
patternlab . events . emit ( 'patternlab-pattern-iteration-end' , patternlab ) ;
@@ -181,90 +180,94 @@ const patternlab_module = function (config) {
181
180
//we need to do this before expanding patterns & partials into extendedTemplates, otherwise we could lose the data -> partial reference
182
181
parseAllLinks ( patternlab ) ;
183
182
184
- //diveSync again to recursively include partials, filling out the
183
+ //dive again to recursively include partials, filling out the
185
184
//extendedTemplate property of the patternlab.patterns elements
186
- // TODO we can reduce the time needed by only processing changed patterns and their partials
187
- patternlab . processAllPatternsRecursive ( paths . source . patterns , patternlab ) ;
188
-
189
- //take the user defined head and foot and process any data and patterns that apply
190
- const headPatternPromise = processMetaPattern ( `_00-head.${ patternlab . config . patternExtension } ` , 'userHead' , patternlab ) ;
191
- const footPatternPromise = processMetaPattern ( `_01-foot.${ patternlab . config . patternExtension } ` , 'userFoot' , patternlab ) ;
192
-
193
- return Promise . all ( [ headPatternPromise , footPatternPromise ] ) . then ( ( ) => {
194
-
195
- //cascade any patternStates
196
- lineage_hunter . cascade_pattern_states ( patternlab ) ;
197
-
198
- //set pattern-specific header if necessary
199
- let head ;
200
- if ( patternlab . userHead ) {
201
- head = patternlab . userHead ;
202
- } else {
203
- head = patternlab . header ;
204
- }
205
-
206
- //set the pattern-specific header by compiling the general-header with data, and then adding it to the meta header
207
- return render ( Pattern . createEmpty ( { extendedTemplate : patternlab . header } ) , {
208
- cacheBuster : patternlab . cacheBuster
209
- } ) . then ( ( results ) => {
210
- patternlab . data . patternLabHead = results ;
211
-
212
- // If deletePatternDir == true or graph needs to be updated
213
- // rebuild all patterns
214
- let patternsToBuild = null ;
215
-
216
- // If deletePatternDir == true or graph needs to be updated
217
- // rebuild all patterns
218
- patternsToBuild = null ;
219
-
220
- if ( patternlab . incrementalBuildsEnabled ) {
221
- // When the graph was loaded from file, some patterns might have been moved/deleted between runs
222
- // so the graph data become out of sync
223
- patternlab . graph . sync ( ) . forEach ( n => {
224
- logger . info ( "[Deleted/Moved] " + n ) ;
225
- } ) ;
226
-
227
- // TODO Find created or deleted files
228
- const now = new Date ( ) . getTime ( ) ;
229
- markModifiedPatterns ( now , patternlab ) ;
230
- patternsToBuild = patternlab . graph . compileOrder ( ) ;
185
+ return patternlab . processAllPatternsRecursive ( paths . source . patterns ) . then ( ( ) => {
186
+
187
+ //take the user defined head and foot and process any data and patterns that apply
188
+ const headPatternPromise = processMetaPattern ( `_00-head.${ patternlab . config . patternExtension } ` , 'userHead' , patternlab ) ;
189
+ const footPatternPromise = processMetaPattern ( `_01-foot.${ patternlab . config . patternExtension } ` , 'userFoot' , patternlab ) ;
190
+
191
+ return Promise . all ( [ headPatternPromise , footPatternPromise ] ) . then ( ( ) => {
192
+
193
+ //cascade any patternStates
194
+ lineage_hunter . cascade_pattern_states ( patternlab ) ;
195
+
196
+ //set pattern-specific header if necessary
197
+ let head ;
198
+ if ( patternlab . userHead ) {
199
+ head = patternlab . userHead ;
231
200
} else {
232
- // build all patterns, mark all to be rebuilt
233
- patternsToBuild = patternlab . patterns ;
234
- for ( const p of patternsToBuild ) {
235
- p . compileState = CompileState . NEEDS_REBUILD ;
236
- }
201
+ head = patternlab . header ;
237
202
}
238
203
239
- //render all patterns last, so lineageR works
240
- return patternsToBuild
241
- . reduce ( ( previousPromise , pattern ) => {
242
- return previousPromise . then ( ( ) => patternlab . renderSinglePattern ( pattern , head ) ) ;
243
- } , Promise . resolve ( ) )
244
- . then ( ( ) => {
245
- // Saves the pattern graph when all files have been compiled
246
- PatternGraph . storeToFile ( patternlab ) ;
247
- if ( patternlab . config . exportToGraphViz ) {
248
- PatternGraph . exportToDot ( patternlab , "dependencyGraph.dot" ) ;
249
- logger . info ( `Exported pattern graph to ${ path . join ( config . paths . public . root , "dependencyGraph.dot" ) } ` ) ;
204
+ //set the pattern-specific header by compiling the general-header with data, and then adding it to the meta header
205
+ return render ( Pattern . createEmpty ( { extendedTemplate : patternlab . header } ) , {
206
+ cacheBuster : patternlab . cacheBuster
207
+ } ) . then ( ( results ) => {
208
+ patternlab . data . patternLabHead = results ;
209
+
210
+ // If deletePatternDir == true or graph needs to be updated
211
+ // rebuild all patterns
212
+ let patternsToBuild = null ;
213
+
214
+ // If deletePatternDir == true or graph needs to be updated
215
+ // rebuild all patterns
216
+ patternsToBuild = null ;
217
+
218
+ if ( patternlab . incrementalBuildsEnabled ) {
219
+ // When the graph was loaded from file, some patterns might have been moved/deleted between runs
220
+ // so the graph data become out of sync
221
+ patternlab . graph . sync ( ) . forEach ( n => {
222
+ logger . info ( "[Deleted/Moved] " + n ) ;
223
+ } ) ;
224
+
225
+ // TODO Find created or deleted files
226
+ const now = new Date ( ) . getTime ( ) ;
227
+ markModifiedPatterns ( now , patternlab ) ;
228
+ patternsToBuild = patternlab . graph . compileOrder ( ) ;
229
+ } else {
230
+ // build all patterns, mark all to be rebuilt
231
+ patternsToBuild = patternlab . patterns ;
232
+ for ( const p of patternsToBuild ) {
233
+ p . compileState = CompileState . NEEDS_REBUILD ;
250
234
}
235
+ }
251
236
252
- //export patterns if necessary
253
- pattern_exporter . export_patterns ( patternlab ) ;
254
-
255
- } ) . catch ( reason => {
256
- console . log ( reason ) ;
257
- logger . error ( 'Error rendering patterns' ) ;
258
- } ) ;
237
+ //render all patterns last, so lineageR works
238
+ return patternsToBuild
239
+ . reduce ( ( previousPromise , pattern ) => {
240
+ return previousPromise . then ( ( ) => patternlab . renderSinglePattern ( pattern , head ) ) ;
241
+ } , Promise . resolve ( ) )
242
+ . then ( ( ) => {
243
+ // Saves the pattern graph when all files have been compiled
244
+ PatternGraph . storeToFile ( patternlab ) ;
245
+ if ( patternlab . config . exportToGraphViz ) {
246
+ PatternGraph . exportToDot ( patternlab , "dependencyGraph.dot" ) ;
247
+ logger . info ( `Exported pattern graph to ${ path . join ( config . paths . public . root , "dependencyGraph.dot" ) } ` ) ;
248
+ }
249
+
250
+ //export patterns if necessary
251
+ pattern_exporter . export_patterns ( patternlab ) ;
252
+
253
+ } ) . catch ( reason => {
254
+ console . log ( reason ) ;
255
+ logger . error ( 'Error rendering patterns' ) ;
256
+ } ) ;
257
+
258
+ } ) . catch ( reason => {
259
+ console . log ( reason ) ;
260
+ logger . error ( 'Error rendering pattern lab header' ) ;
261
+ } ) ;
259
262
260
263
} ) . catch ( reason => {
261
264
console . log ( reason ) ;
262
- logger . error ( 'Error rendering pattern lab header ' ) ;
265
+ logger . error ( 'Error processing meta patterns ' ) ;
263
266
} ) ;
264
267
265
268
} ) . catch ( reason => {
266
269
console . log ( reason ) ;
267
- logger . error ( 'Error processing meta patterns' ) ;
270
+ logger . error ( 'Error processing patterns recursively ' ) ;
268
271
} ) ;
269
272
270
273
} ) . catch ( reason => {
@@ -304,7 +307,7 @@ const patternlab_module = function (config) {
304
307
return Promise . resolve ( ) ;
305
308
}
306
309
patternlab . isBusy = true ;
307
- return buildPatterns ( options . cleanPublic ) . then ( ( ) => {
310
+ return buildPatterns ( options . cleanPublic , options . data ) . then ( ( ) => {
308
311
309
312
return new ui_builder ( ) . buildFrontend ( patternlab ) . then ( ( ) => {
310
313
@@ -352,7 +355,7 @@ const patternlab_module = function (config) {
352
355
return Promise . resolve ( ) ;
353
356
}
354
357
patternlab . isBusy = true ;
355
- return buildPatterns ( options . cleanPublic ) . then ( ( ) => {
358
+ return buildPatterns ( options . cleanPublic , options . data ) . then ( ( ) => {
356
359
patternlab . isBusy = false ;
357
360
} ) ;
358
361
} ,
0 commit comments