Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
bec84f1
Add cache buster to view all pages
bmuenzenmeyer Jul 28, 2016
9639f00
attempt to fix link.pattern parsing inside json
bmuenzenmeyer Jul 28, 2016
c76464b
console.error instead of throw, to prevent misleading messages
e2tha-e Jul 29, 2016
a98808a
getPartial exposed as getPartial instead of findPartial
e2tha-e Jul 29, 2016
d1129d3
pattern_assembler.findPartial renamed pattern_assembler.getPartial
e2tha-e Jul 29, 2016
e3e88dd
passing unit tests
e2tha-e Jul 29, 2016
ca77a45
using relPath in getPartial instead of string concat
e2tha-e Jul 29, 2016
b29a5b1
eslinted
e2tha-e Jul 29, 2016
4df616a
processing-but-hiding-underscore-prefixed-dirs
e2tha-e Jul 29, 2016
2a9b332
initial refactor - a simple method with test coverage. still working …
bmuenzenmeyer Aug 2, 2016
6e07b8c
comment update
e2tha-e Aug 2, 2016
f9a8747
comment update
e2tha-e Aug 2, 2016
ede5839
more wip for tonight - getting closer with the documentation generati…
bmuenzenmeyer Aug 3, 2016
cfa8f4b
added additional logging for now
bmuenzenmeyer Aug 3, 2016
da9aaa7
add a unit test to address a bug in the underscore engine
geoffp Aug 3, 2016
6230849
silly end-of-line whitespace changes that my editor made on its own
geoffp Aug 4, 2016
8c66f73
committing work in progress
bmuenzenmeyer Aug 5, 2016
9741265
good wip for tonight
bmuenzenmeyer Aug 5, 2016
8079ea5
removing both paths
bmuenzenmeyer Aug 5, 2016
8e6ff02
more wip
bmuenzenmeyer Aug 5, 2016
bd8b602
If the user-editable header and footer are not found, print a descrip…
geoffp Aug 5, 2016
1cc7544
basic navigation working again - with mostly current code
bmuenzenmeyer Aug 5, 2016
74411d1
extracted addToPatternPaths into one location
bmuenzenmeyer Aug 5, 2016
9d1f535
test coverage for add toPatternPaths
bmuenzenmeyer Aug 5, 2016
9382be1
viewallpaths wip
bmuenzenmeyer Aug 6, 2016
649b218
fix a pathing issue
bmuenzenmeyer Aug 6, 2016
dd464e2
progress rewriting the navigation function
bmuenzenmeyer Aug 9, 2016
12672e3
getting closer
bmuenzenmeyer Aug 9, 2016
1237b1e
working pattern subtype viewall
bmuenzenmeyer Aug 10, 2016
6a65b06
functioning retrieval of existing doc patterns or creation on the fly
bmuenzenmeyer Aug 10, 2016
2564ab5
initial flat pattern support in the navigation
bmuenzenmeyer Aug 11, 2016
7cb7169
wip styleguide building with all the generated markdown
bmuenzenmeyer Aug 11, 2016
f900f90
fix partial key
bmuenzenmeyer Aug 11, 2016
8f9f6c9
code cleanup and eslinting
bmuenzenmeyer Aug 11, 2016
dd2bca1
Merge pull request #413 from e2tha-e/findPartial-to-getPartial
bmuenzenmeyer Aug 11, 2016
047c9bb
Merge pull request #420 from pattern-lab/missing-header-footer-warning
bmuenzenmeyer Aug 11, 2016
4bc5267
made user footer/header missing even more obvious
bmuenzenmeyer Aug 11, 2016
f67126d
encode data links
bmuenzenmeyer Aug 11, 2016
1c10a2d
Merge branch 'dev' into ui-rewrite
bmuenzenmeyer Aug 11, 2016
b8626c4
Merge pull request #417 from pattern-lab/underscore-unit-test
bmuenzenmeyer Aug 12, 2016
c9714f5
attempt to fix a pathing problem now that we are using relPath in get…
bmuenzenmeyer Aug 13, 2016
866eeaa
Merge branch 'dev' into ui-rewrite
bmuenzenmeyer Aug 13, 2016
d9d075a
jsdoc comments for ui_builder
bmuenzenmeyer Aug 13, 2016
04a4584
fix unit tests to address patternItems
bmuenzenmeyer Aug 13, 2016
acaa876
push a todo
bmuenzenmeyer Aug 13, 2016
230210f
remove reference to old header injection pattern
bmuenzenmeyer Aug 14, 2016
9c44844
parse yaml frontmatter using an actual library
bmuenzenmeyer Aug 14, 2016
19233c7
jsdoc for markdown_parser
bmuenzenmeyer Aug 14, 2016
3298889
post install script wip - detecting which starterkits are installed
bmuenzenmeyer Aug 14, 2016
5ccc941
post install wip - detecting starterkits
bmuenzenmeyer Aug 14, 2016
fde839d
load starterkit on postinstall if found. only supports one for now
bmuenzenmeyer Aug 14, 2016
c7ec81e
bump version
bmuenzenmeyer Aug 14, 2016
ba83de7
Merge branch 'post-install' into ui-rewrite
bmuenzenmeyer Aug 14, 2016
b33ae78
Merge pull request #414 from e2tha-e/processing-but-hiding-underscore…
bmuenzenmeyer Aug 14, 2016
e59928d
merged and covered https://github.com/pattern-lab/patternlab-node/pul…
bmuenzenmeyer Aug 14, 2016
3c544d7
pattern type view all support is back
bmuenzenmeyer Aug 15, 2016
c85681f
remove old nav objects
bmuenzenmeyer Aug 15, 2016
55715ff
remove ui-rewrite from travis
bmuenzenmeyer Aug 15, 2016
9baf45d
remove caching parameter from README shields
bmuenzenmeyer Aug 15, 2016
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
1 change: 0 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ branches:
only:
- master
- dev
- dev-2.0-core

