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 = / l i n k \. [ A - z 0 - 9 - _ ] + / g;
0 commit comments