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,14 +114,26 @@ 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+
122+ // do plugin-specific registration
123+ pattern . registerPartial ( ) ;
124+ } else {
125+ patternlab . partials [ pattern . patternPartial ] = pattern . patternDesc ;
126+ }
127+
111128 patternlab . patterns . push ( pattern ) ;
112- patternlab . partials [ pattern . patternPartial ] = pattern . extendedTemplate || pattern . template ;
113129
114- // do plugin-specific registration
115- pattern . registerPartial ( ) ;
116130 }
117131 }
118132
133+ function addSubtypePattern ( subtypePattern , patternlab ) {
134+ patternlab . subtypePatterns [ subtypePattern . patternPartial ] = subtypePattern ;
135+ }
136+
119137 // Render a pattern on request. Long-term, this should probably go away.
120138 function renderPattern ( pattern , data , partials ) {
121139 // if we've been passed a full Pattern, it knows what kind of template it
@@ -133,8 +151,6 @@ var pattern_assembler = function () {
133151
134152 function parsePatternMarkdown ( currentPattern , patternlab ) {
135153
136- var markdown_parser = new mp ( ) ;
137-
138154 try {
139155 var markdownFileName = path . resolve ( patternlab . config . paths . source . patterns , currentPattern . subdir , currentPattern . fileName + ".md" ) ;
140156 var markdownFileContents = fs . readFileSync ( markdownFileName , 'utf8' ) ;
@@ -185,11 +201,40 @@ var pattern_assembler = function () {
185201
186202 function processPatternIterative ( relPath , patternlab ) {
187203
204+ //check if the found file is a top-level markdown file
205+ var fileObject = path . parse ( relPath ) ;
206+ if ( fileObject . ext === '.md' ) {
207+ try {
208+ var proposedDirectory = path . resolve ( patternlab . config . paths . source . patterns , fileObject . dir , fileObject . name ) ;
209+ var proposedDirectoryStats = fs . statSync ( proposedDirectory ) ;
210+ if ( proposedDirectoryStats . isDirectory ( ) ) {
211+ var subTypeMarkdownFileContents = fs . readFileSync ( proposedDirectory + '.md' , 'utf8' ) ;
212+ var subTypeMarkdown = markdown_parser . parse ( subTypeMarkdownFileContents ) ;
213+ var subTypePattern = new Pattern ( relPath ) ;
214+ subTypePattern . patternSectionSubtype = true ;
215+ subTypePattern . patternLink = subTypePattern . name + '/index.html' ;
216+ subTypePattern . patternDesc = subTypeMarkdown . markdown ;
217+ subTypePattern . patternPartial = 'viewall-' + subTypePattern . patternPartial ;
218+ subTypePattern . isPattern = false ;
219+ subTypePattern . engine = null ;
220+
221+ addSubtypePattern ( subTypePattern , patternlab )
222+ return subTypePattern ;
223+ }
224+ } catch ( err ) {
225+ // no file exists, meaning it's a pattern markdown file
226+ if ( err . code !== 'ENOENT' ) {
227+ console . log ( err ) ;
228+ }
229+ }
230+
231+ }
232+
188233 var pseudopattern_hunter = new pph ( ) ;
189234
190235 //extract some information
191- var filename = path . basename ( relPath ) ;
192- var ext = path . extname ( filename ) ;
236+ var filename = fileObject . base ;
237+ var ext = fileObject . ext ;
193238 var patternsPath = patternlab . config . paths . source . patterns ;
194239
195240 // skip non-pattern files
@@ -274,8 +319,6 @@ var pattern_assembler = function () {
274319 }
275320
276321 function processPatternRecursive ( file , patternlab ) {
277- var lh = require ( './lineage_hunter' ) ,
278- lih = require ( './list_item_hunter' ) ;
279322
280323 var lineage_hunter = new lh ( ) ,
281324 list_item_hunter = new lih ( ) ;
@@ -292,6 +335,9 @@ var pattern_assembler = function () {
292335 //return if processing an ignored file
293336 if ( typeof currentPattern === 'undefined' ) { return ; }
294337
338+ //we are processing a markdown only pattern
339+ if ( currentPattern . engine === null ) { return ; }
340+
295341 currentPattern . extendedTemplate = currentPattern . template ;
296342
297343 //find how many partials there may be for the given pattern
@@ -321,8 +367,6 @@ var pattern_assembler = function () {
321367 }
322368
323369 function expandPartials ( foundPatternPartials , list_item_hunter , patternlab , currentPattern ) {
324- var smh = require ( './style_modifier_hunter' ) ,
325- ph = require ( './parameter_hunter' ) ;
326370
327371 var style_modifier_hunter = new smh ( ) ,
328372 parameter_hunter = new ph ( ) ;
@@ -365,7 +409,6 @@ var pattern_assembler = function () {
365409 }
366410
367411 function parseDataLinksHelper ( patternlab , obj , key ) {
368- var JSON5 = require ( 'json5' ) ;
369412 var linkRE , dataObjAsString , linkMatches , expandedLink ;
370413
371414 linkRE = / l i n k \. [ A - z 0 - 9 - _ ] + / g;
@@ -427,6 +470,9 @@ var pattern_assembler = function () {
427470 addPattern : function ( pattern , patternlab ) {
428471 addPattern ( pattern , patternlab ) ;
429472 } ,
473+ addSubtypePattern : function ( subtypePattern , patternlab ) {
474+ addSubtypePattern ( subtypePattern , patternlab ) ;
475+ } ,
430476 renderPattern : function ( template , data , partials ) {
431477 return renderPattern ( template , data , partials ) ;
432478 } ,
0 commit comments