Skip to content

Commit b45a809

Browse files
committed
building patternlab.partials object during addPattern now.
unit test coverage closes #240
1 parent 88ce8cf commit b45a809

File tree

4 files changed

+74
-32
lines changed

4 files changed

+74
-32
lines changed

CHANGELOG

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ PL-node-v1.1.0
1919
- THX: Thanks @simonknittel for the watchful eyes
2020
- CHG: Changed locations of ./public/styleguide to ./core/styleguide to make ./public/ a cleaner distribution directory
2121
- CHG: Removed scss files and config from project. This is in preparation for including the default asset repo in the future
22+
- FIX: Fix issue where partials were not being sent to Mustache during pattern parameter parsing.
23+
- THX: Thanks to @e2tha-e for reporting this issue.
2224

2325
PL-node-v1.0.0
2426
- FIX: Resolve issue with not hiding underscored patterns.

builder/pattern_assembler.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,15 @@
6464
if(pattern.abspath === patternlab.patterns[i].abspath){
6565
//if abspath already exists, overwrite that element
6666
patternlab.patterns[i] = pattern;
67+
patternlab.partials[pattern.key] = pattern.extendedTemplate || pattern.template;
6768
isNew = false;
6869
break;
6970
}
7071
}
7172
//if the pattern is new, just push to the array
7273
if(isNew){
7374
patternlab.patterns.push(pattern);
75+
patternlab.partials[pattern.key] = pattern.extendedTemplate || pattern.template;
7476
}
7577
}
7678

@@ -177,6 +179,7 @@
177179
for(i = 0; i < patternlab.patterns.length; i++){
178180
if(patternlab.patterns[i].abspath === file){
179181
currentPattern = patternlab.patterns[i];
182+
break;
180183
}
181184
}
182185

test/pattern_assembler_tests.js

Lines changed: 64 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222

