UNPKG

1.59 kBJavaScriptView Raw
1var path = require('path')
2
3module.exports = dump
4
5function dump(view, dirname){
6 if (view){
7
8 if (typeof view.getCompiledView === 'function'){
9 view = view.getCompiledView()
10 }
11
12 if (view.require){
13 return 'require(' + JSON.stringify(getRelative(dirname, view.require)) + ')'
14 } else {
15 return '{' + Object.keys(view).filter(function(key){
16 return key !== 'requires'
17 }).map(function(key){
18 if (key === 'views'){
19 var views = view.views
20 return '"views": {' + Object.keys(views).map(function(viewKey){
21 var subView = views[viewKey]
22 if (subView === view) {
23 return JSON.stringify(viewKey) + ': "$self"'
24 } else {
25 return JSON.stringify(viewKey) + ': ' + dump(subView, dirname)
26 }
27 }).join(',') + '}'
28 } else if (key === 'resources'){
29 var resources = view.resources
30 return '"resources": {' + Object.keys(resources).map(function(k){
31 var obj = resources[k]
32
33 // make path relative to dirname
34 if (resources[k] instanceof Object){
35 obj = {
36 key: obj.key,
37 path: getRelative(dirname, obj.path)
38 }
39 }
40
41 return JSON.stringify(k) + ': ' + JSON.stringify(obj)
42 }).join(',') + '}'
43 } else {
44 return JSON.stringify(key) + ': ' + JSON.stringify(view[key])
45 }
46 }).join(', ') + '}'
47 }
48 }
49}
50
51function getRelative(dirname, filepath){
52 return './' + path.relative(dirname, filepath)
53}
\No newline at end of file