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

Commit 67a8546

Browse files
author
Brian Muenzenmeyer
committed
Merge pull request #72 from pattern-lab/dev
LineageR
2 parents fc4d420 + 8c85264 commit 67a8546

File tree

5 files changed

+59
-23
lines changed

5 files changed

+59
-23
lines changed

builder/lineage_hunter.js

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,32 +15,43 @@
1515

1616
function findlineage(pattern, patternlab){
1717

18-
pattern.lineage = [];
19-
pattern.lineageIndex = [];
2018
//find the {{> template-name }} within patterns
2119
var matches = pattern.template.match(/{{>([ ]+)?([A-Za-z0-9-]+)(?:\:[A-Za-z0-9-]+)?(?:(| )\(.*)?([ ]+)}}/g);
2220
if(matches !== null){
2321
matches.forEach(function(match, index, matches){
2422
//strip out the template cruft
25-
var cleanPattern = match.replace("{{> ", "").replace(" }}", "");
23+
var foundPattern = match.replace("{{> ", "").replace(" }}", "");
2624

2725
//add if it doesnt exist
28-
if (pattern.lineageIndex.indexOf(cleanPattern) === -1){
26+
if (pattern.lineageIndex.indexOf(foundPattern) === -1){
2927

30-
pattern.lineageIndex.push(cleanPattern);
28+
pattern.lineageIndex.push(foundPattern);
3129

32-
patternlab.patterns.forEach(function(p, index, patterns){
30+
patternlab.patterns.forEach(function(ancestorPattern, index, patterns){
3331

3432
//find the pattern in question
35-
var searchPattern = p.patternGroup + "-" + p.patternName;
33+
var searchPattern = ancestorPattern.patternGroup + "-" + ancestorPattern.patternName;
3634

37-
if(searchPattern === cleanPattern){
35+
if(searchPattern === foundPattern){
3836
//create the more complex patternLineage object too
3937
var l = {
40-
"lineagePattern": cleanPattern,
41-
"lineagePath": "../../patterns/" + p.patternLink
42-
}
38+
"lineagePattern": foundPattern,
39+
"lineagePath": "../../patterns/" + ancestorPattern.patternLink
40+
};
4341
pattern.lineage.push(JSON.stringify(l));
42+
43+
//also, add the lineageR entry if it doesn't exist
44+
var patternLabel = pattern.patternGroup + "-" + pattern.patternName;
45+
if (ancestorPattern.lineageRIndex.indexOf(patternLabel) === -1){
46+
ancestorPattern.lineageRIndex.push(patternLabel);
47+
48+
//create the more complex patternLineage object in reverse
49+
var lr = {
50+
"lineagePattern": patternLabel,
51+
"lineagePath": "../../patterns/" + pattern.patternLink
52+
};
53+
ancestorPattern.lineageR.push(JSON.stringify(lr));
54+
}
4455
}
4556

4657
});

builder/object_factory.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@
2323
this.patternGroup = name.substring(name.indexOf('-') + 1, name.indexOf('-', 4) + 1 - name.indexOf('-') + 1);
2424
this.patternSubGroup = subdir.substring(subdir.indexOf('/') + 4);
2525
this.flatPatternPath = subdir.replace(/\//g, '-');
26+
this.lineage = [];
27+
this.lineageIndex = [];
28+
this.lineageR = [];
29+
this.lineageRIndex = [];
2630
};
2731

2832
var oBucket = function(name){

builder/patternlab.js

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -116,18 +116,12 @@ var patternlab_engine = function(){
116116
}
117117

118118
//write the compiled template to the public patterns directory
119-
flatPatternPath = currentPattern.name + '/' + currentPattern.name + '.html';
120-
currentPattern.patternLink = flatPatternPath;
119+
currentPattern.patternLink = currentPattern.name + '/' + currentPattern.name + '.html';;
121120

122121
//find pattern lineage
123122
var lineage_hunter = new lh();
124123
lineage_hunter.find_lineage(currentPattern, patternlab);
125124

126-
//add footer info before writing
127-
var currentPatternFooter = renderPattern(patternlab.footer, currentPattern);
128-
129-
fs.outputFileSync('./public/patterns/' + flatPatternPath, patternlab.header + currentPattern.patternPartial + currentPatternFooter);
130-
131125
//add as a partial in case this is referenced later. convert to syntax needed by existing patterns
132126
var sub = subdir.substring(subdir.indexOf('-') + 1);
133127
var folderIndex = sub.indexOf(path.sep);
@@ -148,6 +142,17 @@ var patternlab_engine = function(){
148142
patternlab.patterns.push(currentPattern);
149143
});
150144

145+
//render all patterns last, so lineageR works
146+
patternlab.patterns.forEach(function(pattern, index, patterns){
147+
148+
//add footer info before writing
149+
var patternFooter = renderPattern(patternlab.footer, pattern);
150+
151+
fs.outputFileSync('./public/patterns/' + pattern.patternLink, patternlab.header + pattern.patternPartial + patternFooter);
152+
153+
});
154+
155+
151156
}
152157

153158
function buildFrontEnd(){

source/_patternlab-files/pattern-header-footer/footer.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
// handle injection of items from PHP
1111
var patternPartial = "{{ patternGroup }}-{{ patternName }}";
1212
var lineage = [{{{ lineage }}}];
13-
var lineageR = "{{ lineageR }}";
13+
var lineageR = [{{{ lineageR }}}];
1414
var patternState = "{{patternState}}"
1515
var cssEnabled = false; //TODO
1616
</script>

test/lineage_hunter_tests.js

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@
1919
"patternGroup": "organisms",
2020
"patternSubGroup": "organisms\\00-global",
2121
"flatPatternPath": "02-organisms\\00-global",
22-
"patternState": ""
22+
"patternState": "",
23+
"lineage": [],
24+
"lineageIndex": [],
25+
"lineageR": [],
26+
"lineageRIndex": []
2327
};
2428
var patternlab = {
2529
patterns: [
@@ -35,7 +39,11 @@
3539
"patternGroup": "atoms",
3640
"patternSubGroup": "atoms\\03-images",
3741
"flatPatternPath": "00-atoms\\03-images",
38-
"patternState": ""
42+
"patternState": "",
43+
"lineage": [],
44+
"lineageIndex": [],
45+
"lineageR": [],
46+
"lineageRIndex": []
3947
},
4048
{
4149
"name": "01-molecules-05-navigation-00-primary-nav",
@@ -49,7 +57,11 @@
4957
"patternGroup": "molecules",
5058
"patternSubGroup": "molecules\\05-navigation",
5159
"flatPatternPath": "01-molecules\\05-navigation",
52-
"patternState": ""
60+
"patternState": "",
61+
"lineage": [],
62+
"lineageIndex": [],
63+
"lineageR": [],
64+
"lineageRIndex": []
5365
},
5466
{
5567
"name": "01-molecules-04-forms-00-search",
@@ -63,7 +75,11 @@
6375
"patternGroup": "molecules",
6476
"patternSubGroup": "molecules\\04-forms",
6577
"flatPatternPath": "01-molecules\\04-forms",
66-
"patternState": ""
78+
"patternState": "",
79+
"lineage": [],
80+
"lineageIndex": [],
81+
"lineageR": [],
82+
"lineageRIndex": []
6783
}
6884
]
6985
};

0 commit comments

Comments
 (0)