1 |
|
2 | var Gun = require('./root');
|
3 | Gun.chain.back = function(n, opt){ var tmp;
|
4 | if(-1 === n || Infinity === n){
|
5 | return this._.root;
|
6 | } else
|
7 | if(1 === n){
|
8 | return this._.back || this;
|
9 | }
|
10 | var gun = this, at = gun._;
|
11 | if(typeof n === 'string'){
|
12 | n = n.split('.');
|
13 | }
|
14 | if(n instanceof Array){
|
15 | var i = 0, l = n.length, tmp = at;
|
16 | for(i; i < l; i++){
|
17 | tmp = (tmp||empty)[n[i]];
|
18 | }
|
19 | if(u !== tmp){
|
20 | return opt? gun : tmp;
|
21 | } else
|
22 | if((tmp = at.back)){
|
23 | return tmp.back(n, opt);
|
24 | }
|
25 | return;
|
26 | }
|
27 | if(n instanceof Function){
|
28 | var yes, tmp = {back: gun};
|
29 | while((tmp = tmp.back)
|
30 | && (tmp = tmp._)
|
31 | && !(yes = n(tmp, opt))){}
|
32 | return yes;
|
33 | }
|
34 | }
|
35 | var empty = {}, u;
|
36 | |
\ | No newline at end of file |