Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80742 views
1
module.exports = sigmund
2
function sigmund (subject, maxSessions) {
3
maxSessions = maxSessions || 10;
4
var notes = [];
5
var analysis = '';
6
var RE = RegExp;
7
8
function psychoAnalyze (subject, session) {
9
if (session > maxSessions) return;
10
11
if (typeof subject === 'function' ||
12
typeof subject === 'undefined') {
13
return;
14
}
15
16
if (typeof subject !== 'object' || !subject ||
17
(subject instanceof RE)) {
18
analysis += subject;
19
return;
20
}
21
22
if (notes.indexOf(subject) !== -1 || session === maxSessions) return;
23
24
notes.push(subject);
25
analysis += '{';
26
Object.keys(subject).forEach(function (issue, _, __) {
27
// pseudo-private values. skip those.
28
if (issue.charAt(0) === '_') return;
29
var to = typeof subject[issue];
30
if (to === 'function' || to === 'undefined') return;
31
analysis += issue;
32
psychoAnalyze(subject[issue], session + 1);
33
});
34
}
35
psychoAnalyze(subject, 0);
36
return analysis;
37
}
38
39
// vim: set softtabstop=4 shiftwidth=4:
40
41