Skip to content

LineageR #72

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Dec 13, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 22 additions & 11 deletions builder/lineage_hunter.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,32 +15,43 @@

function findlineage(pattern, patternlab){

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

//add if it doesnt exist
if (pattern.lineageIndex.indexOf(cleanPattern) === -1){
if (pattern.lineageIndex.indexOf(foundPattern) === -1){

pattern.lineageIndex.push(cleanPattern);
pattern.lineageIndex.push(foundPattern);

patternlab.patterns.forEach(function(p, index, patterns){
patternlab.patterns.forEach(function(ancestorPattern, index, patterns){

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

if(searchPattern === cleanPattern){
if(searchPattern === foundPattern){
//create the more complex patternLineage object too
var l = {
"lineagePattern": cleanPattern,
"lineagePath": "../../patterns/" + p.patternLink
}
"lineagePattern": foundPattern,
"lineagePath": "../../patterns/" + ancestorPattern.patternLink
};
pattern.lineage.push(JSON.stringify(l));

//also, add the lineageR entry if it doesn't exist
var patternLabel = pattern.patternGroup + "-" + pattern.patternName;
if (ancestorPattern.lineageRIndex.indexOf(patternLabel) === -1){
ancestorPattern.lineageRIndex.push(patternLabel);

//create the more complex patternLineage object in reverse
var lr = {
"lineagePattern": patternLabel,
"lineagePath": "../../patterns/" + pattern.patternLink
};
ancestorPattern.lineageR.push(JSON.stringify(lr));
}
}

});
Expand Down
4 changes: 4 additions & 0 deletions builder/object_factory.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@
this.patternGroup = name.substring(name.indexOf('-') + 1, name.indexOf('-', 4) + 1 - name.indexOf('-') + 1);
this.patternSubGroup = subdir.substring(subdir.indexOf('/') + 4);
this.flatPatternPath = subdir.replace(/\//g, '-');
this.lineage = [];
this.lineageIndex = [];
this.lineageR = [];
this.lineageRIndex = [];
};

var oBucket = function(name){
Expand Down
19 changes: 12 additions & 7 deletions builder/patternlab.js
Original file line number Diff line number Diff line change
Expand Up @@ -116,18 +116,12 @@ var patternlab_engine = function(){
}

//write the compiled template to the public patterns directory
flatPatternPath = currentPattern.name + '/' + currentPattern.name + '.html';
currentPattern.patternLink = flatPatternPath;
currentPattern.patternLink = currentPattern.name + '/' + currentPattern.name + '.html';;

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

//add footer info before writing
var currentPatternFooter = renderPattern(patternlab.footer, currentPattern);

fs.outputFileSync('./public/patterns/' + flatPatternPath, patternlab.header + currentPattern.patternPartial + currentPatternFooter);

//add as a partial in case this is referenced later. convert to syntax needed by existing patterns
var sub = subdir.substring(subdir.indexOf('-') + 1);
var folderIndex = sub.indexOf(path.sep);
Expand All @@ -148,6 +142,17 @@ var patternlab_engine = function(){
patternlab.patterns.push(currentPattern);
});

//render all patterns last, so lineageR works
patternlab.patterns.forEach(function(pattern, index, patterns){

//add footer info before writing
var patternFooter = renderPattern(patternlab.footer, pattern);

fs.outputFileSync('./public/patterns/' + pattern.patternLink, patternlab.header + pattern.patternPartial + patternFooter);

});


}

function buildFrontEnd(){
Expand Down
2 changes: 1 addition & 1 deletion source/_patternlab-files/pattern-header-footer/footer.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
// handle injection of items from PHP
var patternPartial = "{{ patternGroup }}-{{ patternName }}";
var lineage = [{{{ lineage }}}];
var lineageR = "{{ lineageR }}";
var lineageR = [{{{ lineageR }}}];
var patternState = "{{patternState}}"
var cssEnabled = false; //TODO
</script>
Expand Down
24 changes: 20 additions & 4 deletions test/lineage_hunter_tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,11 @@
"patternGroup": "organisms",
"patternSubGroup": "organisms\\00-global",
"flatPatternPath": "02-organisms\\00-global",
"patternState": ""
"patternState": "",
"lineage": [],
"lineageIndex": [],
"lineageR": [],
"lineageRIndex": []
};
var patternlab = {
patterns: [
Expand All @@ -35,7 +39,11 @@
"patternGroup": "atoms",
"patternSubGroup": "atoms\\03-images",
"flatPatternPath": "00-atoms\\03-images",
"patternState": ""
"patternState": "",
"lineage": [],
"lineageIndex": [],
"lineageR": [],
"lineageRIndex": []
},
{
"name": "01-molecules-05-navigation-00-primary-nav",
Expand All @@ -49,7 +57,11 @@
"patternGroup": "molecules",
"patternSubGroup": "molecules\\05-navigation",
"flatPatternPath": "01-molecules\\05-navigation",
"patternState": ""
"patternState": "",
"lineage": [],
"lineageIndex": [],
"lineageR": [],
"lineageRIndex": []
},
{
"name": "01-molecules-04-forms-00-search",
Expand All @@ -63,7 +75,11 @@
"patternGroup": "molecules",
"patternSubGroup": "molecules\\04-forms",
"flatPatternPath": "01-molecules\\04-forms",
"patternState": ""
"patternState": "",
"lineage": [],
"lineageIndex": [],
"lineageR": [],
"lineageRIndex": []
}
]
};
Expand Down