Skip to content

Commit 672ea88

Browse files
committed
checking in some sloppy wip
1 parent 578a9af commit 672ea88

File tree

10 files changed

+313
-202
lines changed

10 files changed

+313
-202
lines changed

core/index.js

Lines changed: 81 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -184,87 +184,99 @@ const patternlab_module = function (config) {
184184
//diveSync again to recursively include partials, filling out the
185185
//extendedTemplate property of the patternlab.patterns elements
186186
// 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();
187+
return patternlab.processAllPatternsRecursive(paths.source.patterns).then(() => {
188+
189+
console.log('+++++++++++++++++++++?????????')
190+
191+
//take the user defined head and foot and process any data and patterns that apply
192+
const headPatternPromise = processMetaPattern(`_00-head.${patternlab.config.patternExtension}`, 'userHead', patternlab);
193+
const footPatternPromise = processMetaPattern(`_01-foot.${patternlab.config.patternExtension}`, 'userFoot', patternlab);
194+
195+
return Promise.all([headPatternPromise, footPatternPromise]).then(() => {
196+
197+
//cascade any patternStates
198+
lineage_hunter.cascade_pattern_states(patternlab);
199+
200+
//set pattern-specific header if necessary
201+
let head;
202+
if (patternlab.userHead) {
203+
head = patternlab.userHead;
231204
} 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-
}
205+
head = patternlab.header;
237206
}
238207

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")}`);
208+
//set the pattern-specific header by compiling the general-header with data, and then adding it to the meta header
209+
return render(Pattern.createEmpty({extendedTemplate: patternlab.header}), {
210+
cacheBuster: patternlab.cacheBuster
211+
}).then((results) => {
212+
patternlab.data.patternLabHead = results;
213+
214+
// If deletePatternDir == true or graph needs to be updated
215+
// rebuild all patterns
216+
let patternsToBuild = null;
217+
218+
// If deletePatternDir == true or graph needs to be updated
219+
// rebuild all patterns
220+
patternsToBuild = null;
221+
222+
console.log('222', patternlab.incrementalBuildsEnabled)
223+
224+
if (patternlab.incrementalBuildsEnabled) {
225+
// When the graph was loaded from file, some patterns might have been moved/deleted between runs
226+
// so the graph data become out of sync
227+
patternlab.graph.sync().forEach(n => {
228+
logger.info("[Deleted/Moved] " + n);
229+
});
230+
231+
// TODO Find created or deleted files
232+
const now = new Date().getTime();
233+
markModifiedPatterns(now, patternlab);
234+
patternsToBuild = patternlab.graph.compileOrder();
235+
} else {
236+
// build all patterns, mark all to be rebuilt
237+
patternsToBuild = patternlab.patterns;
238+
for (const p of patternsToBuild) {
239+
p.compileState = CompileState.NEEDS_REBUILD;
250240
}
241+
}
251242

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-
});
243+
//render all patterns last, so lineageR works
244+
245+
console.log(243, patternsToBuild)
246+
247+
return patternsToBuild
248+
.reduce((previousPromise, pattern) => {
249+
return previousPromise.then(() => patternlab.renderSinglePattern(pattern, head));
250+
}, Promise.resolve())
251+
.then(() => {
252+
// Saves the pattern graph when all files have been compiled
253+
PatternGraph.storeToFile(patternlab);
254+
if (patternlab.config.exportToGraphViz) {
255+
PatternGraph.exportToDot(patternlab, "dependencyGraph.dot");
256+
logger.info(`Exported pattern graph to ${path.join(config.paths.public.root, "dependencyGraph.dot")}`);
257+
}
258+
259+
//export patterns if necessary
260+
pattern_exporter.export_patterns(patternlab);
261+
262+
}).catch(reason => {
263+
console.log(reason);
264+
logger.error('Error rendering patterns');
265+
});
266+
267+
}).catch(reason => {
268+
console.log(reason);
269+
logger.error('Error rendering pattern lab header');
270+
});
259271

260272
}).catch(reason => {
261273
console.log(reason);
262-
logger.error('Error rendering pattern lab header');
274+
logger.error('Error processing meta patterns');
263275
});
264276

265277
}).catch(reason => {
266278
console.log(reason);
267-
logger.error('Error processing meta patterns');
279+
logger.error('Error processing patterns recursively');
268280
});
269281

