@@ -31,7 +31,7 @@ var ui_builder = function () {
31
31
32
32
function addToViewAllPaths ( patternlab , pattern ) {
33
33
34
- console . log ( 'adding' , pattern . patternPartial , pattern . patternGroup , pattern . patternSubGroup , pattern . flatPatternPath , 'to viewallpaths' ) ;
34
+ console . log ( '6 adding' , pattern . patternPartial , pattern . patternGroup , pattern . patternSubGroup , pattern . flatPatternPath , 'to viewallpaths' ) ;
35
35
36
36
if ( ! patternlab . viewAllPaths ) {
37
37
patternlab . viewAllPaths = { } ;
@@ -45,8 +45,12 @@ var ui_builder = function () {
45
45
patternlab . viewAllPaths [ pattern . patternGroup ] [ pattern . patternSubGroup ] = { } ;
46
46
}
47
47
48
- patternlab . viewAllPaths [ pattern . patternGroup ] [ pattern . patternSubGroup ] = pattern . flatPatternPath ;
48
+ patternlab . viewAllPaths [ pattern . patternGroup ] [ pattern . patternSubGroup ] = pattern . subdir . slice ( 0 , pattern . subdir . indexOf ( pattern . patternGroup ) + pattern . patternGroup . length ) + '-' + pattern . patternSubGroup ;
49
49
50
+
51
+ if ( ! patternlab . viewAllPaths [ pattern . patternGroup ] [ 'all' ] ) {
52
+ patternlab . viewAllPaths [ pattern . patternGroup ] [ 'all' ] = pattern . subdir . slice ( 0 , pattern . subdir . indexOf ( pattern . patternGroup ) + pattern . patternGroup . length ) ;
53
+ }
50
54
}
51
55
52
56
function writeFile ( filePath , data , callback ) {
@@ -128,6 +132,100 @@ var ui_builder = function () {
128
132
return docPattern ;
129
133
}
130
134
135
+ function createPatternType ( patternlab , pattern ) {
136
+
137
+ patternlab . patternTypes . push (
138
+ {
139
+ patternTypeLC : pattern . patternGroup . toLowerCase ( ) ,
140
+ patternTypeUC : pattern . patternGroup . charAt ( 0 ) . toUpperCase ( ) + pattern . patternGroup . slice ( 1 ) ,
141
+ patternType : pattern . patternType ,
142
+ patternTypeDash : pattern . patternGroup , //todo verify
143
+ patternTypeItems : [ ]
144
+ }
145
+ ) ;
146
+ }
147
+
148
+ function getPatternType ( patternlab , pattern ) {
149
+
150
+ console . log ( '10 searching for' , pattern . patternType , 'within' , patternlab . patternTypes ) ;
151
+
152
+ var patternType = _ . find ( patternlab . patternTypes , [ 'patternType' , pattern . patternType ] ) ;
153
+
154
+ if ( ! patternType ) {
155
+ console . log ( 'something went wrong looking for patternType' ) ;
156
+ process . exit ( 1 ) ;
157
+ }
158
+ console . log ( 'returning' , patternType . patternType ) ;
159
+
160
+ return patternType ;
161
+ }
162
+
163
+ function getPatternSubType ( patternlab , pattern ) {
164
+ var patternType = getPatternType ( patternlab , pattern ) ;
165
+
166
+ console . log ( 14 , 'found patternType' , patternType . patternType ) ;
167
+
168
+ if ( ! patternType ) {
169
+ console . log ( 'something went wrong looking for patternType' ) ;
170
+ process . exit ( 1 ) ;
171
+ }
172
+
173
+
174
+ console . log ( 15 , 'going to look in ' , patternType . patternTypeItems , 'for patternSubType' , pattern . patternSubType ) ;
175
+ var patternSubType = _ . find ( patternType . patternTypeItems , [ 'patternSubtype' , pattern . patternSubType ] ) ;
176
+
177
+ if ( ! patternSubType ) {
178
+ console . log ( 'something went wrong looking for patternSubType' , pattern . patternType , '-' , pattern . patternSubType ) ;
179
+ process . exit ( 1 ) ;
180
+ }
181
+
182
+ return patternSubType ;
183
+ }
184
+
185
+ function createPatternSubType ( patternlab , pattern ) {
186
+
187
+ var patternType = getPatternType ( patternlab , pattern ) ;
188
+
189
+ patternType . patternTypeItems . push (
190
+ {
191
+ patternSubtypeLC : pattern . patternSubGroup . toLowerCase ( ) ,
192
+ patternSubtypeUC : pattern . patternSubGroup . charAt ( 0 ) . toUpperCase ( ) + pattern . patternSubGroup . slice ( 1 ) ,
193
+ patternSubtype : pattern . patternSubType ,
194
+ patternSubtypeDash : pattern . patternSubGroup , //todo verify
195
+ patternSubtypeItems : [ ]
196
+ }
197
+ ) ;
198
+
199
+ console . log ( 11 , patternlab . patternTypes ) ;
200
+ }
201
+
202
+ function createPatternSubTypeItem ( patternlab , pattern , createViewAllVariant ) {
203
+ var patternSubType = getPatternSubType ( patternlab , pattern ) ;
204
+
205
+ if ( createViewAllVariant ) {
206
+ patternSubType . patternSubtypeItems . push (
207
+ {
208
+ patternPartial : 'viewall-' + pattern . patternPartial ,
209
+ patternName : 'View All' ,
210
+ patternPath : encodeURI ( pattern . flatPatternPath + '/index.html' ) ,
211
+ patternType : pattern . patternType ,
212
+ patternSubtype : pattern . patternSubtype
213
+ }
214
+ ) ;
215
+ } else {
216
+ patternSubType . patternSubtypeItems . push (
217
+ {
218
+ patternPartial : pattern . patternPartial ,
219
+ patternName : pattern . patternName ,
220
+ patternState : pattern . patternState ,
221
+ patternSrcPath : encodeURI ( pattern . subdir + pattern . filename ) ,
222
+ patternPath : encodeURI ( pattern . flatPatternPath + '/' + pattern . flatPatternPath + '.html' )
223
+ }
224
+ ) ;
225
+ }
226
+
227
+ }
228
+
131
229
/*
132
230
* groupPatterns
133
231
* returns an object representing how the front end styleguide and navigation is structured
@@ -137,6 +235,10 @@ var ui_builder = function () {
137
235
patternGroups : { }
138
236
} ;
139
237
238
+ if ( ! patternlab . patternTypes ) {
239
+ patternlab . patternTypes = [ ] ;
240
+ }
241
+
140
242
_ . forEach ( sortPatterns ( patternlab . patterns ) , function ( pattern ) {
141
243
142
244
pattern . omitFromStyleguide = isPatternExcluded ( pattern , patternlab ) ;
@@ -150,168 +252,34 @@ var ui_builder = function () {
150
252
151
253
groupedPatterns . patternGroups [ pattern . patternGroup ] = { } ;
152
254
255
+ createPatternType ( patternlab , pattern ) ;
256
+
153
257
//todo: test this
154
258
//groupedPatterns.patternGroups[pattern.patternGroup]['viewall-' + pattern.patternGroup] = injectDocumentationBlock(pattern, patternlab, false);
155
259
}
156
260
if ( ! groupedPatterns . patternGroups [ pattern . patternGroup ] [ pattern . patternSubGroup ] ) {
261
+
262
+ createPatternSubType ( patternlab , pattern ) ;
263
+
157
264
pattern . isSubtypePattern = ! pattern . isPattern ;
158
265
groupedPatterns . patternGroups [ pattern . patternGroup ] [ pattern . patternSubGroup ] = { } ;
159
266
groupedPatterns . patternGroups [ pattern . patternGroup ] [ pattern . patternSubGroup ] [ 'viewall-' + pattern . patternGroup + '-' + pattern . patternSubGroup ] = injectDocumentationBlock ( pattern , patternlab , true ) ;
160
267
161
268
addToViewAllPaths ( patternlab , pattern ) ;
269
+ createPatternSubTypeItem ( patternlab , pattern , true ) ;
162
270
163
271
}
164
272
groupedPatterns . patternGroups [ pattern . patternGroup ] [ pattern . patternSubGroup ] [ pattern . patternBaseName ] = pattern ;
165
273
166
274
addToPatternPaths ( patternlab , pattern ) ;
167
-
275
+ console . log ( 12 , 'about to create patternsubtypeitem derived from' , pattern . patternPartial , pattern . patternGroup , pattern . patternSubGroup ) ;
276
+ createPatternSubTypeItem ( patternlab , pattern ) ;
168
277
} ) ;
169
278
return groupedPatterns ;
170
279
}
171
280
172
- function buildNavigation ( patternlab ) {
173
-
174
- if ( ! patternlab . patternTypeIndex ) {
175
- patternlab . patternTypeIndex = [ ] ;
176
- }
177
-
178
- if ( ! patternlab . patternTypes ) {
179
- patternlab . patternTypes = [ ] ;
180
- }
181
-
182
-
183
- for ( var i = 0 ; i < patternlab . patterns . length ; i ++ ) {
184
-
185
- var pattern = patternlab . patterns [ i ] ;
186
- var patternSubTypeName ;
187
- var patternSubTypeItemName ;
188
- var flatPatternItem ;
189
- var patternSubType ;
190
- var patternSubTypeItem ;
191
- var viewAllPatternSubTypeItem ;
192
-
193
- //get the patternSubType.
194
- //if there is one or more slashes in the subdir, get everything after
195
- //the last slash. if no slash, get the whole subdir string and strip
196
- //any numeric + hyphen prefix
197
- patternSubTypeName = pattern . subdir . split ( path . sep ) . pop ( ) . replace ( / ^ \d * \- / , '' ) ;
198
-
199
- //get the patternSubTypeItem
200
- patternSubTypeItemName = pattern . patternName . replace ( / - / g, ' ' ) ;
201
-
202
- //assume the patternSubTypeItem does not exist.
203
- patternSubTypeItem = new of . oPatternSubTypeItem ( patternSubTypeItemName ) ;
204
- patternSubTypeItem . patternPath = pattern . patternLink ;
205
- patternSubTypeItem . patternPartial = pattern . patternPartial ;
206
-
207
- //check if the patternType already exists
208
- var patternTypeIndex = patternlab . patternTypeIndex . indexOf ( pattern . patternGroup ) ;
209
- if ( patternTypeIndex === - 1 ) {
210
- //add the patternType
211
- var patternType = new of . oPatternType ( pattern . patternGroup ) ;
212
-
213
- //add patternPath and viewAllPath
214
- patternlab . patternPaths [ pattern . patternGroup ] = patternlab . patternPaths [ pattern . patternGroup ] || { } ;
215
- patternlab . viewAllPaths [ pattern . patternGroup ] = { } ;
216
-
217
- //test whether the pattern structure is flat or not - usually due to a template or page
218
- flatPatternItem = patternSubTypeName === pattern . patternGroup ;
219
-
220
- //assume the patternSubType does not exist.
221
- patternSubType = new of . oPatternSubType ( patternSubTypeName ) ;
222
-
223
- //add the patternState if it exists
224
- if ( pattern . patternState ) {
225
- patternSubTypeItem . patternState = pattern . patternState ;
226
- }
227
-
228
- //if it is flat - we should not add the pattern to patternPaths
229
- if ( flatPatternItem ) {
230
-
231
- patternType . patternItems . push ( patternSubTypeItem ) ;
232
-
233
-
234
- } else {
235
-
236
- patternType . patternTypeItems . push ( patternSubType ) ;
237
- patternType . patternTypeItemsIndex . push ( patternSubTypeName ) ;
238
- patternSubType . patternSubtypeItems . push ( patternSubTypeItem ) ;
239
- patternSubType . patternSubtypeItemsIndex . push ( patternSubTypeItemName ) ;
240
-
281
+ function buildNavigation ( patternlab , patterns ) {
241
282
242
- //add the view all PatternSubTypeItem
243
- viewAllPatternSubTypeItem = new of . oPatternSubTypeItem ( "View All" ) ;
244
- viewAllPatternSubTypeItem . patternPath = pattern . subdir . slice ( 0 , pattern . subdir . indexOf ( pattern . patternGroup ) + pattern . patternGroup . length ) + "/index.html" ;
245
- viewAllPatternSubTypeItem . patternPartial = "viewall-" + pattern . patternGroup ;
246
-
247
- patternType . patternItems . push ( viewAllPatternSubTypeItem ) ;
248
- patternlab . viewAllPaths [ pattern . patternGroup ] . viewall = pattern . subdir . slice ( 0 , pattern . subdir . indexOf ( pattern . patternGroup ) + pattern . patternGroup . length ) ;
249
-
250
- }
251
-
252
- //add the patternType.
253
- patternlab . patternTypes . push ( patternType ) ;
254
- patternlab . patternTypeIndex . push ( pattern . patternGroup ) ;
255
-
256
- //done
257
-
258
- } else {
259
- //find the patternType
260
- patternType = patternlab . patternTypes [ patternTypeIndex ] ;
261
-
262
- //add the patternState if it exists
263
- if ( pattern . patternState ) {
264
- patternSubTypeItem . patternState = pattern . patternState ;
265
- }
266
-
267
- //test whether the pattern structure is flat or not - usually due to a template or page
268
- flatPatternItem = patternSubTypeName === pattern . patternGroup ;
269
-
270
- //if it is flat - we should not add the pattern to patternPaths
271
- if ( flatPatternItem ) {
272
- //add the patternSubType to patternItems
273
- patternType . patternItems . push ( patternSubTypeItem ) ;
274
-
275
-
276
- } else {
277
-
278
- // only do this if pattern is included
279
- //check to see if patternSubType exists
280
- var patternTypeItemsIndex = patternType . patternTypeItemsIndex . indexOf ( patternSubTypeName ) ;
281
- if ( patternTypeItemsIndex === - 1 ) {
282
- patternSubType = new of . oPatternSubType ( patternSubTypeName ) ;
283
-
284
- //add the patternSubType and patternSubTypeItem
285
- patternSubType . patternSubtypeItems . push ( patternSubTypeItem ) ;
286
- patternSubType . patternSubtypeItemsIndex . push ( patternSubTypeItemName ) ;
287
- patternType . patternTypeItems . push ( patternSubType ) ;
288
- patternType . patternTypeItemsIndex . push ( patternSubTypeName ) ;
289
-
290
- } else {
291
- //add the patternSubTypeItem
292
- patternSubType = patternType . patternTypeItems [ patternTypeItemsIndex ] ;
293
- patternSubType . patternSubtypeItems . push ( patternSubTypeItem ) ;
294
- patternSubType . patternSubtypeItemsIndex . push ( patternSubTypeItemName ) ;
295
- }
296
-
297
- //check if we are moving to a new subgroup in the next loop
298
- if ( ! patternlab . patterns [ i + 1 ] || pattern . patternSubGroup !== patternlab . patterns [ i + 1 ] . patternSubGroup ) {
299
-
300
- //add the viewall SubTypeItem
301
- var viewAllPatternSubTypeItem = new of . oPatternSubTypeItem ( "View All" ) ;
302
- viewAllPatternSubTypeItem . patternPath = pattern . flatPatternPath + "/index.html" ;
303
- viewAllPatternSubTypeItem . patternPartial = "viewall-" + pattern . patternGroup + "-" + pattern . patternSubGroup ;
304
-
305
- patternSubType . patternSubtypeItems . push ( viewAllPatternSubTypeItem ) ;
306
- patternSubType . patternSubtypeItemsIndex . push ( "View All" ) ;
307
- }
308
-
309
- }
310
- }
311
-
312
- patternlab . viewAllPaths [ pattern . patternGroup ] [ pattern . patternSubGroup ] = pattern . flatPatternPath ;
313
- }
314
- return patternTypeIndex ;
315
283
}
316
284
317
285
function buildFooterHTML ( patternlab , patternPartial ) {
@@ -334,6 +302,7 @@ var ui_builder = function () {
334
302
335
303
if ( isPatternType ) {
336
304
patternPartial = patternPartial . substring ( patternPartial . indexOf ( 'viewall-' ) ) ;
305
+ console . log ( patternPartial ) ;
337
306
}
338
307
339
308
var viewAllHTML = pattern_assembler . renderPattern ( patternlab . viewAll ,
@@ -493,7 +462,6 @@ var ui_builder = function () {
493
462
} ) ;
494
463
495
464
//build the viewall pages
496
- //todo so close
497
465
var patterns = buildViewAllPages ( headerHTML , patternlab , styleguidePatterns ) ;
498
466
499
467
//build the main styleguide page
@@ -509,9 +477,6 @@ var ui_builder = function () {
509
477
510
478
writeFile ( path . resolve ( paths . public . styleguide , 'html/styleguide.html' ) , headerHTML + styleguideHtml + footerHTML ) ;
511
479
512
- //build the patternlab navigation
513
- buildNavigation ( patternlab ) ;
514
-
515
480
//move the index file from its asset location into public root
516
481
var patternlabSiteHtml ;
517
482
try {
0 commit comments