Skip to content

Commit e71107d

Browse files
author
Brian Muenzenmeyer
authored
Merge pull request #369 from pattern-lab/368_-_links_inside_listitems
Add support to expand link.patternPartials inside listitems
2 parents ea61410 + cb328f4 commit e71107d

File tree

6 files changed

+16
-65
lines changed

6 files changed

+16
-65
lines changed

core/lib/list_item_hunter.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ var list_item_hunter = function () {
4747
console.log('There was an error parsing JSON for ' + pattern.relPath);
4848
console.log(err);
4949
}
50+
5051
listData = plutils.mergeData(listData, pattern.listitems);
52+
listData = pattern_assembler.parse_data_links_specific(patternlab, listData, 'listitems.json + any pattern listitems.json');
5153

5254
//iterate over each copied block, rendering its contents along with pattenlab.listitems[i]
5355
for (var i = 0; i < repeatedBlockTemplate.length; i++) {

core/lib/object_factory.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ var Pattern = function (relPath, data) {
1616
this.fileExtension = pathObj.ext; // '.mustache'
1717

1818
// this is the unique name, subDir + fileName (sans extension)
19-
this.name = this.subdir.replace(/[\/\\]/g, '-') + '-' + this.fileName; // '00-atoms-00-global-00-colors'
19+
this.name = this.subdir.replace(/[\/\\]/g, '-') + '-' + this.fileName.replace('~', '-'); // '00-atoms-00-global-00-colors'
2020

2121
// the JSON used to render values in the pattern
2222
this.jsonFileData = data || {};

core/lib/pattern_assembler.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ var pattern_assembler = function () {
44
var path = require('path'),
55
fs = require('fs-extra'),
66
Pattern = require('./object_factory').Pattern,
7+
pph = require('./pseudopattern_hunter'),
78
md = require('markdown-it')(),
89
plutils = require('./utilities'),
910
patternEngines = require('./pattern_engines');
@@ -123,6 +124,9 @@ var pattern_assembler = function () {
123124
}
124125

125126
function processPatternIterative(relPath, patternlab) {
127+
128+
var pseudopattern_hunter = new pph();
129+
126130
//extract some information
127131
var filename = path.basename(relPath);
128132
var ext = path.extname(filename);
@@ -198,17 +202,18 @@ var pattern_assembler = function () {
198202
//add currentPattern to patternlab.patterns array
199203
addPattern(currentPattern, patternlab);
200204

205+
//look for a pseudo pattern by checking if there is a file containing same name, with ~ in it, ending in .json
206+
pseudopattern_hunter.find_pseudopatterns(currentPattern, patternlab);
207+
201208
return currentPattern;
202209
}
203210

204211
function processPatternRecursive(file, patternlab) {
205212
var lh = require('./lineage_hunter'),
206-
pph = require('./pseudopattern_hunter'),
207213
lih = require('./list_item_hunter');
208214

209215
var lineage_hunter = new lh(),
210-
list_item_hunter = new lih(),
211-
pseudopattern_hunter = new pph();
216+
list_item_hunter = new lih();
212217

213218
//find current pattern in patternlab object using var file as a partial
214219
var currentPattern, i;
@@ -247,9 +252,6 @@ var pattern_assembler = function () {
247252

248253
//add to patternlab object so we can look these up later.
249254
addPattern(currentPattern, patternlab);
250-
251-
//look for a pseudo pattern by checking if there is a file containing same name, with ~ in it, ending in .json
252-
pseudopattern_hunter.find_pseudopatterns(currentPattern, patternlab);
253255
}
254256

255257
function expandPartials(foundPatternPartials, list_item_hunter, patternlab, currentPattern) {
@@ -376,6 +378,9 @@ var pattern_assembler = function () {
376378
},
377379
parse_data_links: function (patternlab) {
378380
parseDataLinks(patternlab);
381+
},
382+
parse_data_links_specific: function (patternlab, data, label){
383+
return parseDataLinksHelper(patternlab, data, label)
379384
}
380385
};
381386

core/lib/pseudopattern_hunter.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ var pseudopattern_hunter = function () {
4242
var patternVariant = Pattern.create(variantFilePath, variantFileData, {
4343
//use the same template as the non-variant
4444
template: currentPattern.template,
45+
fileExtension: currentPattern.fileExtension,
4546
extendedTemplate: currentPattern.extendedTemplate,
4647
isPseudoPattern: true,
4748
basePattern: currentPattern,

core/lib/ui_builder.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ var eol = require('os').EOL;
1111

1212
function addToPatternPaths(patternlab, patternTypeName, pattern) {
1313
//this is messy, could use a refactor.
14-
patternlab.patternPaths[patternTypeName][pattern.patternBaseName] = pattern.subdir.replace(/\\/g, '/') + "/" + pattern.fileName;
14+
patternlab.patternPaths[patternTypeName][pattern.patternBaseName] = pattern.subdir.replace(/\\/g, '/') + "/" + pattern.fileName.replace('~', '-');
1515
}
1616

1717
//todo: refactor this as a method on the pattern object itself once we merge dev with pattern-engines branch

test/pattern_assembler_tests.js

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -538,63 +538,6 @@
538538
test.equals(bookendPattern.extendedTemplate.replace(/\s\s+/g, ' ').replace(/\n/g, ' ').trim(), expectedValue.trim());
539539
test.done();
540540
},
541-
'processPatternIterative - ignores files that are variants' : function(test){
542-
//arrange
543-
var diveSync = require('diveSync');
544-
var fs = require('fs-extra');
545-
var pa = require('../core/lib/pattern_assembler');
546-
var pattern_assembler = new pa();
547-
var patterns_dir = './test/files/_patterns';
548-
var patternlab = {};
549-
//THIS IS BAD.
550-
patternlab.config = fs.readJSONSync('./patternlab-config.json');
551-
patternlab.config.paths.source.patterns = patterns_dir;
552-
553-
//patternlab.data = fs.readJSONSync(path.resolve(patternlab.config.paths.source.data, 'data.json'));
554-
patternlab.data = {};
555-
//patternlab.listitems = fs.readJSONSync(path.resolve(patternlab.config.paths.source.data, 'listitems.json'));
556-
patternlab.listitems = {};
557-
//patternlab.header = fs.readFileSync(path.resolve(patternlab.config.paths.source.patternlabFiles, 'templates/pattern-header-footer/header.html'), 'utf8');
558-
patternlab.header = '';
559-
//patternlab.footer = fs.readFileSync(path.resolve(patternlab.config.paths.source.patternlabFiles, 'templates/pattern-header-footer/footer.html'), 'utf8');
560-
patternlab.footer = '';
561-
patternlab.patterns = [];
562-
patternlab.data.link = {};
563-
patternlab.partials = {};
564-
565-
//act
566-
diveSync(patterns_dir,
567-
{
568-
filter: function(path, dir){
569-
if(dir){
570-
var remainingPath = path.replace(patterns_dir, '');
571-
var isValidPath = remainingPath.indexOf('/_') === -1;
572-
return isValidPath;
573-
}
574-
return true;
575-
}
576-
},
577-
function(err, file){
578-
//log any errors
579-
if(err){
580-
console.log(err);
581-
return;
582-
}
583-
584-
pattern_assembler.process_pattern_iterative(path.resolve(file), patternlab);
585-
}
586-
);
587-
588-
//assert
589-
var foundVariant = false;
590-
for(var i = 0; i < patternlab.patterns.length; i++){
591-
if(patternlab.patterns[i].fileName.indexOf('~') > -1){
592-
foundVariant = true;
593-
}
594-
}
595-
test.equals(foundVariant, false);
596-
test.done();
597-
},
598541
'setState - applies any patternState matching the pattern' : function(test){
599542
//arrange
600543
var pa = require('../core/lib/pattern_assembler');

0 commit comments

Comments
 (0)