1 | var config = require('./config.js');
|
2 | var fs = require('fs');
|
3 | var util = require('util');
|
4 | var path = require('path');
|
5 | var walker = require('./util/walk.js');
|
6 | var debug = require('debug')('clam:getMixedMockDate');
|
7 |
|
8 | var ifDatas = {};
|
9 | var global = {};
|
10 |
|
11 | function initFromIF(){
|
12 | var root = config.root();
|
13 | var dataPath = path.join(root,'.clam/data');
|
14 | if(!fs.existsSync(dataPath)){
|
15 | return;
|
16 | }
|
17 | var files = walker.walkSync(dataPath);
|
18 |
|
19 | for(var i = 0; i < files.length; i++){
|
20 | var file = files[i];
|
21 | if(path.extname(file) !== '.js'){
|
22 | continue;
|
23 | }
|
24 | var ifData = require(file);
|
25 | var url = '';
|
26 | if(ifData.config && ifData.config.url){
|
27 | url = ifData.config.url;
|
28 | }
|
29 | else{
|
30 | url = path.relative(dataPath, file);
|
31 | url = '/' + path.basename(url, '.js');
|
32 | }
|
33 |
|
34 | ifDatas[url] = ifData;
|
35 | }
|
36 |
|
37 | }
|
38 |
|
39 | function init(){
|
40 | ifDatas = {};
|
41 | global = {};
|
42 | var prjMockData = config.get('mock');
|
43 | if(!prjMockData){
|
44 | config.set('mock', {});
|
45 | prjMockData = {};
|
46 | }
|
47 | global = prjMockData;
|
48 | initFromIF();
|
49 | }
|
50 | init();
|
51 | function getMixedMockDate(param, url, isRootPage){
|
52 | if(!param){
|
53 | param = {};
|
54 | }
|
55 |
|
56 | if(global){
|
57 | for(var prop in global){
|
58 | if(param[prop]){
|
59 | continue;
|
60 | }
|
61 | param[prop] = global[prop];
|
62 | }
|
63 | }
|
64 | param['_pageUrl'] = url;
|
65 | param['_pageBaseName'] = path.basename(url);
|
66 | if(!isRootPage){
|
67 | return param;
|
68 | }
|
69 | if(!ifDatas[url]){
|
70 | return param;
|
71 | }
|
72 | var urlData = ifDatas[url].response;
|
73 | if(urlData){
|
74 | for(var ifProp in urlData){
|
75 | if(param[ifProp]){
|
76 | continue;
|
77 | }
|
78 | param[ifProp] = urlData[ifProp];
|
79 | }
|
80 | }
|
81 | debug('页面最终内容%s',url, util.inspect(param));
|
82 | return param;
|
83 | }
|
84 |
|
85 | exports.getMixedMockDate = getMixedMockDate; |
\ | No newline at end of file |