This repository has been archived by the owner on Jun 7, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathroutes.js
86 lines (69 loc) · 2.49 KB
/
routes.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
'use strict';
var escomplex = require('escomplex-js'),
settings = require('./settings'),
partials = require('./views/partials'),
models = {
title: require('./models/title'),
menu: require('./models/menu'),
options: require('./models/options'),
metrics: require('./models/metrics'),
functions: require('./models/functions')
};
module.exports = [
{ path: settings.home.path, method: 'get', handler: getMain },
{ path: settings.home.path, method: 'post', handler: postMain },
{ path: settings.complexity.path, method: 'get', handler: getComplexity },
{ path: settings.about.path, method: 'get', handler: getAbout }
];
function getMain (request, response) {
var data = getViewData('home');
data.options = models.options.get([ 'logicalor', 'switchcase' ]);
data.nosource = true;
setHeaders(request, response);
response.render(partials.main, data);
}
function getViewData (page) {
return {
title: models.title.get(page),
description: settings[page].description,
menu: models.menu.get(page)
};
}
function setHeaders (request, response) {
var userAgent = request.headers['user-agent'];
if (userAgent && userAgent.indexOf('MSIE')) {
response.setHeader('X-UA-Compatible', 'IE=Edge,chrome=1');
}
}
function postMain (request, response) {
var report, data = getViewData('home');
try {
data.source = request.body.source;
data.options = models.options.get(request.body.options);
report = escomplex.analyse(request.body.source, {
forin: request.body.forin || false,
trycatch: request.body.trycatch || false,
logicalor: !request.body.logicalor,
switchcase: !request.body.switchcase
});
data.metrics = models.metrics.get(report);
data.functions = models.functions.get(report.functions);
} catch (error) {
// TODO: Select/highlight errorneous code in view?
console.log(error.stack);
data.error = error;
}
setHeaders(request, response);
response.render(partials.main, data);
}
function postWs (request, response) {
// TODO: Get report, create model, call reponse.jsonp()
}
function getComplexity (request, response) {
setHeaders(request, response);
response.render(partials.complexity, getViewData('complexity'));
}
function getAbout (request, response) {
setHeaders(request, response);
response.render(partials.about, getViewData('about'));
}