@@ -57,8 +57,9 @@ var patternlab_engine = function (config) {
57
57
function buildPatterns ( deletePatternDir ) {
58
58
patternlab . data = fs . readJSONSync ( path . resolve ( paths . source . data , 'data.json' ) ) ;
59
59
patternlab . listitems = fs . readJSONSync ( path . resolve ( paths . source . data , 'listitems.json' ) ) ;
60
- patternlab . header = fs . readFileSync ( path . resolve ( paths . source . patternlabFiles , 'source/_meta/header.html' ) , 'utf8' ) ;
61
- patternlab . footer = fs . readFileSync ( path . resolve ( paths . source . patternlabFiles , 'source/_meta/footer.html' ) , 'utf8' ) ;
60
+ patternlab . header = fs . readFileSync ( path . resolve ( paths . source . patternlabFiles , 'templates/pattern-header-footer/header.html' ) , 'utf8' ) ;
61
+ patternlab . footerPattern = fs . readFileSync ( path . resolve ( paths . source . patternlabFiles , 'templates/pattern-header-footer/footer-pattern.html' ) , 'utf8' ) ;
62
+ patternlab . footer = fs . readFileSync ( path . resolve ( paths . source . patternlabFiles , 'templates/pattern-header-footer/footer.html' ) , 'utf8' ) ;
62
63
patternlab . patterns = [ ] ;
63
64
patternlab . partials = { } ;
64
65
patternlab . data . link = { } ;
@@ -116,6 +117,25 @@ var patternlab_engine = function (config) {
116
117
pattern_assembler . process_pattern_recursive ( path . resolve ( file ) , patternlab ) ;
117
118
} ) ;
118
119
120
+ //set user defined head and foot if they exist
121
+ try {
122
+ patternlab . userHead = pattern_assembler . get_pattern_by_key ( 'atoms-head' , patternlab ) ;
123
+ }
124
+ catch ( ex ) {
125
+ if ( patternlab . config . debug ) {
126
+ console . log ( ex ) ;
127
+ console . log ( 'Could not find optional user-defined header, atoms-head pattern. It was likely deleted.' ) ;
128
+ }
129
+ }
130
+ try {
131
+ patternlab . userFoot = pattern_assembler . get_pattern_by_key ( 'atoms-foot' , patternlab ) ;
132
+ }
133
+ catch ( ex ) {
134
+ if ( patternlab . config . debug ) {
135
+ console . log ( ex ) ;
136
+ console . log ( 'Could not find optional user-defined footer, atoms-foot pattern. It was likely deleted.' ) ;
137
+ }
138
+ }
119
139
120
140
//now that all the main patterns are known, look for any links that might be within data and expand them
121
141
//we need to do this before expanding patterns & partials into extendedTemplates, otherwise we could lose the data -> partial reference
@@ -126,21 +146,40 @@ var patternlab_engine = function (config) {
126
146
fs . emptyDirSync ( paths . public . patterns ) ;
127
147
}
128
148
149
+ //set pattern-specific header if necessary
150
+ var head ;
151
+ if ( patternlab . userHead ) {
152
+ head = patternlab . userHead . extendedTemplate . replace ( '{% pattern-lab-head %}' , patternlab . header ) ;
153
+ } else {
154
+ head = patternlab . header ;
155
+ }
156
+
129
157
//render all patterns last, so lineageR works
130
158
patternlab . patterns . forEach ( function ( pattern ) {
131
159
160
+ pattern . header = head ;
161
+
132
162
//render the pattern, but first consolidate any data we may have
133
163
var allData = JSON . parse ( JSON . stringify ( patternlab . data ) ) ;
134
164
allData = pattern_assembler . merge_data ( allData , pattern . jsonFileData ) ;
135
165
166
+ //render the pattern-specific header
167
+ var headHtml = pattern_assembler . renderPattern ( pattern . header , allData ) ;
168
+
136
169
//render the extendedTemplate with all data
137
170
pattern . patternPartial = pattern_assembler . renderPattern ( pattern . extendedTemplate , allData ) ;
138
171
139
- //add footer info before writing
140
- var patternFooter = pattern_assembler . renderPattern ( patternlab . footer , pattern ) ;
172
+ //set the pattern-specific footer if necessary
173
+ if ( patternlab . userFoot ) {
174
+ console . log ( 'found custom userFoot' )
175
+ var userFooter = patternlab . userFoot . extendedTemplate . replace ( '{% pattern-lab-foot %}' , patternlab . footerPattern + patternlab . footer ) ;
176
+ pattern . footer = pattern_assembler . renderPattern ( userFooter , pattern ) ;
177
+ } else {
178
+ pattern . footer = pattern_assembler . renderPattern ( patternlab . footerPattern , pattern ) ;
179
+ }
141
180
142
181
//write the compiled template to the public patterns directory
143
- fs . outputFileSync ( paths . public . patterns + pattern . patternLink , patternlab . header + pattern . patternPartial + patternFooter ) ;
182
+ fs . outputFileSync ( paths . public . patterns + pattern . patternLink , headHtml + pattern . patternPartial + pattern . footer ) ;
144
183
145
184
//write the mustache file too
146
185
fs . outputFileSync ( paths . public . patterns + pattern . patternLink . replace ( '.html' , '.mustache' ) , entity_encoder . encode ( pattern . template ) ) ;
@@ -211,11 +250,17 @@ var patternlab_engine = function (config) {
211
250
styleguidePatterns = patternlab . patterns ;
212
251
}
213
252
253
+ //get the main page head and foot
254
+ var mainPageHead = patternlab . userHead . extendedTemplate . replace ( '{% pattern-lab-head %}' , patternlab . header ) ;
255
+ var mainPageHeadHtml = pattern_assembler . renderPattern ( mainPageHead , patternlab . data ) ;
256
+ var mainPageFoot = patternlab . userFoot . extendedTemplate . replace ( '{% pattern-lab-foot %}' , patternlab . footer ) ;
257
+ var mainPageFootHtml = pattern_assembler . renderPattern ( mainPageFoot , patternlab . data ) ;
258
+
214
259
//build the styleguide
215
260
var styleguideTemplate = fs . readFileSync ( path . resolve ( paths . source . patternlabFiles , 'templates/styleguide.mustache' ) , 'utf8' ) ,
216
261
styleguideHtml = pattern_assembler . renderPattern ( styleguideTemplate , { partials : styleguidePatterns } ) ;
217
262
218
- fs . outputFileSync ( path . resolve ( paths . public . styleguide , 'html/styleguide.html' ) , styleguideHtml ) ;
263
+ fs . outputFileSync ( path . resolve ( paths . public . styleguide , 'html/styleguide.html' ) , mainPageHeadHtml + styleguideHtml + mainPageFootHtml ) ;
219
264
220
265
//build the viewall pages
221
266
var prevSubdir = '' ,
@@ -257,7 +302,7 @@ var patternlab_engine = function (config) {
257
302
258
303
var viewAllTemplate = fs . readFileSync ( path . resolve ( paths . source . patternlabFiles , 'templates/viewall.mustache' ) , 'utf8' ) ;
259
304
var viewAllHtml = pattern_assembler . renderPattern ( viewAllTemplate , { partials : viewAllPatterns , patternPartial : patternPartial } ) ;
260
- fs . outputFileSync ( paths . public . patterns + pattern . subdir . slice ( 0 , pattern . subdir . indexOf ( pattern . patternGroup ) + pattern . patternGroup . length ) + '/index.html' , viewAllHtml ) ;
305
+ fs . outputFileSync ( paths . public . patterns + pattern . subdir . slice ( 0 , pattern . subdir . indexOf ( pattern . patternGroup ) + pattern . patternGroup . length ) + '/index.html' , mainPageHead + viewAllHtml + mainPageFoot ) ;
261
306
}
262
307
263
308
// create the view all for the subsection
@@ -284,7 +329,7 @@ var patternlab_engine = function (config) {
284
329
285
330
var viewAllTemplate = fs . readFileSync ( path . resolve ( paths . source . patternlabFiles , 'templates/viewall.mustache' ) , 'utf8' ) ;
286
331
var viewAllHtml = pattern_assembler . renderPattern ( viewAllTemplate , { partials : viewAllPatterns , patternPartial : patternPartial } ) ;
287
- fs . outputFileSync ( paths . public . patterns + pattern . flatPatternPath + '/index.html' , viewAllHtml ) ;
332
+ fs . outputFileSync ( paths . public . patterns + pattern . flatPatternPath + '/index.html' , mainPageHeadHtml + viewAllHtml + mainPageFootHtml ) ;
288
333
}
289
334
}
290
335
0 commit comments