Skip to content

Commit afc65a2

Browse files
committed
committing bare minimum functionality
1 parent d38101e commit afc65a2

File tree

4 files changed

+93
-37
lines changed

4 files changed

+93
-37
lines changed

core/lib/object_factory.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ var Pattern = function (relPath, data) {
4646
// name of the pattern. UPDATE: this.key is now known as this.patternPartial
4747
this.patternPartial = this.patternGroup + '-' + this.patternBaseName;
4848

49+
this.isPattern = true;
4950
this.patternState = '';
5051
this.template = '';
5152
this.patternPartialCode = '';
@@ -64,11 +65,13 @@ Pattern.prototype = {
6465
// render method on oPatterns; this acts as a proxy for the PatternEngine's
6566
// render function
6667
render: function (data, partials) {
67-
return this.engine.renderPattern(this, data || this.jsonFileData, partials);
68+
if (this.engine){
69+
return this.engine.renderPattern(this, data || this.jsonFileData, partials);
70+
}
6871
},
6972

7073
registerPartial: function () {
71-
if (typeof this.engine.registerPartial === 'function') {
74+
if (this.engine && typeof this.engine.registerPartial === 'function') {
7275
this.engine.registerPartial(this);
7376
}
7477
},

core/lib/pattern_assembler.js

Lines changed: 60 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
"use strict";
22

3-
var pattern_assembler = function () {
4-
var path = require('path'),
5-
fs = require('fs-extra'),
6-
Pattern = require('./object_factory').Pattern,
7-
pph = require('./pseudopattern_hunter'),
8-
mp = require('./markdown_parser'),
9-
plutils = require('./utilities'),
10-
patternEngines = require('./pattern_engines');
11-
3+
var path = require('path'),
4+
fs = require('fs-extra'),
5+
Pattern = require('./object_factory').Pattern,
6+
pph = require('./pseudopattern_hunter'),
7+
mp = require('./markdown_parser'),
8+
plutils = require('./utilities'),
9+
patternEngines = require('./pattern_engines'),
10+
lh = require('./lineage_hunter'),
11+
lih = require('./list_item_hunter'),
12+
smh = require('./style_modifier_hunter'),
13+
ph = require('./parameter_hunter'),
14+
JSON5 = require('json5');
15+
16+
var markdown_parser = new mp();
1217

18+
var pattern_assembler = function () {
1319
// HELPER FUNCTIONS
1420

1521
function getPartial(partialName, patternlab) {
@@ -108,11 +114,18 @@ var pattern_assembler = function () {
108114
}
109115

110116
// do global registration
117+
118+
119+
if(pattern.isPattern){
120+
patternlab.partials[pattern.patternPartial] = pattern.extendedTemplate || pattern.template;
121+
// do plugin-specific registration
122+
pattern.registerPartial();
123+
} else{
124+
patternlab.partials['viewall-' + pattern.patternPartial] = pattern.patternDesc;
125+
}
126+
111127
patternlab.patterns.push(pattern);
112-
patternlab.partials[pattern.patternPartial] = pattern.extendedTemplate || pattern.template;
113128

114-
// do plugin-specific registration
115-
pattern.registerPartial();
116129
}
117130
}
118131

@@ -127,14 +140,13 @@ var pattern_assembler = function () {
127140
// therefore just need to create a dummpy pattern to be able to render
128141
// it
129142
var dummyPattern = Pattern.createEmpty({extendedTemplate: pattern});
143+
plutils.logGreen(data);
130144
return patternEngines.mustache.renderPattern(dummyPattern, data, partials);
131145
}
132146
}
133147

134148
function parsePatternMarkdown(currentPattern, patternlab) {
135149

136-
var markdown_parser = new mp();
137-
138150
try {
139151
var markdownFileName = path.resolve(patternlab.config.paths.source.patterns, currentPattern.subdir, currentPattern.fileName + ".md");
140152
var markdownFileContents = fs.readFileSync(markdownFileName, 'utf8');
@@ -185,11 +197,40 @@ var pattern_assembler = function () {
185197

186198
function processPatternIterative(relPath, patternlab) {
187199

200+
//check if the found file is a top-level markdown file
201+
var fileObject = path.parse(relPath);
202+
if(fileObject.ext === '.md'){
203+
try{
204+
var proposedDirectory = path.resolve(patternlab.config.paths.source.patterns, fileObject.dir, fileObject.name);
205+
var proposedDirectoryStats = fs.statSync(proposedDirectory);
206+
if (proposedDirectoryStats.isDirectory()) {
207+
var subTypeMarkdownFileContents = fs.readFileSync(proposedDirectory + '.md', 'utf8');
208+
var subTypeMarkdown = markdown_parser.parse(subTypeMarkdownFileContents);
209+
var subTypePattern = new Pattern(relPath);
210+
subTypePattern.patternSectionSubtype = true;
211+
subTypePattern.patternLink = subTypePattern.name + '/index.html';
212+
subTypePattern.patternPartial = 'viewall-' + subTypePattern.patternPartial;
213+
subTypePattern.patternDesc = subTypeMarkdown.markdown;
214+
subTypePattern.isPattern = false;
215+
subTypePattern.engine = null;
216+
217+
addPattern(subTypePattern, patternlab);
218+
return subTypePattern;
219+
}
220+
} catch (err) {
221+
// no file exists, meaning it's a pattern markdown file
222+
if (err.code !== 'ENOENT') {
223+
console.log(err);
224+
}
225+
}
226+
227+
}
228+
188229
var pseudopattern_hunter = new pph();
189230

190231
//extract some information
191-
var filename = path.basename(relPath);
192-
var ext = path.extname(filename);
232+
var filename = fileObject.base;
233+
var ext = fileObject.ext;
193234
var patternsPath = patternlab.config.paths.source.patterns;
194235

195236
// skip non-pattern files
@@ -274,8 +315,6 @@ var pattern_assembler = function () {
274315
}
275316

276317
function processPatternRecursive(file, patternlab) {
277-
var lh = require('./lineage_hunter'),
278-
lih = require('./list_item_hunter');
279318

280319
var lineage_hunter = new lh(),
281320
list_item_hunter = new lih();
@@ -292,6 +331,9 @@ var pattern_assembler = function () {
292331
//return if processing an ignored file
293332
if (typeof currentPattern === 'undefined') { return; }
294333

334+
//we are processing a markdown only pattern
335+
if (currentPattern.engine === null) { return; }
336+
295337
currentPattern.extendedTemplate = currentPattern.template;
296338

297339
//find how many partials there may be for the given pattern
@@ -321,8 +363,6 @@ var pattern_assembler = function () {
321363
}
322364

323365
function expandPartials(foundPatternPartials, list_item_hunter, patternlab, currentPattern) {
324-
var smh = require('./style_modifier_hunter'),
325-
ph = require('./parameter_hunter');
326366

327367
var style_modifier_hunter = new smh(),
328368
parameter_hunter = new ph();
@@ -365,7 +405,6 @@ var pattern_assembler = function () {
365405
}
366406

367407
function parseDataLinksHelper(patternlab, obj, key) {
368-
var JSON5 = require('json5');
369408
var linkRE, dataObjAsString, linkMatches, expandedLink;
370409

371410
linkRE = /link\.[A-z0-9-_]+/g;

core/lib/patternlab.js

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
/*
2-
* patternlab-node - v2.1.1 - 2016
3-
*
1+
/*
2+
* patternlab-node - v2.1.1 - 2016
3+
*
44
* Brian Muenzenmeyer, Geoff Pursell, and the web community.
5-
* Licensed under the MIT license.
6-
*
7-
* Many thanks to Brad Frost and Dave Olsen for inspiration, encouragement, and advice.
5+
* Licensed under the MIT license.
6+
*
7+
* Many thanks to Brad Frost and Dave Olsen for inspiration, encouragement, and advice.
88
*
99
*/
1010

@@ -148,7 +148,7 @@ var patternlab_engine = function (config) {
148148
// references. This happens specifically with the Handlebars engine. Remove
149149
// if you like 180MB log files.
150150
function propertyStringReplacer(key, value) {
151-
if (key === 'engine' && value.engineName) {
151+
if (key === 'engine' && value && value.engineName) {
152152
return '{' + value.engineName + ' engine object}';
153153
}
154154
return value;
@@ -276,6 +276,10 @@ var patternlab_engine = function (config) {
276276
//render all patterns last, so lineageR works
277277
patternlab.patterns.forEach(function (pattern) {
278278

279+
if(!pattern.isPattern) {
280+
return false;
281+
}
282+
279283
pattern.header = head;
280284

281285
//todo move this into lineage_hunter
@@ -294,15 +298,15 @@ var patternlab_engine = function (config) {
294298
console.log(err);
295299
}
296300
allData = plutils.mergeData(allData, pattern.jsonFileData);
301+
allData.cacheBuster = patternlab.cacheBuster;
297302

298-
//var headHTML = pattern_assembler.renderPattern(patternlab.userHead, allData);
299303
var headHTML = pattern_assembler.renderPattern(pattern.header, allData);
300304

301305
//render the extendedTemplate with all data
302306
pattern.patternPartialCode = pattern_assembler.renderPattern(pattern, allData);
303307

304308
//todo see if this is still needed
305-
pattern.patternPartialCodeE = entity_encoder.encode(pattern.patternPartialCode);
309+
//pattern.patternPartialCodeE = entity_encoder.encode(pattern.patternPartialCode);
306310

307311
// stringify this data for individual pattern rendering and use on the styleguide
308312
// see if patternData really needs these other duped values
@@ -333,7 +337,7 @@ var patternlab_engine = function (config) {
333337

334338
//set the pattern-specific footer by compiling the general-footer with data, and then adding it to the meta footer
335339
var footerPartial = pattern_assembler.renderPattern(patternlab.footer, {
336-
isPattern: true,
340+
isPattern: pattern.isPattern,
337341
patternData: pattern.patternData,
338342
cacheBuster: patternlab.cacheBuster
339343
});

core/lib/ui_builder.js

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
var path = require('path');
44
var fs = require('fs-extra');
5+
var ae = require('./annotation_exporter');
56
var of = require('./object_factory');
67
var pa = require('./pattern_assembler');
78
var pattern_assembler = new pa();
@@ -264,14 +265,23 @@ function buildFooterHTML(patternlab, patternPartial) {
264265
}
265266

266267
function buildViewAllHTML(patternlab, patterns, patternPartial) {
268+
269+
patterns.push({
270+
"patternName": "awesome",
271+
"patternLink": "00-atoms-01-global/index.html",
272+
"patternPartial": "viewall-atoms-global",
273+
"patternDesc": "<p>This is the description of the category.</p>\n",
274+
"patternSectionSubtype": true
275+
})
276+
267277
var viewAllHTML = pattern_assembler.renderPattern(patternlab.viewAll,
268278
{
269279
partials: patterns,
270280
patternPartial: patternPartial,
271281
cacheBuster: patternlab.cacheBuster
272282
}, {
273283
patternSection: patternlab.patternSection,
274-
patternSectionSubType: patternlab.patternSectionSubType
284+
patternSectionSubtype: patternlab.patternSectionSubType
275285
});
276286
return viewAllHTML;
277287
}
@@ -401,7 +411,6 @@ function sortPatterns(patternsArray) {
401411
// MAIN BUILDER FUNCTION
402412

403413
function buildFrontEnd(patternlab) {
404-
var ae = require('./annotation_exporter');
405414
var annotation_exporter = new ae(patternlab);
406415
var styleguidePatterns = [];
407416
var paths = patternlab.config.paths;
@@ -434,9 +443,10 @@ function buildFrontEnd(patternlab) {
434443
patternLabFoot : footerPartial
435444
});
436445

446+
console.log(styleguidePatterns);
447+
437448
//build the styleguide
438-
var styleguideTemplate = fs.readFileSync(path.resolve(paths.source.patternlabFiles, 'viewall.mustache'), 'utf8');
439-
var styleguideHtml = pattern_assembler.renderPattern(styleguideTemplate,
449+
var styleguideHtml = pattern_assembler.renderPattern(patternlab.viewAll,
440450
{
441451
partials: styleguidePatterns,
442452
cacheBuster: patternlab.cacheBuster

0 commit comments

Comments
 (0)