2323
test.done();
2424
},
25-
2625
'find_pattern_partials finds verbose partials' : function(test){
2726

2827
//setup current pattern from what we would have during execution
@@ -39,7 +38,6 @@
3938

4039
test.done();
4140
},
42-
4341
'find_pattern_partials_with_style_modifiers finds style modifiers' : function(test){
4442

4543
//setup current pattern from what we would have during execution
@@ -55,7 +53,6 @@
5553

5654
test.done();
5755
},
58-
5956
'find_pattern_partials_with_style_modifiers finds style modifiers with parameters present too' : function(test){
6057

6158
//setup current pattern from what we would have during execution
@@ -71,7 +68,6 @@
7168

7269
test.done();
7370
},
74-
7571
'find_pattern_partials_with_style_modifiers finds style modifiers with verbose partials' : function(test){
7672

7773
//setup current pattern from what we would have during execution
@@ -87,7 +83,6 @@
8783

8884
test.done();
8985
},
90-
9186
'find_pattern_partials_with_style_modifiers finds no style modifiers when only partials present' : function(test){
9287

9388
//setup current pattern from what we would have during execution
@@ -102,7 +97,6 @@
10297

10398
test.done();
10499
},
105-
106100
'find_pattern_partials_with_style_modifiers finds no style modifiers when only partials with pattern parameters present' : function(test){
107101

108102
//setup current pattern from what we would have during execution
@@ -117,7 +111,6 @@
117111

118112
test.done();
119113
},
120-
121114
'find_pattern_partials_with_parameters finds parameters' : function(test){
122115

123116
//setup current pattern from what we would have during execution
@@ -134,7 +127,6 @@
134127
test.done();
135128

136129
},
137-
138130
'find_pattern_partials_with_parameters finds parameters when stylemodifiers present too' : function(test){
139131

140132
//setup current pattern from what we would have during execution
@@ -151,7 +143,6 @@
151143
test.done();
152144

153145
},
154-
155146
'find_pattern_partials_with_parameters finds parameters with verbose partials' : function(test){
156147

157148
//setup current pattern from what we would have during execution
@@ -168,7 +159,6 @@
168159
test.done();
169160

170161
},
171-
172162
'find_pattern_partials_with_parameters finds no style modifiers when only partials present' : function(test){
173163

174164
//setup current pattern from what we would have during execution
@@ -183,7 +173,6 @@
183173

184174
test.done();
185175
},
186-
187176
'find_pattern_partials_with_parameters finds no style modifiers when only partials with style modifiers present' : function(test){
188177

189178
//setup current pattern from what we would have during execution
@@ -198,7 +187,6 @@
198187

199188
test.done();
200189
},
201-
202190
'process_pattern_recursive recursively includes partials' : function(test){
203191

204192
//tests inclusion of partial that will be discovered by diveSync later in iteration than parent
@@ -306,6 +294,7 @@
306294
pl.data.link = {};
307295
pl.config.debug = false;
308296
pl.patterns = [];
297+
pl.partials = {};
309298

310299
var atomPattern = new object_factory.oPattern('test/files/_patterns/00-test/03-styled-atom.mustache', '00-test', '03-styled-atom.mustache');
311300
atomPattern.template = fs.readFileSync(patterns_dir + '/00-test/03-styled-atom.mustache', 'utf8');
@@ -315,8 +304,8 @@
315304
groupPattern.template = fs.readFileSync(patterns_dir + '/00-test/04-group.mustache', 'utf8');
316305
groupPattern.stylePartials = pattern_assembler.find_pattern_partials_with_style_modifiers(groupPattern);
317306

318-
pl.patterns.push(atomPattern);
319-
pl.patterns.push(groupPattern);
307+
pattern_assembler.addPattern(atomPattern, pl);
308+
pattern_assembler.addPattern(groupPattern, pl);
320309

321310
//act
322311
pattern_assembler.process_pattern_recursive('test/files/_patterns/00-test/04-group.mustache', pl, {});
@@ -344,6 +333,7 @@
344333
pl.data.link = {};
345334
pl.config.debug = false;
346335
pl.patterns = [];
336+
pl.partials = {};
347337

348338
var atomPattern = new object_factory.oPattern('test/files/_patterns/00-test/03-styled-atom.mustache', '00-test', '03-styled-atom.mustache');
349339
atomPattern.template = fs.readFileSync(patterns_dir + '/00-test/03-styled-atom.mustache', 'utf8');
@@ -355,8 +345,8 @@
355345
groupPattern.stylePartials = pattern_assembler.find_pattern_partials_with_style_modifiers(groupPattern);
356346
groupPattern.parameteredPartials = pattern_assembler.find_pattern_partials_with_parameters(groupPattern);
357347

358-
pl.patterns.push(atomPattern);
359-
pl.patterns.push(groupPattern);
348+
pattern_assembler.addPattern(atomPattern, pl);
349+
pattern_assembler.addPattern(groupPattern, pl);
360350

361351
//act
362352
pattern_assembler.process_pattern_recursive('test/files/_patterns/00-test/10-multiple-classes-numeric.mustache', pl, {});
@@ -384,6 +374,7 @@
384374
pl.data.link = {};
385375
pl.config.debug = false;
386376
pl.patterns = [];
377+
pl.partials = {};
387378

388379
var atomPattern = new object_factory.oPattern('test/files/_patterns/00-test/03-styled-atom.mustache', '00-test', '03-styled-atom.mustache');
389380
atomPattern.template = fs.readFileSync(patterns_dir + '/00-test/03-styled-atom.mustache', 'utf8');
@@ -393,8 +384,8 @@
393384
mixedPattern.template = fs.readFileSync(patterns_dir + '/00-test/06-mixed.mustache', 'utf8');
394385
mixedPattern.stylePartials = pattern_assembler.find_pattern_partials_with_style_modifiers(mixedPattern);
395386

396-
pl.patterns.push(atomPattern);
397-
pl.patterns.push(mixedPattern);
387+
pattern_assembler.addPattern(atomPattern, pl);
388+
pattern_assembler.addPattern(mixedPattern, pl);
398389

399390
//act
400391
pattern_assembler.process_pattern_recursive('test/files/_patterns/00-test/06-mixed.mustache', pl, {});
@@ -422,6 +413,7 @@
422413
pl.data.link = {};
423414
pl.config.debug = false;
424415
pl.patterns = [];
416+
pl.partials = {};
425417

426418
var atomPattern = new object_factory.oPattern('test/files/_patterns/00-test/03-styled-atom.mustache', '00-test', '03-styled-atom.mustache');
427419
atomPattern.template = fs.readFileSync(patterns_dir + '/00-test/03-styled-atom.mustache', 'utf8');
@@ -431,8 +423,8 @@
431423
bookendPattern.template = fs.readFileSync(patterns_dir + '/00-test/09-bookend.mustache', 'utf8');
432424
bookendPattern.stylePartials = pattern_assembler.find_pattern_partials_with_style_modifiers(bookendPattern);
433425

434-
pl.patterns.push(atomPattern);
435-
pl.patterns.push(bookendPattern);
426+
pattern_assembler.addPattern(atomPattern, pl);
427+
pattern_assembler.addPattern(bookendPattern, pl);
436428

437429
//act
438430
pattern_assembler.process_pattern_recursive('test/files/_patterns/00-test/09-bookend.mustache', pl, {});
@@ -460,19 +452,20 @@
460452
pl.data.link = {};
461453
pl.config.debug = false;
462454
pl.patterns = [];
455+
pl.partials = {};
463456

464457
var atomPattern = new object_factory.oPattern('test/files/_patterns/00-test/03-styled-atom.mustache', '00-test', '03-styled-atom.mustache');
465458
atomPattern.template = fs.readFileSync(patterns_dir + '/00-test/03-styled-atom.mustache', 'utf8');
466459
atomPattern.stylePartials = pattern_assembler.find_pattern_partials_with_style_modifiers(atomPattern);
467-
atomPattern.parameteredPartials = pattern_assembler.find_pattern_partials_with_parameters(atomPattern);
460+
atomPattern.parameteredPartials = pattern_assembler.find_pattern_partials_with_parameters(atomPattern);
468461

469462
var mixedPattern = new object_factory.oPattern('test/files/_patterns/00-test/07-mixed-params.mustache', '00-test', '07-mixed-params.mustache');
470463
mixedPattern.template = fs.readFileSync(patterns_dir + '/00-test/07-mixed-params.mustache', 'utf8');
471464
mixedPattern.stylePartials = pattern_assembler.find_pattern_partials_with_style_modifiers(mixedPattern);
472-
mixedPattern.parameteredPartials = pattern_assembler.find_pattern_partials_with_parameters(mixedPattern);
465+
mixedPattern.parameteredPartials = pattern_assembler.find_pattern_partials_with_parameters(mixedPattern);
473466

474-
pl.patterns.push(atomPattern);
475-
pl.patterns.push(mixedPattern);
467+
pattern_assembler.addPattern(atomPattern, pl);
468+
pattern_assembler.addPattern(mixedPattern, pl);
476469

477470
//act
478471
pattern_assembler.process_pattern_recursive('test/files/_patterns/00-test/07-mixed-params.mustache', pl, {});
@@ -500,19 +493,20 @@
500493
pl.data.link = {};
501494
pl.config.debug = false;
502495
pl.patterns = [];
496+
pl.partials = {};
503497

504498
var atomPattern = new object_factory.oPattern('test/files/_patterns/00-test/03-styled-atom.mustache', '00-test', '03-styled-atom.mustache');
505499
atomPattern.template = fs.readFileSync(patterns_dir + '/00-test/03-styled-atom.mustache', 'utf8');
506500
atomPattern.stylePartials = pattern_assembler.find_pattern_partials_with_style_modifiers(atomPattern);
507-
atomPattern.parameteredPartials = pattern_assembler.find_pattern_partials_with_parameters(atomPattern);
501+
atomPattern.parameteredPartials = pattern_assembler.find_pattern_partials_with_parameters(atomPattern);
508502

509503
var bookendPattern = new object_factory.oPattern('test/files/_patterns/00-test/08-bookend-params.mustache', '00-test', '08-bookend-params.mustache');
510504
bookendPattern.template = fs.readFileSync(patterns_dir + '/00-test/08-bookend-params.mustache', 'utf8');
511505
bookendPattern.stylePartials = pattern_assembler.find_pattern_partials_with_style_modifiers(bookendPattern);
512-
bookendPattern.parameteredPartials = pattern_assembler.find_pattern_partials_with_parameters(bookendPattern);
506+
bookendPattern.parameteredPartials = pattern_assembler.find_pattern_partials_with_parameters(bookendPattern);
513507

514-
pl.patterns.push(atomPattern);
515-
pl.patterns.push(bookendPattern);
508+
pattern_assembler.addPattern(atomPattern, pl);
509+
pattern_assembler.addPattern(bookendPattern, pl);
516510

517511
//act
518512
pattern_assembler.process_pattern_recursive('test/files/_patterns/00-test/08-bookend-params.mustache', pl, {});
@@ -720,6 +714,48 @@
720714
//assert
721715
test.equals(result, patternlab.patterns[1]);
722716
test.done();
717+
},
718+
'addPattern - adds pattern extended template to patternlab partial object' : function(test){
719+
//arrange
720+
var pattern_assembler = new pa();
721+
var patternlab = {};
722+
patternlab.patterns = [];
723+
patternlab.partials = {};
724+
patternlab.data = {link: {}};
725+
726+
var pattern = new object_factory.oPattern('test/files/_patterns/00-test/01-bar.mustache', '00-test', '01-bar.mustache');
727+
pattern.extendedTemplate = 'barExtended';
728+
pattern.template = 'bar';
729+
730+
//act
731+
pattern_assembler.addPattern(pattern, patternlab);
732+
733+
//assert
734+
test.equals(patternlab.patterns.length, 1);
735+
test.equals(patternlab.partials['test-bar'] != undefined, true);
736+
test.equals(patternlab.partials['test-bar'], 'barExtended');
737+
test.done();
738+
},
739+
'addPattern - adds pattern template to patternlab partial object if extendedtemplate does not exist yet' : function(test){
740+
//arrange
741+
var pattern_assembler = new pa();
742+
var patternlab = {};
743+
patternlab.patterns = [];
744+
patternlab.partials = {};
745+
patternlab.data = {link: {}};
746+
747+
var pattern = new object_factory.oPattern('test/files/_patterns/00-test/01-bar.mustache', '00-test', '01-bar.mustache');
748+
pattern.extendedTemplate = undefined;
749+
pattern.template = 'bar';
750+
751+
//act
752+
pattern_assembler.addPattern(pattern, patternlab);
753+
754+
//assert
755+
test.equals(patternlab.patterns.length, 1);
756+
test.equals(patternlab.partials['test-bar'] != undefined, true);
757+
test.equals(patternlab.partials['test-bar'], 'bar');
758+
test.done();
723759
}
724760
};
725761
}());

