Blame view

node_modules/sigmund/sigmund.js 1.12 KB
ce4c83ff   wxy   初始提交
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
  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: