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
Documentation
introduced
by
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 |