(member,cls,file,symbol)
| 785 | } |
| 786 | |
| 787 | function traverseMethod(member,cls,file,symbol){ |
| 788 | var method=cls.value?member.value+'_'+cls.value:member.value |
| 789 | if(r.FlowOne[member.value]){ |
| 790 | if(r.FlowOne[member.value].indexOf(method)<0){ |
| 791 | r.FlowOne[member.value].unshift(method) |
| 792 | } |
| 793 | }else{ |
| 794 | r.FlowOne[member.value]=[method] |
| 795 | } |
| 796 | member._flow_id=method |
| 797 | member._flow_from=cls.value |
| 798 | member._file=file |
| 799 | if(r.FlowFilter[member._flow_id]===false)return; |
| 800 | r.FlowNode[member._flow_id]=member; |
| 801 | r.FDPNode[member._flow_id]={id:member._flow_id,w:member.value.length*d3config.fontsize/1.6+d3config.fontsize*3,text:`${symbol||':'}${member.value}()`} |
| 802 | if(symbol)r.UML+=` ${symbol}${member.value}()\n` |
| 803 | if(member.base||member.value==cls.value){//constructor |
| 804 | r.Flow+=` ${member._flow_id}(${member.value})\nclick ${member._flow_id} "javascript:void(onFlowClick('${member._flow_id}','${file}'))"\n` |
| 805 | }else{ |
| 806 | r.Flow+=` ${member._flow_id}([${member.value}])\nclick ${member._flow_id} "javascript:void(onFlowClick('${member._flow_id}','${file}'))"\n` |
| 807 | } |
| 808 | if(cls.value){ |
| 809 | r.FlowLink+=`${cls.value} --o ${member._flow_id}\n` |
| 810 | r.FDPLinks.push({source:cls.value,target:member._flow_id,value:2}) |
| 811 | } |
| 812 | if(r.showCall)_doBody(member,file) |
| 813 | function _doBody(node,file){ |
| 814 | if(!node.body)return |
| 815 | for(let n of node.body ){ |
| 816 | n._file=file |
| 817 | n._flow_id=n.value+'_'+node._flow_id |
| 818 | n._flow_from=r.showIf?node._flow_id:method |
| 819 | if(n.type=="IfStatement"||n.type=="LoopStatement"){//can't show condition CallExpression |
| 820 | if(r.showIf){ |
| 821 | r.Flow+=n.type=="IfStatement"?` ${n._flow_id}{${n.value}}\nclick ${n._flow_id} "javascript:void(onFlowClick('${n._flow_id}','${file}'))"\n`:` ${n._flow_id}((${n.value}))\nclick ${n._flow_id} "javascript:void(onFlowClick('${n._flow_id}','${file}'))"\n` |
| 822 | r.FDPNode[n._flow_id]={id:n._flow_id,w:0,text:n.type=="IfStatement"?'🔷':'🔵'} |
| 823 | } |
| 824 | if(n.condition&&n.condition.value)n._flow_condition='|'+mermaidRepl(n.condition.value)+'|' |
| 825 | _doBody(n,file) |
| 826 | }else if(r.FlowFilter[n._flow_id]&&(n.type=="NewExpression"||n.type=="CallExpression")){ |
| 827 | if(n.type=="NewExpression"){ |
| 828 | r.FlowVarNew[node.value]=n.value |
| 829 | if(cls.value)r.UMLClass[cls.value][n._flow_id]=n; |
| 830 | n._flow_str=` ${n._flow_id}[${n.value}]\nclick ${n._flow_id} "javascript:void(onFlowClick('${n._flow_id}','${file}'))"\n` |
| 831 | r.FDPNode[n._flow_id]={id:n._flow_id,w:n.value.length*d3config.fontsize/1.6,text:n.value} |
| 832 | }else{ |
| 833 | if(n.callee?.value==node.value){ |
| 834 | if(r.showMethod){n._flow_callee=n.value+'_'+cls.value} |
| 835 | else{n._flow_callee=n.value} |
| 836 | }else{ |
| 837 | n._flow_callee=n.callee?.value; |
| 838 | } |
| 839 | // console.log('callee',n._flow_callee,cls,n,node) |
| 840 | if(r.FlowNode[n._flow_id])n._flow_id=n._flow_callee+'_'+n._flow_id; |
| 841 | n._flow_str=` ${n._flow_id}([${n.value}])\nclick ${n._flow_id} "javascript:void(onFlowClick('${n._flow_id}','${file}'))"\n` |
| 842 | r.FDPNode[n._flow_id]={id:n._flow_id,w:n.value.length*d3config.fontsize/1.6+d3config.fontsize*2,text:n.value+'()'} |
| 843 | } |
| 844 | r.Flow+=n._flow_str; |
no test coverage detected