notifications:
webhooks:
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[![Build Status](https://travis-ci.org/pattern-lab/patternlab-node.png?branch=master)](https://travis-ci.org/pattern-lab/patternlab-node) ![current release](https://img.shields.io/github/release/pattern-lab/patternlab-node.svg?maxAge=2592000) ![license](https://img.shields.io/github/license/pattern-lab/patternlab-node.svg?maxAge=2592000) [![Join the chat at Gitter](https://badges.gitter.im/pattern-lab/node.svg)](https://gitter.im/pattern-lab/node)
[![Build Status](https://travis-ci.org/pattern-lab/patternlab-node.png?branch=master)](https://travis-ci.org/pattern-lab/patternlab-node) ![current release](https://img.shields.io/github/release/pattern-lab/patternlab-node.svg) ![license](https://img.shields.io/github/license/pattern-lab/patternlab-node.svg) [![Join the chat at Gitter](https://badges.gitter.im/pattern-lab/node.svg)](https://gitter.im/pattern-lab/node)

# Pattern Lab Node Core

Expand Down
6 changes: 3 additions & 3 deletions core/lib/lineage_hunter.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ var lineage_hunter = function () {
if (matches !== null) {
matches.forEach(function (match) {
//get the ancestorPattern
var ancestorPattern = pattern_assembler.findPartial(pattern.findPartial(match), patternlab);
var ancestorPattern = pattern_assembler.getPartial(pattern.findPartial(match), patternlab);

if (ancestorPattern && pattern.lineageIndex.indexOf(ancestorPattern.patternPartial) === -1) {
//add it since it didnt exist
Expand Down Expand Up @@ -83,7 +83,7 @@ var lineage_hunter = function () {

//find all lineage - patterns being consumed by this one
for (var h = 0; h < pattern.lineageIndex.length; h++) {
var lineagePattern = pattern_assembler.findPartial(pattern.lineageIndex[h], patternlab);
var lineagePattern = pattern_assembler.getPartial(pattern.lineageIndex[h], patternlab);
setPatternState('fromFuture', lineagePattern, pattern);
}
}
Expand All @@ -93,7 +93,7 @@ var lineage_hunter = function () {
//find all reverse lineage - that is, patterns consuming this one
for (var j = 0; j < pattern.lineageRIndex.length; j++) {

var lineageRPattern = pattern_assembler.findPartial(pattern.lineageRIndex[j], patternlab);
var lineageRPattern = pattern_assembler.getPartial(pattern.lineageRIndex[j], patternlab);

//only set patternState if pattern.patternState "is less than" the lineageRPattern.patternstate
//or if lineageRPattern.patternstate (the consuming pattern) does not have a state
Expand Down
2 changes: 1 addition & 1 deletion core/lib/list_item_hunter.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ var list_item_hunter = function () {

//get the partial
var partialName = foundPartials[j].match(/([\w\-\.\/~]+)/g)[0];
var partialPattern = pattern_assembler.findPartial(partialName, patternlab);
var partialPattern = pattern_assembler.getPartial(partialName, patternlab);

//create a copy of the partial so as to not pollute it after the get_pattern_by_key call.
var cleanPartialPattern;
Expand Down
40 changes: 19 additions & 21 deletions core/lib/markdown_parser.js
Original file line number Diff line number Diff line change
@@ -1,41 +1,39 @@
"use strict";

var md = require('markdown-it')();
var yaml = require('js-yaml');

var markdown_parser = function () {

/**
* Converts a markdown block with frontmatter (each is optional, technically) to a well-formed object.
* @param block - the ".md" file, which can contain frontmatter or not, or only frontmatter.
* @returns an object with any frontmatter keys, plus a .markdown key
*/
function parseMarkdownBlock(block) {
var returnObject = {};

try {
//for each block process the yaml frontmatter and markdown
var frontmatterRE = /---\r?\n{1}([\s\S]*)---\r?\n{1}([\s\S]*)+/gm;
var chunks = frontmatterRE.exec(block);
if (chunks && chunks[1]) {

//convert each yaml frontmatter key / value into an object key
var frontmatter = chunks[1];
var frontmatterLines = frontmatter.split(/\n/gm);
for (var j = 0; j < frontmatterLines.length; j++) {

var frontmatterLine = frontmatterLines[j];
if (frontmatterLine.length > 0) {

var frontmatterLineChunks = frontmatterLine.split(':'); //test this
var frontmatterKey = frontmatterLineChunks[0].toLowerCase().trim();
var frontmatterValueString = frontmatterLineChunks[1].trim();

returnObject[frontmatterKey] = frontmatterValueString;
}

if (chunks) {
//we got some frontmatter
if (chunks && chunks[1]) {
//parse the yaml if we got it
var frontmatter = chunks[1];
returnObject = yaml.safeLoad(frontmatter);
}
}

if (chunks && chunks[2]) {
//parse the actual markdown
returnObject.markdown = md.render(chunks[2]);
if (chunks[2]) {
//parse the actual markdown if it exists
returnObject.markdown = md.render(chunks[2]);
} else {
returnObject.markdown = '';
}
} else {
//assume the passed in block is raw markdown
//assume the block was only markdown
returnObject.markdown = md.render(block);
}
} catch (ex) {
Expand Down
48 changes: 10 additions & 38 deletions core/lib/object_factory.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ var Pattern = function (relPath, data) {
this.fileExtension = pathObj.ext; // '.mustache'

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

// the JSON used to render values in the pattern
this.jsonFileData = data || {};
Expand All @@ -36,17 +36,24 @@ var Pattern = function (relPath, data) {
// the top-level pattern group this pattern belongs to. 'atoms'
this.patternGroup = this.subdir.split(path.sep)[0].replace(/^\d*-/, '');

//00-atoms if needed
this.patternType = this.subdir.split(path.sep)[0];

// the sub-group this pattern belongs to.
this.patternSubGroup = path.basename(this.subdir).replace(/^\d*-/, ''); // 'global'

// Not sure what this is used for.
//00-colors if needed
this.patternSubType = path.basename(this.subdir);

// the joined pattern group and subgroup directory
this.flatPatternPath = this.subdir.replace(/[\/\\]/g, '-'); // '00-atoms-00-global'

// The canonical "key" by which this pattern is known. This is the callable
// name of the pattern. UPDATE: this.key is now known as this.patternPartial
this.patternPartial = this.patternGroup + '-' + this.patternBaseName;

this.isPattern = true;
this.isFlatPattern = this.patternGroup === this.patternSubGroup;
this.patternState = '';
this.template = '';
this.patternPartialCode = '';
Expand Down Expand Up @@ -117,41 +124,6 @@ Pattern.create = function (relPath, data, customProps) {
return extend(newPattern, customProps);
};


var oPatternType = function (name) {
this.patternTypeLC = name;
this.patternTypeUC = name.split('-').reduce(function (val, working) {
return val.charAt(0).toUpperCase() + val.slice(1) + ' ' + working.charAt(0).toUpperCase() + working.slice(1);
}, '').trim();
this.patternTypeItems = [];
this.patternTypeItemsIndex = [];
this.patternItems = [];
this.patternItemsIndex = [];
};


var oPatternSubType = function (name) {
this.patternSubtypeLC = name;
this.patternSubtypeUC = name.split('-').reduce(function (val, working) {
return val.charAt(0).toUpperCase() + val.slice(1) + ' ' + working.charAt(0).toUpperCase() + working.slice(1);
}, '').trim();
this.patternSubtypeItems = [];
this.patternSubtypeItemsIndex = [];
};


var oPatternSubTypeItem = function (name) {
this.patternPath = '';
this.patternPartialCode = '';
this.patternName = name.split(' ').reduce(function (val, working) {
return val.charAt(0).toUpperCase() + val.slice(1) + ' ' + working.charAt(0).toUpperCase() + working.slice(1);
}, '').trim();
};


module.exports = {
Pattern: Pattern,
oPatternType: oPatternType,
oPatternSubType: oPatternSubType,
oPatternSubTypeItem: oPatternSubTypeItem
Pattern: Pattern
};
2 changes: 1 addition & 1 deletion core/lib/parameter_hunter.js
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ var parameter_hunter = function () {
pattern.parameteredPartials.forEach(function (pMatch) {
//find the partial's name and retrieve it
var partialName = pMatch.match(/([\w\-\.\/~]+)/g)[0];
var partialPattern = pattern_assembler.findPartial(partialName, patternlab);
var partialPattern = pattern_assembler.getPartial(partialName, patternlab);

//if we retrieved a pattern we should make sure that its extendedTemplate is reset. looks to fix #190
partialPattern.extendedTemplate = partialPattern.template;
Expand Down
14 changes: 8 additions & 6 deletions core/lib/pattern_assembler.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ var pattern_assembler = function () {
//else look by verbose syntax
for (var i = 0; i < patternlab.patterns.length; i++) {
switch (partialName) {
case patternlab.patterns[i].relPath:
case patternlab.patterns[i].subdir + '/' + patternlab.patterns[i].fileName:
case patternlab.patterns[i].subdir + '/' + patternlab.patterns[i].fileName + '.mustache':
return patternlab.patterns[i];
}
}
Expand All @@ -45,7 +45,8 @@ var pattern_assembler = function () {
return patternlab.patterns[i];
}
}
throw 'Could not find pattern with partial ' + partialName;
console.error('Could not find pattern with partial ' + partialName);
return undefined;
}

function buildListItems(container) {
Expand Down Expand Up @@ -91,7 +92,7 @@ var pattern_assembler = function () {
function addPattern(pattern, patternlab) {

//add the link to the global object
patternlab.data.link[pattern.patternGroup + '-' + pattern.patternBaseName] = '/patterns/' + pattern.patternLink;
patternlab.data.link[pattern.patternPartial] = '/patterns/' + pattern.patternLink;

//only push to array if the array doesn't contain this pattern
var isNew = true;
Expand Down Expand Up @@ -214,7 +215,7 @@ var pattern_assembler = function () {
subTypePattern.patternSectionSubtype = true;
subTypePattern.patternLink = subTypePattern.name + '/index.html';
subTypePattern.patternDesc = subTypeMarkdown.markdown;
subTypePattern.patternPartial = 'viewall-' + subTypePattern.patternPartial;
subTypePattern.flatPatternPath = subTypePattern.flatPatternPath + '-' + subTypePattern.fileName;
subTypePattern.isPattern = false;
subTypePattern.engine = null;

Expand Down Expand Up @@ -417,8 +418,9 @@ var pattern_assembler = function () {

if (linkMatches) {
for (var i = 0; i < linkMatches.length; i++) {
expandedLink = patternlab.data.link[linkMatches[i].split('.')[1]];
expandedLink = encodeURI(patternlab.data.link[linkMatches[i].split('.')[1]]);
if (expandedLink) {
expandedLink = expandedLink.replace('\\', '/');
if (patternlab.config.debug) {
console.log('expanded data link from ' + linkMatches[i] + ' to ' + expandedLink + ' inside ' + key);
}
Expand Down Expand Up @@ -482,7 +484,7 @@ var pattern_assembler = function () {
process_pattern_recursive: function (file, patternlab, additionalData) {
processPatternRecursive(file, patternlab, additionalData);
},
findPartial: function (partial, patternlab) {
getPartial: function (partial, patternlab) {
return getPartial(partial, patternlab);
},
combine_listItems: function (patternlab) {
Expand Down
53 changes: 15 additions & 38 deletions core/lib/patternlab.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* patternlab-node - v2.3.0 - 2016
* patternlab-node - v2.4.0 - 2016
*
* Brian Muenzenmeyer, Geoff Pursell, and the web community.
* Licensed under the MIT license.
Expand All @@ -21,27 +21,17 @@ var diveSync = require('diveSync'),
function buildPatternData(dataFilesPath, fs) {
var dataFilesPath = dataFilesPath;
var dataFiles = glob.sync(dataFilesPath + '*.json', {"ignore" : [dataFilesPath + 'listitems.json']});
var mergeObject = {}
var mergeObject = {};
dataFiles.forEach(function (filePath) {
var jsonData = fs.readJSONSync(path.resolve(filePath), 'utf8')
mergeObject = _.merge(mergeObject, jsonData)
})
var jsonData = fs.readJSONSync(path.resolve(filePath), 'utf8');
mergeObject = _.merge(mergeObject, jsonData);
});
return mergeObject;
}

function processAllPatternsIterative(pattern_assembler, patterns_dir, patternlab) {
diveSync(
patterns_dir,
{
filter: function (thisPath, dir) {
if (dir) {
var remainingPath = thisPath.replace(patterns_dir, '');
var isValidPath = remainingPath.indexOf('/_') === -1;
return isValidPath;
}
return true;
}
},
function (err, file) {
//log any errors
if (err) {
Expand All @@ -56,16 +46,6 @@ function processAllPatternsIterative(pattern_assembler, patterns_dir, patternlab
function processAllPatternsRecursive(pattern_assembler, patterns_dir, patternlab) {
diveSync(
patterns_dir,
{
filter: function (thisPath, dir) {
if (dir) {
var remainingPath = thisPath.replace(patterns_dir, '');
var isValidPath = remainingPath.indexOf('/_') === -1;
return isValidPath;
}
return true;
}
},
function (err, file) {
//log any errors
if (err) {
Expand All @@ -85,7 +65,7 @@ var patternlab_engine = function (config) {
pa = require('./pattern_assembler'),
pe = require('./pattern_exporter'),
lh = require('./lineage_hunter'),
buildFrontEnd = require('./ui_builder'),
ui = require('./ui_builder'),
plutils = require('./utilities'),
sm = require('./starterkit_manager'),
patternlab = {};
Expand All @@ -99,7 +79,6 @@ var patternlab_engine = function (config) {
console.log(patternlab.package.version);
}


function help() {

console.log('');
Expand Down Expand Up @@ -185,7 +164,7 @@ var patternlab_engine = function (config) {
}

function listStarterkits() {
var starterkit_manager = new sm(patternlab);
var starterkit_manager = new sm(patternlab.config);
return starterkit_manager.list_starterkits();
}

Expand Down Expand Up @@ -244,19 +223,17 @@ var patternlab_engine = function (config) {
patternlab.userHead = fs.readFileSync(path.resolve(paths.source.meta, '_00-head.mustache'), 'utf8');
}
catch (ex) {
if (patternlab.config.debug) {
console.log(ex);
console.log('Could not find optional user-defined header, usually found at ./source/_meta/_00-head.mustache. It was likely deleted.');
}
plutils.logRed('\nWARNING: Could not find the user-editable header template, currently configured to be at ' + path.join(config.paths.source.meta, '_00-head.mustache') + '. Your configured path may be incorrect (check paths.source.meta in your config file), the file may have been deleted, or it may have been left in the wrong place during a migration or update.\n');
if (patternlab.config.debug) { console.log(ex); }
process.exit(1);
}
try {
patternlab.userFoot = fs.readFileSync(path.resolve(paths.source.meta, '_01-foot.mustache'), 'utf8');
}
catch (ex) {
if (patternlab.config.debug) {
console.log(ex);
console.log('Could not find optional user-defined footer, usually found at ./source/_meta/_01-foot.mustache. It was likely deleted.');
}
plutils.logRed('\nWARNING: Could not find the user-editable footer template, currently configured to be at ' + path.join(config.paths.source.meta, '_01-foot.mustache') + '. Your configured path may be incorrect (check paths.source.meta in your config file), the file may have been deleted, or it may have been left in the wrong place during a migration or update.\n');
if (patternlab.config.debug) { console.log(ex); }
process.exit(1);
}

//now that all the main patterns are known, look for any links that might be within data and expand them
Expand All @@ -275,7 +252,7 @@ var patternlab_engine = function (config) {
//set pattern-specific header if necessary
var head;
if (patternlab.userHead) {
head = patternlab.userHead.replace('{% pattern-lab-head %}', patternlab.header);
head = patternlab.userHead;
} else {
head = patternlab.header;
}
Expand Down Expand Up @@ -389,7 +366,7 @@ var patternlab_engine = function (config) {
},
build: function (callback, deletePatternDir) {
buildPatterns(deletePatternDir);
buildFrontEnd(patternlab);
new ui().buildFrontend(patternlab);
printDebug();
callback();
},
Expand Down
Loading