Issues (117)

lib/patternlibrary/parse-patterns.js (2 issues)

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) {
0 ignored issues
show
A for in loop automatically includes the property of any prototype object, consider checking the key using hasOwnProperty.

When iterating over the keys of an object, this includes not only the keys of the object, but also keys contained in the prototype of that object. It is generally a best practice to check for these keys specifically:

var someObject;
for (var key in someObject) {
    if ( ! someObject.hasOwnProperty(key)) {
        continue; // Skip keys from the prototype.
    }

    doSomethingWith(key);
}
Loading history...
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