Skip to content
This repository was archived by the owner on Dec 10, 2019. It is now read-only.

Commit 44b7319

Browse files
committed
factor out buildNavigation()
1 parent a682296 commit 44b7319

File tree

1 file changed

+140
-135
lines changed

1 file changed

+140
-135
lines changed

core/lib/ui_builder.js

Lines changed: 140 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212

1313
var path = require('path');
1414
var fs = require('fs-extra');
15+
var of = require('./object_factory');
16+
1517

1618
// PRIVATE FUNCTIONS
1719

@@ -57,141 +59,8 @@ function assembleStyleguidePatterns(patternlab) {
5759
return styleguidePatterns;
5860
}
5961

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++) {
19564

19665
var pattern = patternlab.patterns[i];
19766
var bucketName = pattern.name.replace(/\\/g, '-').split('-')[1];
@@ -358,6 +227,142 @@ function buildFrontEnd(patternlab) {
358227

359228
patternlab.viewAllPaths[bucketName][pattern.patternSubGroup] = pattern.flatPatternPath;
360229
}
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);
361366

362367
//the patternlab site requires a lot of partials to be rendered.
363368
//patternNav

0 commit comments

Comments
 (0)