270282
}).catch(reason => {

core/lib/decompose.js

Lines changed: 7 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -3,65 +3,11 @@
33
const logger = require('./log');
44
const lh = require('./lineage_hunter');
55
const lih = require('./list_item_hunter');
6-
const ph = require('./parameter_hunter');
7-
const smh = require('./style_modifier_hunter');
86
const addPattern = require('./addPattern');
9-
const jsonCopy = require('./json_copy');
10-
const getPartial = require('./get');
7+
const expandPartials = require('./expandPartials');
118

129
const lineage_hunter = new lh();
1310
const list_item_hunter = new lih();
14-
const parameter_hunter = new ph();
15-
const style_modifier_hunter = new smh();
16-
17-
function expandPartials(foundPatternPartials, patternlab, currentPattern) {
18-
19-
// these needs to be inside the function call, unless there is a better way to handle the recursion
20-
const processRecursive = require('./processRecursive');
21-
22-
logger.debug(`found partials for ${currentPattern.patternPartial}`);
23-
24-
// determine if the template contains any pattern parameters. if so they
25-
// must be immediately consumed
26-
return parameter_hunter.find_parameters(currentPattern, patternlab).then(() => {
27-
28-
//do something with the regular old partials
29-
foundPatternPartials.forEach((foundPartial) => {
30-
31-
var partial = currentPattern.findPartial(foundPartial);
32-
var partialPath;
33-
34-
//identify which pattern this partial corresponds to
35-
for (var j = 0; j < patternlab.patterns.length; j++) {
36-
if (patternlab.patterns[j].patternPartial === partial ||
37-
patternlab.patterns[j].relPath.indexOf(partial) > -1)
38-
{
39-
partialPath = patternlab.patterns[j].relPath;
40-
}
41-
}
42-
43-
//recurse through nested partials to fill out this extended template.
44-
return processRecursive(partialPath, patternlab).then(() => { //eslint-disable-line no-loop-func
45-
//complete assembly of extended template
46-
//create a copy of the partial so as to not pollute it after the getPartial call.
47-
var partialPattern = getPartial(partial, patternlab);
48-
var cleanPartialPattern = jsonCopy(partialPattern, `partial pattern ${partial}`);
49-
50-
//if partial has style modifier data, replace the styleModifier value
51-
if (currentPattern.stylePartials && currentPattern.stylePartials.length > 0) {
52-
style_modifier_hunter.consume_style_modifier(cleanPartialPattern, foundPartial, patternlab);
53-
}
54-
55-
//this is what we came here for
56-
logger.debug(`within ${currentPattern.patternPartial}, replacing extendedTemplate partial ${foundPartial} with ${cleanPartialPattern.patternPartial}'s extededTemplate`);
57-
currentPattern.extendedTemplate = currentPattern.extendedTemplate.replace(foundPartial, cleanPartialPattern.extendedTemplate);
58-
return Promise.resolve();
59-
});
60-
});
61-
}).catch(reason => {
62-
logger.error(reason);
63-
});
64-
}
6511

6612
/**
6713
* A helper that unravels a pattern looking for partials or listitems to unravel.
@@ -72,32 +18,17 @@ function expandPartials(foundPatternPartials, patternlab, currentPattern) {
7218
*/
7319
module.exports = function (pattern, patternlab, ignoreLineage) {
7420

75-
//set the extendedTemplate to operate on later if we find partials to replace
76-
pattern.extendedTemplate = pattern.template;
21+
console.log('21 currentPattern', pattern.patternPartial)
7722

78-
//find how many partials there may be for the given pattern
79-
const foundPatternPartials = pattern.findPartials();
23+
//set the extendedTemplate to operate on later if we find partials to replace
24+
if (!pattern.extendedTemplate) {
25+
pattern.extendedTemplate = pattern.template;
26+
}
8027

8128
//find any listItem blocks that within the pattern, even if there are no partials
8229
const listItemPromise = list_item_hunter.process_list_item_partials(pattern, patternlab);
8330

84-
// expand any partials present in this pattern; that is, drill down into
85-
// the template and replace their calls in this template with rendered
86-
// results
87-
let expandPartialPromise = undefined;
88-
if (pattern.engine.expandPartials && (foundPatternPartials !== null && foundPatternPartials.length > 0)) {
89-
90-
// eslint-disable-next-line
91-
expandPartialPromise = expandPartials(foundPatternPartials, patternlab, pattern).then(() => {
92-
93-
// update the extendedTemplate in the partials object in case this
94-
// pattern is consumed later
95-
patternlab.partials[pattern.patternPartial] = pattern.extendedTemplate;
96-
97-
});
98-
} else {
99-
expandPartialPromise = Promise.resolve();
100-
}
31+
const expandPartialPromise = expandPartials(pattern, patternlab)
10132

10233
let lineagePromise;
10334

core/lib/expandPartials.js

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
"use strict";
2+
3+
const logger = require('./log');
4+
const ph = require('./parameter_hunter');
5+
const smh = require('./style_modifier_hunter');
6+
const jsonCopy = require('./json_copy');
7+
const getPartial = require('./get');
8+
9+
const parameter_hunter = new ph();
10+
const style_modifier_hunter = new smh();
11+
12+
module.exports = function (currentPattern, patternlab) {
13+
14+
const processRecursive = require('./processRecursive');
15+
16+
console.log('15 currentPattern', currentPattern.patternPartial)
17+
18+
//find how many partials there may be for the given pattern
19+
const foundPatternPartials = currentPattern.findPartials();
20+
21+
console.log(20, currentPattern.patternPartial, foundPatternPartials)
22+
23+
// expand any partials present in this pattern; that is, drill down into
24+
// the template and replace their calls in this template with rendered
25+
// results
26+
if (currentPattern.engine.expandPartials && (foundPatternPartials !== null && foundPatternPartials.length > 0)) {
27+
28+
29+
logger.debug(`found partials for ${currentPattern.patternPartial}`);
30+
31+
// determine if the template contains any pattern parameters. if so they
32+
// must be immediately consumed
33+
return parameter_hunter.find_parameters(currentPattern, patternlab).then(() => {
34+
35+
//do something with the regular old partials
36+
foundPatternPartials.forEach((foundPartial) => {
37+
38+
var partial = currentPattern.findPartial(foundPartial);
39+
var partialPath;
40+
41+
//identify which pattern this partial corresponds to
42+
for (var j = 0; j < patternlab.patterns.length; j++) {
43+
if (patternlab.patterns[j].patternPartial === partial ||
44+
patternlab.patterns[j].relPath.indexOf(partial) > -1)
45+
{
46+
partialPath = patternlab.patterns[j].relPath;
47+
}
48+
}
49+
50+
//recurse through nested partials to fill out this extended template.
51+
return processRecursive(partialPath, patternlab).then(() => { //eslint-disable-line no-loop-func
52+
//complete assembly of extended template
53+
//create a copy of the partial so as to not pollute it after the getPartial call.
54+
var partialPattern = getPartial(partial, patternlab);
55+
var cleanPartialPattern = jsonCopy(partialPattern, `partial pattern ${partial}`);
56+
57+
//if partial has style modifier data, replace the styleModifier value
58+
if (currentPattern.stylePartials && currentPattern.stylePartials.length > 0) {
59+
style_modifier_hunter.consume_style_modifier(cleanPartialPattern, foundPartial, patternlab);
60+
}
61+
62+
//this is what we came here for
63+
logger.debug(`within ${currentPattern.patternPartial}, replacing extendedTemplate partial ${foundPartial} with ${cleanPartialPattern.patternPartial}'s extendedTemplate`);
64+
65+
//console.log(`decompose 58 within ${currentPattern.patternPartial}, replacing extendedTemplate partial ${foundPartial} with ${cleanPartialPattern.patternPartial}'s extededTemplate`)
66+
//console.log(currentPattern.extendedTemplate);
67+
//console.log(cleanPartialPattern.extendedTemplate);
68+
currentPattern.extendedTemplate = currentPattern.extendedTemplate.replace(foundPartial, cleanPartialPattern.extendedTemplate);
69+
70+
// update the extendedTemplate in the partials object in case this
71+
// pattern is consumed later
72+
patternlab.partials[currentPattern.patternPartial] = currentPattern.extendedTemplate;
73+
74+
//console.log(62, `currentPattern ${currentPattern.patternPartial} .extendedTemplate now ${currentPattern.extendedTemplate}`)
75+
return Promise.resolve();
76+
}).catch(reason => {
77+
console.log(reason)
78+
logger.error(reason);
79+
});
80+
81+
console.log('82 is bad')
82+
83+
});
84+
85+
}).catch(reason => {
86+
console.log(reason)
87+
logger.error(reason);
88+
});
89+
}
90+
return Promise.resolve();
91+
}

core/lib/get.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,6 @@ module.exports = function (partialName, patternlab) {
3131
return patternlab.patterns[i];
3232
}
3333
}
34-
logger.warning('Could not find pattern referenced with partial syntax ' + partialName + '. This can occur when a pattern was renamed, moved, or no longer exists but it still called within a different template somewhere.');
34+
logger.warning('Could not find pattern referenced with partial syntax ' + partialName + '. This can occur when a pattern was renamed, moved, or no longer exists but it still referenced within a different template or within data as a link.');
3535
return undefined;
3636
};

0 commit comments

Comments
 (0)