Skip to content

Commit

Permalink
Addresses #375
Browse files Browse the repository at this point in the history
* glob data files in data folder, excluding listitems
* merge data as global data
  • Loading branch information
tevio authored and stevemartin committed Jul 21, 2016
1 parent c35e4ba commit e712694
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 6 deletions.
16 changes: 15 additions & 1 deletion core/lib/patternlab.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,24 @@
"use strict";

var diveSync = require('diveSync'),
glob = require('glob'),
merge = require('merge'),
path = require('path');

// GTP: these two diveSync pattern processors factored out so they can be reused
// from unit tests to reduce code dupe!

function buildPatternData(dataFilesPath, fs) {
var dataFilesPath = dataFilesPath;
var dataFiles = glob.sync(dataFilesPath + '*.json', {"ignore" : [dataFilesPath + 'listitems.json']});
var mergeObject = {}
dataFiles.forEach(function (filePath) {
var jsonData = fs.readJSONSync(path.resolve(filePath), 'utf8')
mergeObject = merge(mergeObject, jsonData)
})
return mergeObject;
}

function processAllPatternsIterative(pattern_assembler, patterns_dir, patternlab) {
diveSync(
patterns_dir,
Expand Down Expand Up @@ -183,7 +196,7 @@ var patternlab_engine = function (config) {

function buildPatterns(deletePatternDir) {
try {
patternlab.data = fs.readJSONSync(path.resolve(paths.source.data, 'data.json'));
patternlab.data = buildPatternData(paths.source.data, fs);
} catch (ex) {
plutils.logRed('missing or malformed' + paths.source.data + 'data.json Pattern Lab may not work without this file.');
patternlab.data = {};
Expand Down Expand Up @@ -392,6 +405,7 @@ var patternlab_engine = function (config) {
// export these free functions so they're available without calling the exported
// function, for use in reducing code dupe in unit tests. At least, until we
// have a better way to do this
patternlab_engine.build_pattern_data = buildPatternData;
patternlab_engine.process_all_patterns_iterative = processAllPatternsIterative;
patternlab_engine.process_all_patterns_recursive = processAllPatternsRecursive;

Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"json5": "^0.5.0",
"lodash": "~4.13.1",
"markdown-it": "^6.0.1",
"merge": "^1.2.0",
"patternengine-node-mustache": "^1.0.0"
},
"devDependencies": {
Expand Down
2 changes: 2 additions & 0 deletions test/files/_data/data.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{ "data" : "test" }

1 change: 1 addition & 0 deletions test/files/_data/foo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "foo" : "bar" }
4 changes: 4 additions & 0 deletions test/files/_data/listitems.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"test_list_item" : "izzn thizzle"
}

17 changes: 12 additions & 5 deletions test/patternlab_tests.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
'use strict';

exports['test nodeunit'] = {
'hello world' : function(test){
test.equals(1,1);
test.done();
}
};
'buildPatternData - should merge all JSON files in the data folder except listitems' : function(test){
var fs = require('fs-extra');
var plMain = require('../core/lib/patternlab');
var data_dir = './test/files/_data/';

var dataResult = plMain.build_pattern_data(data_dir, fs);
test.equals(dataResult.data, "test");
test.equals(dataResult.foo, "bar");
test.equals(dataResult.test_list_item, undefined);
test.done();
}
};

0 comments on commit e712694

Please sign in to comment.