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 45aecc9
Show file tree
Hide file tree
Showing 6 changed files with 108 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
76 changes: 76 additions & 0 deletions test/files/_data/data.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
{
"key": "value",
"key2": "use this for variables you want to load globally",
"title": "Nullizzle shizznit velizzle, hizzle, suscipit own yo', gravida vizzle, arcu.",
"img": {
"avatar": {
"src": "http://placeimg.com/100/100/people",
"alt": "Avatar"
},
"square": {
"src": "http://placeimg.com/300/300/nature",
"alt": "Square"
},
"rectangle": {
"src": "http://placeimg.com/400/300/tech",
"alt": "Rectangle"
},
"landscape-4x3": {
"src": "http://placeimg.com/400/300/tech",
"alt": "4x3 Image"
},
"landscape-16x9": {
"src": "http://placeimg.com/640/360/tech",
"alt": "16x9 Image"
}
},
"headline": {
"short": "Lorizzle pimpin' dolizzle sit amet I",
"medium": "Rizzle adipiscing elizzle. Nullam sapien velizzle, shit volutpizzle, my"
},
"excerpt": {
"short": "Shizz fo shizzle mah nizzle fo rizzle, mah home g-dizzle, gravida vizzle, arcu. Pellentesque crunk tortizzle. Sed erizzle. Black izzle sheezy telliv.",
"medium": "Izzle crazy tempizzle sizzle. We gonna chung gangsta get down get down fo shizzle turpizzle. Away break it down black. Pellentesque bling bling rhoncus fo shizzle. In hac the bizzle platea dictumst. Black dapibizzle. Crackalackin.",
"long": "Curabitizzle fo shizzle diam quizzle nisi nizzle mollizzle. Suspendisse boofron. Morbi odio. Sure pizzle. Crazy orci. Shut the shizzle up maurizzle get down get down, check out this a, go to hizzle sit amizzle, malesuada izzle, pede. Pellentesque gravida. Vestibulizzle check it out mi, volutpat izzle, shiz sed, shiznit sempizzle, da bomb. Funky fresh in ipsum. Da bomb volutpat felis vizzle daahng dawg. Crizzle quis dope izzle fo shizzle my ni."
},
"description": "Fizzle crazy tortor. Sed rizzle. Ass pimpin' dolor dapibizzle turpis tempizzle fo shizzle my nizzle. Maurizzle pellentesque its fo rizzle izzle turpis. Get down get down we gonna chung nizzle. Shizzlin dizzle eleifend rhoncizzle break it down. In yo ghetto platea dictumst. Bling bling dapibizzle. Curabitur break yo neck, yall fo, pretizzle eu, go to hizzle dope, own yo' vitae, nunc. Bizzle suscipizzle. Ass semper velit sizzle fo.",
"url": "http://lorizzle.nl/",
"name": {
"first": "Junius",
"firsti": "J",
"middle": "Marius",
"middlei": "M",
"last": "Koolen",
"lasti": "K"
},
"year": {
"long": "2013",
"short": "13"
},
"month": {
"long": "January",
"short": "Jan",
"digit": "01"
},
"dayofweek": {
"long": "Sunday",
"short": "Sun"
},
"day": {
"long": "01",
"short": "1",
"ordinal": "st"
},
"hour": {
"long": "06",
"short": "6",
"military": "06",
"ampm": "am"
},
"minute": {
"long": "20",
"short": "20"
},
"seconds": "31"
}

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"
}

16 changes: 11 additions & 5 deletions test/patternlab_tests.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
'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.foo, "bar");
test.equals(dataResult.test_list_item, undefined);
test.done();
}
};

0 comments on commit 45aecc9

Please sign in to comment.