test/pseudopattern_hunter_tests.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,26 +25,27 @@
2525
pl.data.link = {};
2626
pl.config.debug = false;
2727
pl.patterns = [];
28+
pl.partials = {};
2829
pl.config.patternStates = {};
2930

3031
var atomPattern = new object_factory.oPattern('test/files/_patterns/00-test/03-styled-atom.mustache', '00-test', '03-styled-atom.mustache');
3132
atomPattern.template = fs.readFileSync(patterns_dir + '00-test/03-styled-atom.mustache', 'utf8');
3233
atomPattern.extendedTemplate = atomPattern.template;
3334
atomPattern.stylePartials = pattern_assembler.find_pattern_partials_with_style_modifiers(atomPattern);
3435

35-
pl.patterns.push(atomPattern);
36+
pattern_assembler.addPattern(atomPattern, pl);
3637

3738
//act
3839
var patternCountBefore = pl.patterns.length;
3940
pseudopattern_hunter.find_pseudopatterns(atomPattern, pl);
4041

4142
//assert
42-
test.equals(patternCountBefore + 1, pl.patterns.length);
43+
test.equals(patternCountBefore + 1, pl.patterns.length);
4344
test.equals(pl.patterns[1].key, 'test-styled-atom-alt');
4445
test.equals(pl.patterns[1].extendedTemplate.replace(/\s\s+/g, ' ').replace(/\n/g, ' ').trim(), '<span class="test_base {{styleModifier}}"> {{message}} </span>');
4546
test.equals(JSON.stringify(pl.patterns[1].jsonFileData), JSON.stringify({"message": "alternateMessage"}));
4647

47-
test.done();
48-
}
48+
test.done();
49+
}
4950
}
5051
}());

0 commit comments

Comments
 (0)