corrade-nucleus-nucleons – Blame information for rev 24
?pathlinks?
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: |