12345678910111213141516171819202122232425262728293031323334353637383940 |
- module.exports = sigmund
- function sigmund (subject, maxSessions) {
- maxSessions = maxSessions || 10;
- var notes = [];
- var analysis = '';
- var RE = RegExp;
- function psychoAnalyze (subject, session) {
- if (session > maxSessions) return;
- if (typeof subject === 'function' ||
- typeof subject === 'undefined') {
- return;
- }
- if (typeof subject !== 'object' || !subject ||
- (subject instanceof RE)) {
- analysis += subject;
- return;
- }
- if (notes.indexOf(subject) !== -1 || session === maxSessions) return;
- notes.push(subject);
- analysis += '{';
- Object.keys(subject).forEach(function (issue, _, __) {
- // pseudo-private values. skip those.
- if (issue.charAt(0) === '_') return;
- var to = typeof subject[issue];
- if (to === 'function' || to === 'undefined') return;
- analysis += issue;
- psychoAnalyze(subject[issue], session + 1);
- });
- }
- psychoAnalyze(subject, 0);
- return analysis;
- }
- // vim: set softtabstop=4 shiftwidth=4:
|