corrade-nucleus-nucleons – Blame information for rev 24

Subversion Repositories:
Rev:
Rev Author Line No. Line
20 office 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: