1 | var path = require('path')
|
2 |
|
3 | module.exports = dump
|
4 |
|
5 | function 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 |
|
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 |
|
51 | function getRelative(dirname, filepath){
|
52 | return './' + path.relative(dirname, filepath)
|
53 | } |
\ | No newline at end of file |