|
12 | 12 |
|
13 | 13 | var path = require('path'); |
14 | 14 | var fs = require('fs-extra'); |
| 15 | +var of = require('./object_factory'); |
| 16 | + |
15 | 17 |
|
16 | 18 | // PRIVATE FUNCTIONS |
17 | 19 |
|
@@ -57,141 +59,8 @@ function assembleStyleguidePatterns(patternlab) { |
57 | 59 | return styleguidePatterns; |
58 | 60 | } |
59 | 61 |
|
60 | | - |
61 | | -// MAIN BUILDER FUNCTION |
62 | | - |
63 | | -function buildViewAllPages(mainPageHead, mainPageFoot, mainPageHeadHtml, mainPageFootHtml, pattern_assembler, patternlab) { |
64 | | - var paths = patternlab.config.paths; |
65 | | - var prevSubdir = ''; |
66 | | - var prevGroup = ''; |
67 | | - var i; |
68 | | - |
69 | | - for (i = 0; i < patternlab.patterns.length; i++) { |
70 | | - // skip underscore-prefixed files |
71 | | - if (isPatternExcluded(patternlab.patterns[i])) { |
72 | | - if (patternlab.config.debug) { |
73 | | - console.log('Omitting ' + patternlab.patterns[i].key + " from view all rendering."); |
74 | | - } |
75 | | - continue; |
76 | | - } |
77 | | - |
78 | | - var pattern = patternlab.patterns[i]; |
79 | | - |
80 | | - //create the view all for the section |
81 | | - // check if the current section is different from the previous one |
82 | | - if (pattern.patternGroup !== prevGroup) { |
83 | | - prevGroup = pattern.patternGroup; |
84 | | - |
85 | | - var viewAllPatterns = []; |
86 | | - var patternPartial = "viewall-" + pattern.patternGroup; |
87 | | - var j; |
88 | | - |
89 | | - for (j = 0; j < patternlab.patterns.length; j++) { |
90 | | - if (patternlab.patterns[j].patternGroup === pattern.patternGroup) { |
91 | | - //again, skip any sibling patterns to the current one that may have underscores |
92 | | - if (isPatternExcluded(patternlab.patterns[j])) { |
93 | | - if (patternlab.config.debug) { |
94 | | - console.log('Omitting ' + patternlab.patterns[j].key + " from view all sibling rendering."); |
95 | | - } |
96 | | - continue; |
97 | | - } |
98 | | - |
99 | | - viewAllPatterns.push(patternlab.patterns[j]); |
100 | | - } |
101 | | - } |
102 | | - |
103 | | - var viewAllTemplate = fs.readFileSync(path.resolve(paths.source.patternlabFiles, 'templates/viewall.mustache'), 'utf8'); |
104 | | - var viewAllHtml = pattern_assembler.renderPattern(viewAllTemplate, {partials: viewAllPatterns, patternPartial: patternPartial, cacheBuster: patternlab.cacheBuster }); |
105 | | - fs.outputFileSync(paths.public.patterns + pattern.subdir.slice(0, pattern.subdir.indexOf(pattern.patternGroup) + pattern.patternGroup.length) + '/index.html', mainPageHead + viewAllHtml + mainPageFoot); |
106 | | - } |
107 | | - |
108 | | - //create the view all for the subsection |
109 | | - // check if the current sub section is different from the previous one |
110 | | - if (pattern.subdir !== prevSubdir) { |
111 | | - prevSubdir = pattern.subdir; |
112 | | - |
113 | | - viewAllPatterns = []; |
114 | | - patternPartial = "viewall-" + pattern.patternGroup + "-" + pattern.patternSubGroup; |
115 | | - |
116 | | - for (j = 0; j < patternlab.patterns.length; j++) { |
117 | | - if (patternlab.patterns[j].subdir === pattern.subdir) { |
118 | | - //again, skip any sibling patterns to the current one that may have underscores |
119 | | - if (isPatternExcluded(patternlab.patterns[j])) { |
120 | | - if (patternlab.config.debug) { |
121 | | - console.log('Omitting ' + patternlab.patterns[j].key + " from view all sibling rendering."); |
122 | | - } |
123 | | - continue; |
124 | | - } |
125 | | - |
126 | | - viewAllPatterns.push(patternlab.patterns[j]); |
127 | | - } |
128 | | - } |
129 | | - |
130 | | - var viewAllTemplate = fs.readFileSync(path.resolve(paths.source.patternlabFiles, 'templates/viewall.mustache'), 'utf8'); |
131 | | - var viewAllHtml = pattern_assembler.renderPattern(viewAllTemplate, {partials: viewAllPatterns, patternPartial: patternPartial, cacheBuster: patternlab.cacheBuster}); |
132 | | - fs.outputFileSync(paths.public.patterns + pattern.flatPatternPath + '/index.html', mainPageHeadHtml + viewAllHtml + mainPageFootHtml); |
133 | | - } |
134 | | - } |
135 | | -} |
136 | | - |
137 | | -function buildFrontEnd(patternlab) { |
138 | | - var pa = require('./pattern_assembler'); |
139 | | - var of = require('./object_factory'); |
140 | | - var mh = require('./media_hunter'); |
141 | | - var pattern_assembler = new pa(); |
142 | | - var media_hunter = new mh(); |
143 | | - var styleguidePatterns = []; |
144 | | - var paths = patternlab.config.paths; |
145 | | - var i; |
146 | | - |
147 | | - patternlab.buckets = []; |
148 | | - patternlab.bucketIndex = []; |
149 | | - patternlab.patternPaths = {}; |
150 | | - patternlab.viewAllPaths = {}; |
151 | | - |
152 | | - //sort all patterns explicitly. |
153 | | - patternlab.patterns = patternlab.patterns.sort(function (a, b) { |
154 | | - if (a.name > b.name) { |
155 | | - return 1; |
156 | | - } |
157 | | - if (a.name < b.name) { |
158 | | - return -1; |
159 | | - } |
160 | | - |
161 | | - // a must be equal to b |
162 | | - return 0; |
163 | | - }); |
164 | | - |
165 | | - //find mediaQueries |
166 | | - media_hunter.find_media_queries('./source/css', patternlab); |
167 | | - |
168 | | - // check if patterns are excluded, if not add them to styleguidePatterns |
169 | | - styleguidePatterns = assembleStyleguidePatterns(patternlab); |
170 | | - |
171 | | - //also add the cachebuster value. slight chance this could collide with a user that has defined cacheBuster as a value |
172 | | - patternlab.data.cacheBuster = patternlab.cacheBuster; |
173 | | - |
174 | | - //get the main page head and foot |
175 | | - var mainPageHead = patternlab.userHead.extendedTemplate.replace('{% pattern-lab-head %}', patternlab.header); |
176 | | - var mainPageHeadHtml = pattern_assembler.renderPattern(mainPageHead, patternlab.data); |
177 | | - var mainPageFoot = patternlab.userFoot.extendedTemplate.replace('{% pattern-lab-foot %}', patternlab.footer); |
178 | | - var mainPageFootHtml = pattern_assembler.renderPattern(mainPageFoot, patternlab.data); |
179 | | - |
180 | | - //build the styleguide |
181 | | - var styleguideTemplate = fs.readFileSync(path.resolve(paths.source.patternlabFiles, 'templates/styleguide.mustache'), 'utf8'); |
182 | | - var styleguideHtml = pattern_assembler.renderPattern(styleguideTemplate, {partials: styleguidePatterns, cacheBuster: patternlab.cacheBuster}); |
183 | | - |
184 | | - fs.outputFileSync(path.resolve(paths.public.styleguide, 'html/styleguide.html'), mainPageHeadHtml + styleguideHtml + mainPageFootHtml); |
185 | | - |
186 | | - //build the viewall pages |
187 | | - buildViewAllPages(mainPageHead, mainPageFoot, mainPageHeadHtml, mainPageFootHtml, pattern_assembler, patternlab); |
188 | | - |
189 | | - //build the patternlab website |
190 | | - var patternlabSiteTemplate = fs.readFileSync(path.resolve(paths.source.patternlabFiles, 'templates/index.mustache'), 'utf8'); |
191 | | - |
192 | | - //loop through all patterns.to build the navigation |
193 | | - //todo: refactor this someday |
194 | | - for (i = 0; i < patternlab.patterns.length; i++) { |
| 62 | +function buildNavigation(patternlab) { |
| 63 | + for (var i = 0; i < patternlab.patterns.length; i++) { |
195 | 64 |
|
196 | 65 | var pattern = patternlab.patterns[i]; |
197 | 66 | var bucketName = pattern.name.replace(/\\/g, '-').split('-')[1]; |
@@ -358,6 +227,142 @@ function buildFrontEnd(patternlab) { |
358 | 227 |
|
359 | 228 | patternlab.viewAllPaths[bucketName][pattern.patternSubGroup] = pattern.flatPatternPath; |
360 | 229 | } |
| 230 | + return bucketIndex; |
| 231 | +} |
| 232 | + |
| 233 | + |
| 234 | +// MAIN BUILDER FUNCTION |
| 235 | + |
| 236 | +function buildViewAllPages(mainPageHead, mainPageFoot, mainPageHeadHtml, mainPageFootHtml, pattern_assembler, patternlab) { |
| 237 | + var paths = patternlab.config.paths; |
| 238 | + var prevSubdir = ''; |
| 239 | + var prevGroup = ''; |
| 240 | + var i; |
| 241 | + |
| 242 | + for (i = 0; i < patternlab.patterns.length; i++) { |
| 243 | + // skip underscore-prefixed files |
| 244 | + if (isPatternExcluded(patternlab.patterns[i])) { |
| 245 | + if (patternlab.config.debug) { |
| 246 | + console.log('Omitting ' + patternlab.patterns[i].key + " from view all rendering."); |
| 247 | + } |
| 248 | + continue; |
| 249 | + } |
| 250 | + |
| 251 | + var pattern = patternlab.patterns[i]; |
| 252 | + |
| 253 | + //create the view all for the section |
| 254 | + // check if the current section is different from the previous one |
| 255 | + if (pattern.patternGroup !== prevGroup) { |
| 256 | + prevGroup = pattern.patternGroup; |
| 257 | + |
| 258 | + var viewAllPatterns = []; |
| 259 | + var patternPartial = "viewall-" + pattern.patternGroup; |
| 260 | + var j; |
| 261 | + |
| 262 | + for (j = 0; j < patternlab.patterns.length; j++) { |
| 263 | + if (patternlab.patterns[j].patternGroup === pattern.patternGroup) { |
| 264 | + //again, skip any sibling patterns to the current one that may have underscores |
| 265 | + if (isPatternExcluded(patternlab.patterns[j])) { |
| 266 | + if (patternlab.config.debug) { |
| 267 | + console.log('Omitting ' + patternlab.patterns[j].key + " from view all sibling rendering."); |
| 268 | + } |
| 269 | + continue; |
| 270 | + } |
| 271 | + |
| 272 | + viewAllPatterns.push(patternlab.patterns[j]); |
| 273 | + } |
| 274 | + } |
| 275 | + |
| 276 | + var viewAllTemplate = fs.readFileSync(path.resolve(paths.source.patternlabFiles, 'templates/viewall.mustache'), 'utf8'); |
| 277 | + var viewAllHtml = pattern_assembler.renderPattern(viewAllTemplate, {partials: viewAllPatterns, patternPartial: patternPartial, cacheBuster: patternlab.cacheBuster }); |
| 278 | + fs.outputFileSync(paths.public.patterns + pattern.subdir.slice(0, pattern.subdir.indexOf(pattern.patternGroup) + pattern.patternGroup.length) + '/index.html', mainPageHead + viewAllHtml + mainPageFoot); |
| 279 | + } |
| 280 | + |
| 281 | + //create the view all for the subsection |
| 282 | + // check if the current sub section is different from the previous one |
| 283 | + if (pattern.subdir !== prevSubdir) { |
| 284 | + prevSubdir = pattern.subdir; |
| 285 | + |
| 286 | + viewAllPatterns = []; |
| 287 | + patternPartial = "viewall-" + pattern.patternGroup + "-" + pattern.patternSubGroup; |
| 288 | + |
| 289 | + for (j = 0; j < patternlab.patterns.length; j++) { |
| 290 | + if (patternlab.patterns[j].subdir === pattern.subdir) { |
| 291 | + //again, skip any sibling patterns to the current one that may have underscores |
| 292 | + if (isPatternExcluded(patternlab.patterns[j])) { |
| 293 | + if (patternlab.config.debug) { |
| 294 | + console.log('Omitting ' + patternlab.patterns[j].key + " from view all sibling rendering."); |
| 295 | + } |
| 296 | + continue; |
| 297 | + } |
| 298 | + |
| 299 | + viewAllPatterns.push(patternlab.patterns[j]); |
| 300 | + } |
| 301 | + } |
| 302 | + |
| 303 | + var viewAllTemplate = fs.readFileSync(path.resolve(paths.source.patternlabFiles, 'templates/viewall.mustache'), 'utf8'); |
| 304 | + var viewAllHtml = pattern_assembler.renderPattern(viewAllTemplate, {partials: viewAllPatterns, patternPartial: patternPartial, cacheBuster: patternlab.cacheBuster}); |
| 305 | + fs.outputFileSync(paths.public.patterns + pattern.flatPatternPath + '/index.html', mainPageHeadHtml + viewAllHtml + mainPageFootHtml); |
| 306 | + } |
| 307 | + } |
| 308 | +} |
| 309 | + |
| 310 | +function buildFrontEnd(patternlab) { |
| 311 | + var pa = require('./pattern_assembler'); |
| 312 | + var mh = require('./media_hunter'); |
| 313 | + var pattern_assembler = new pa(); |
| 314 | + var media_hunter = new mh(); |
| 315 | + var styleguidePatterns = []; |
| 316 | + var paths = patternlab.config.paths; |
| 317 | + |
| 318 | + patternlab.buckets = []; |
| 319 | + patternlab.bucketIndex = []; |
| 320 | + patternlab.patternPaths = {}; |
| 321 | + patternlab.viewAllPaths = {}; |
| 322 | + |
| 323 | + //sort all patterns explicitly. |
| 324 | + patternlab.patterns = patternlab.patterns.sort(function (a, b) { |
| 325 | + if (a.name > b.name) { |
| 326 | + return 1; |
| 327 | + } |
| 328 | + if (a.name < b.name) { |
| 329 | + return -1; |
| 330 | + } |
| 331 | + |
| 332 | + // a must be equal to b |
| 333 | + return 0; |
| 334 | + }); |
| 335 | + |
| 336 | + //find mediaQueries |
| 337 | + media_hunter.find_media_queries('./source/css', patternlab); |
| 338 | + |
| 339 | + // check if patterns are excluded, if not add them to styleguidePatterns |
| 340 | + styleguidePatterns = assembleStyleguidePatterns(patternlab); |
| 341 | + |
| 342 | + //also add the cachebuster value. slight chance this could collide with a user that has defined cacheBuster as a value |
| 343 | + patternlab.data.cacheBuster = patternlab.cacheBuster; |
| 344 | + |
| 345 | + //get the main page head and foot |
| 346 | + var mainPageHead = patternlab.userHead.extendedTemplate.replace('{% pattern-lab-head %}', patternlab.header); |
| 347 | + var mainPageHeadHtml = pattern_assembler.renderPattern(mainPageHead, patternlab.data); |
| 348 | + var mainPageFoot = patternlab.userFoot.extendedTemplate.replace('{% pattern-lab-foot %}', patternlab.footer); |
| 349 | + var mainPageFootHtml = pattern_assembler.renderPattern(mainPageFoot, patternlab.data); |
| 350 | + |
| 351 | + //build the styleguide |
| 352 | + var styleguideTemplate = fs.readFileSync(path.resolve(paths.source.patternlabFiles, 'templates/styleguide.mustache'), 'utf8'); |
| 353 | + var styleguideHtml = pattern_assembler.renderPattern(styleguideTemplate, {partials: styleguidePatterns, cacheBuster: patternlab.cacheBuster}); |
| 354 | + |
| 355 | + fs.outputFileSync(path.resolve(paths.public.styleguide, 'html/styleguide.html'), mainPageHeadHtml + styleguideHtml + mainPageFootHtml); |
| 356 | + |
| 357 | + //build the viewall pages |
| 358 | + buildViewAllPages(mainPageHead, mainPageFoot, mainPageHeadHtml, mainPageFootHtml, pattern_assembler, patternlab); |
| 359 | + |
| 360 | + //build the patternlab website |
| 361 | + var patternlabSiteTemplate = fs.readFileSync(path.resolve(paths.source.patternlabFiles, 'templates/index.mustache'), 'utf8'); |
| 362 | + |
| 363 | + //loop through all patterns.to build the navigation |
| 364 | + //todo: refactor this someday |
| 365 | + buildNavigation(patternlab); |
361 | 366 |
|
362 | 367 | //the patternlab site requires a lot of partials to be rendered. |
363 | 368 | //patternNav |
|
0 commit comments