Issues (117)

lib/patternlibrary/parse-patterns.js (1 issue)

1
/**
2
 * register pattern data from file info
3
 * and registers partials to handlebars instance
4
 * 
5
 * if 'nopatterns' parameter is set to TRUE, no 
6
 * pattern info is registered, only the partials content
7
 * 
8
 * 
9
 * @param string dir - default: patterns/partials option
10
 * @param string searchpattern - default: pattern sourcefile searchpattern option
0 ignored issues
show
The parameter string has already been documented on line 9. The second definition is ignored.
Loading history...
11
 * @param boolean nopatterns - default: false
12
 * @package Patternlibrary
13
 */
14 1
var fm           = require('front-matter');
15 1
var fs           = require('fs');
16 1
var path         = require('path');
17 1
var readdir      = require('../util/readdir');
18 1
var sanatizeType = require('../util/sanatize-patterntype');
19
20 1
module.exports = function (dir, searchpattern, nopatterns) {
21
	
22 40
    var patternsPath    = this.options.partials;
23 40
    var searchPattern   = path.join(this.options.pattern.searchpath, this.options.pattern.source);
24 40
    if ((typeof dir != 'undefined') && (dir !== null)) {
25 20
    	patternsPath = dir;
26
    }
27 40
    if ((typeof searchpattern != 'undefined') && (searchpattern !== null)) {
28
    	searchPattern = searchpattern;
29
    }
30 40
    var partials = readdir(patternsPath, searchPattern);
31 40
    if (nopatterns !== true) {
32 20
    	nopatterns = false;
33
    }
34
    
35 40
    for (var i in partials) {
36 1026
        var ext  = path.extname(partials[i]);
37 1026
        var file = fs.readFileSync(partials[i]);
38 1026
        var name = path.basename(partials[i], ext);
39
        
40 1026
        var pattern = fm(file.toString());
41
42 1026
        if ( !nopatterns && pattern.attributes.pattern && (pattern.attributes.pattern.name != '') ) {
43
            // pattern partial
44
            var patternName = pattern.attributes.pattern.name;
45
            
46 4
            if (pattern.attributes.pattern && !pattern.attributes.pattern.type) {
47
                // 'type' is not set, try to get it from 'name'
48
                var parts = String(patternName).split('/');
49 2
                if (parts.length > 1) {
50
                    pattern.attributes.pattern.type = sanatizeType(parts[0]);
51
                }
52
            }
53
            
54
            var patternObject          = pattern.attributes;
55
            patternObject.body         = pattern.body;
56
            patternObject.filepath     = partials[i];
57
            patternObject._adapterData = {};
58
            
59
            // put pattern data into patternlibrary registry
60
            this.data.patterns[patternName] = patternObject;
61
62
            // register partial code to handlebars instance
63
            this.log.info("Pattern registered: '"+patternName+", '"+name+"'");
64
            this.handlebars.registerPartial(name, pattern.body + '\n');
65
            this.handlebars.registerPartial(patternName, pattern.body + '\n');
66
            
67
        } else {
68
        	
69
        	// register a 'normal' partial
70 1026
            this.log.info("Partial registered: '"+name+"'");
71 1026
            this.handlebars.registerPartial(name, pattern.body + '\n');
72
            
73
        }
74
        
75
    }
76
77
    
78
    // get categories data from loaded patterns
79 40
    this.parsecategories();
80
    
81
82
}
83