1
1
"use strict" ;
2
2
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 ( ) ;
12
17
18
+ var pattern_assembler = function ( ) {
13
19
// HELPER FUNCTIONS
14
20
15
21
function getPartial ( partialName , patternlab ) {
@@ -108,14 +114,26 @@ var pattern_assembler = function () {
108
114
}
109
115
110
116
// 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
+
111
128
patternlab . patterns . push ( pattern ) ;
112
- patternlab . partials [ pattern . patternPartial ] = pattern . extendedTemplate || pattern . template ;
113
129
114
- // do plugin-specific registration
115
- pattern . registerPartial ( ) ;
116
130
}
117
131
}
118
132
133
+ function addSubtypePattern ( subtypePattern , patternlab ) {
134
+ patternlab . subtypePatterns [ subtypePattern . patternPartial ] = subtypePattern ;
135
+ }
136
+
119
137
// Render a pattern on request. Long-term, this should probably go away.
120
138
function renderPattern ( pattern , data , partials ) {
121
139
// if we've been passed a full Pattern, it knows what kind of template it
@@ -133,8 +151,6 @@ var pattern_assembler = function () {
133
151
134
152
function parsePatternMarkdown ( currentPattern , patternlab ) {
135
153
136
- var markdown_parser = new mp ( ) ;
137
-
138
154
try {
139
155
var markdownFileName = path . resolve ( patternlab . config . paths . source . patterns , currentPattern . subdir , currentPattern . fileName + ".md" ) ;
140
156
var markdownFileContents = fs . readFileSync ( markdownFileName , 'utf8' ) ;
@@ -185,11 +201,40 @@ var pattern_assembler = function () {
185
201
186
202
function processPatternIterative ( relPath , patternlab ) {
187
203
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
+
188
233
var pseudopattern_hunter = new pph ( ) ;
189
234
190
235
//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 ;
193
238
var patternsPath = patternlab . config . paths . source . patterns ;
194
239
195
240
// skip non-pattern files
@@ -274,8 +319,6 @@ var pattern_assembler = function () {
274
319
}
275
320
276
321
function processPatternRecursive ( file , patternlab ) {
277
- var lh = require ( './lineage_hunter' ) ,
278
- lih = require ( './list_item_hunter' ) ;
279
322
280
323
var lineage_hunter = new lh ( ) ,
281
324
list_item_hunter = new lih ( ) ;
@@ -292,6 +335,9 @@ var pattern_assembler = function () {
292
335
//return if processing an ignored file
293
336
if ( typeof currentPattern === 'undefined' ) { return ; }
294
337
338
+ //we are processing a markdown only pattern
339
+ if ( currentPattern . engine === null ) { return ; }
340
+
295
341
currentPattern . extendedTemplate = currentPattern . template ;
296
342
297
343
//find how many partials there may be for the given pattern
@@ -321,8 +367,6 @@ var pattern_assembler = function () {
321
367
}
322
368
323
369
function expandPartials ( foundPatternPartials , list_item_hunter , patternlab , currentPattern ) {
324
- var smh = require ( './style_modifier_hunter' ) ,
325
- ph = require ( './parameter_hunter' ) ;
326
370
327
371
var style_modifier_hunter = new smh ( ) ,
328
372
parameter_hunter = new ph ( ) ;
@@ -365,7 +409,6 @@ var pattern_assembler = function () {
365
409
}
366
410
367
411
function parseDataLinksHelper ( patternlab , obj , key ) {
368
- var JSON5 = require ( 'json5' ) ;
369
412
var linkRE , dataObjAsString , linkMatches , expandedLink ;
370
413
371
414
linkRE = / l i n k \. [ A - z 0 - 9 - _ ] + / g;
@@ -427,6 +470,9 @@ var pattern_assembler = function () {
427
470
addPattern : function ( pattern , patternlab ) {
428
471
addPattern ( pattern , patternlab ) ;
429
472
} ,
473
+ addSubtypePattern : function ( subtypePattern , patternlab ) {
474
+ addSubtypePattern ( subtypePattern , patternlab ) ;
475
+ } ,
430
476
renderPattern : function ( template , data , partials ) {
431
477
return renderPattern ( template , data , partials ) ;
432
478
} ,
0 commit comments