Skip to content

Commit 5df0eb4

Browse files
committed
copy found partials when processing pseudo-patterns
fixes #474
1 parent bfef92f commit 5df0eb4

File tree

4 files changed

+63
-20
lines changed

4 files changed

+63
-20
lines changed

core/lib/pseudopattern_hunter.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ var pseudopattern_hunter = function () {
5151
extendedTemplate: currentPattern.extendedTemplate,
5252
isPseudoPattern: true,
5353
basePattern: currentPattern,
54+
stylePartials: currentPattern.stylePartials,
55+
parameteredPartials: currentPattern.parameteredPartials,
5456

5557
// use the same template engine as the non-variant
5658
engine: currentPattern.engine
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
{{test}}
2+
{{> test-styled-atom:modifier--foo }}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"test" : "pseudo"
3+
}

test/pseudopattern_hunter_tests.js

Lines changed: 56 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,35 @@ var pha = require('../core/lib/pseudopattern_hunter');
55
var pa = require('../core/lib/pattern_assembler');
66
var Pattern = require('../core/lib/object_factory').Pattern;
77

8+
var fs = require('fs-extra');
9+
var pattern_assembler = new pa();
10+
var pseudopattern_hunter = new pha();
11+
var patterns_dir = './test/files/_patterns/';
12+
13+
function stubPatternlab() {
14+
var pl = {};
15+
pl.config = {
16+
paths: {
17+
source: {
18+
patterns: patterns_dir
19+
}
20+
}
21+
};
22+
pl.data = {};
23+
pl.data.link = {};
24+
pl.config.debug = false;
25+
pl.patterns = [];
26+
pl.partials = {};
27+
pl.config.patternStates = {};
28+
pl.config.outputFileSuffixes = { rendered: ''}
29+
30+
return pl;
31+
}
32+
833
exports['pseudopattern_hunter'] = {
934
'pseudpattern found and added as a pattern' : function (test) {
1035
//arrange
11-
var fs = require('fs-extra');
12-
var pattern_assembler = new pa();
13-
var pseudopattern_hunter = new pha();
14-
var patterns_dir = './test/files/_patterns/';
15-
16-
var pl = {};
17-
pl.config = {
18-
paths: {
19-
source: {
20-
patterns: patterns_dir
21-
}
22-
}
23-
};
24-
pl.data = {};
25-
pl.data.link = {};
26-
pl.config.debug = false;
27-
pl.patterns = [];
28-
pl.partials = {};
29-
pl.config.patternStates = {};
30-
pl.config.outputFileSuffixes = { rendered: ''}
36+
var pl = stubPatternlab();
3137

3238
var atomPattern = new Pattern('00-test/03-styled-atom.mustache');
3339
atomPattern.template = fs.readFileSync(patterns_dir + '00-test/03-styled-atom.mustache', 'utf8');
@@ -47,6 +53,36 @@ exports['pseudopattern_hunter'] = {
4753
test.equals(JSON.stringify(pl.patterns[1].jsonFileData), JSON.stringify({"message": "alternateMessage"}));
4854
test.equals(pl.patterns[1].patternLink, '00-test-03-styled-atom-alt' + path.sep + '00-test-03-styled-atom-alt.html');
4955

56+
test.done();
57+
},
58+
59+
'pseudpattern variant includes stylePartials and parameteredPartials' : function (test) {
60+
//arrange
61+
var pl = stubPatternlab();
62+
63+
var atomPattern = new Pattern('00-test/03-styled-atom.mustache');
64+
atomPattern.template = fs.readFileSync(patterns_dir + '00-test/03-styled-atom.mustache', 'utf8');
65+
atomPattern.extendedTemplate = atomPattern.template;
66+
atomPattern.stylePartials = atomPattern.findPartialsWithStyleModifiers(atomPattern);
67+
atomPattern.parameteredPartials = atomPattern.findPartialsWithPatternParameters(atomPattern);
68+
69+
var pseudoPattern = new Pattern('00-test/474-pseudomodifier.mustache');
70+
pseudoPattern.template = fs.readFileSync(patterns_dir + '00-test/474-pseudomodifier.mustache', 'utf8');
71+
pseudoPattern.extendedTemplate = atomPattern.template;
72+
pseudoPattern.stylePartials = pseudoPattern.findPartialsWithStyleModifiers(pseudoPattern);
73+
pseudoPattern.parameteredPartials = pseudoPattern.findPartialsWithPatternParameters(pseudoPattern);
74+
75+
pattern_assembler.addPattern(atomPattern, pl);
76+
pattern_assembler.addPattern(pseudoPattern, pl);
77+
78+
//act
79+
pseudopattern_hunter.find_pseudopatterns(pseudoPattern, pl);
80+
81+
//assert
82+
test.equals(pl.patterns[2].patternPartial, 'test-pseudomodifier-test');
83+
test.equals(pl.patterns[2].stylePartials, pseudoPattern.stylePartials);
84+
test.equals(pl.patterns[2].parameteredPartials, pseudoPattern.parameteredPartials);
85+
5086
test.done();
5187
}
5288
};

0 commit comments

Comments
 (0)