Issues (117)

lib/handlebars/patternlibrary.js (1 issue)

Severity
1 1
var extend  = require('deep-extend');
2
3
/**
4
 * includes/renders a pattern into current position
5
 * (wraps Handlebars'/Panini's {{> ...}} helper)
6
 * 
7
 */
8
function patternLibary (options) {
9
10
    var args = [];
11
    var patternContent = '';
12
    var patternData = {};
13
    var patternName = false;
14
    var result = '';
15
    
16 2
    if (arguments.length > 1) {
17
        for (var i = 0; i < arguments.length; i++) {
18 2
            if ( i != (arguments.length-1) ) {
19
                args.push(arguments[i])
20
            } else {
21
                options = arguments[arguments.length-1];
22
            }
23
        }
24
    }
25
    
26 2
    if (typeof options.hash.atom != 'undefined') {
27
        patternName = 'atom/'+options.hash.atom;
28
    }
29 2
    if (typeof options.hash.molecule != 'undefined') {
30
        patternName = 'molecule/'+options.hash.molecule;
31
    }
32 2
    if (typeof options.hash.organism != 'undefined') {
33
        patternName = 'organism/'+options.hash.organism;
34
    }
35 2
    if (typeof options.hash.page != 'undefined') {
36
        patternName = 'page/'+options.hash.template;
37
    }
38
    
39 2
    if (patternName) {
40
        args.push(patternName);
41
    }
42
43
    var $PL = options.data.root.Patternlibrary;
44
    var patterns = $PL.getPatterns();
45
    
46
    for (var j = 0; j < args.length; j++) {
47
        var thisPatternName = args[j];
48
        
49
        $PL.Panini.data.Patternlibrary = null;
50
        extend(patternData, $PL.Panini.data);
51
        $PL.Panini.data.Patternlibrary = $PL;
52
        
53 2
        if (typeof patterns[thisPatternName] != 'undefined') {
54
            patternContent = patterns[thisPatternName].body;
55
            $PL.patternUsage(thisPatternName, options.data.root);
56
        } else {
57
            throw ('Patternlibrary error: pattern "'+thisPatternName+'" not found');
58
        }
59
        
60
        options.data.root.Patternlibrary = null ;
61
        extend(patternData, patterns[thisPatternName]);
62
        extend(patternData, options.data.root);
63
        extend(patternData, options.hash);
64
        
65
        $PL.updateDataFile();
66
        options.data.root.Patternlibrary = $PL ;
67
68
        try {
69
        	
70
	        var layoutTemplate = $PL.Handlebars.compile('{{> body}}', {noEscape: true});
71
	        var patternTemplate = $PL.Handlebars.compile(patternContent, {noEscape: true});
72
	        
73
	        $PL.Handlebars.registerPartial('body', patternTemplate);
74
	        var rendered = layoutTemplate(patternData);
75
	        
76
	        result = ( new $PL.Panini.Handlebars.SafeString( rendered ) );
77
	
78
	    } catch (err) {
79
	    	this.$PL.warn('pattern Helper Error: ', err);
80
	    }        
81
    }
82
    return (result);
83
    
84
}
85
86
module.exports = function () {}; // patternLibary;
0 ignored issues
show
The expression has no effects. Consider removing it.
Loading history...