1 | var readFileSync = require('fs').readFileSync
|
2 | var parse = require('./parse')
|
3 | var path = require('path')
|
4 | var resolve = require('resolve')
|
5 |
|
6 | var getRelativePath = require('path').relative
|
7 |
|
8 | module.exports = load
|
9 |
|
10 | var globalCache = {}
|
11 |
|
12 | function load(file, opts){
|
13 |
|
14 | var cache = globalCache
|
15 | if (opts && opts.cache === false){
|
16 | cache = {}
|
17 | } else if (opts && opts.cache instanceof Object){
|
18 | cache = opts.cache
|
19 | }
|
20 |
|
21 | var dir = path.dirname(file)
|
22 |
|
23 | if (!cache[file]){
|
24 | cache[file] = parse(readFileSync(file, 'utf8'))
|
25 | var views = cache[file].views = cache[file].views || {}
|
26 | var requires = cache[file].requires
|
27 | requires&&Object.keys(requires).forEach(function(key){
|
28 | if (!views[key]){
|
29 | var ext = path.extname(requires[key])
|
30 | var subFile = resolve.sync(requires[key], {basedir: dir})
|
31 | if (ext == '.html'){
|
32 | views[key] = load(subFile, {cache: cache})
|
33 | } else {
|
34 | views[key] = {require: subFile}
|
35 | }
|
36 | }
|
37 | })
|
38 |
|
39 | }
|
40 | return cache[file]
|
41 | } |
\ | No newline at end of file |