From a5f06ac144d77d84eb6b04fb3cdd34889af59503 Mon Sep 17 00:00:00 2001 From: PASSER-BY Date: Wed, 24 Nov 2021 23:26:38 +0800 Subject: [PATCH] =?UTF-8?q?updated=20bug=E4=BF=AE=E5=A4=8D=E5=8F=8A?= =?UTF-8?q?=E7=B2=BE=E7=AE=80=E9=83=A8=E5=88=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/relationship.min.js | 6 +- script/relationship.js | 161 +++++++++++++++++---------------------- 2 files changed, 74 insertions(+), 93 deletions(-) diff --git a/dist/relationship.min.js b/dist/relationship.min.js index e235052..69b62d7 100644 --- a/dist/relationship.min.js +++ b/dist/relationship.min.js @@ -1,3 +1,3 @@ -!function(s,f){"object"==typeof module&&module.exports?module.exports=f():s.relationship=f()}("undefined"!=typeof window?window:this,function(){function s(s){s=s.replace(/[二|三|四|五|六|七|八|九|十]{1,2}/g,"x");for(var f=s.replace(/我的?/,"").replace(/家的?/,"的").split("的"),x=[""],d=!0,m={"哥":"兄","姐":"姊","媳妇":"妇","女婿":"婿","媳":"妇","夫":"婿","姪":"侄","姊妹姻":"姻","女姻":"姻","兄弟眷":"眷","男眷":"眷"};f.length;){var b=f.shift(),w=[];for(var h in o){var l=o[h];if(l.indexOf(b)>-1)w.push(h);else{var e=b;for(var r in m)e=e.replace(r,m[r]);var t=l.map(function(s){for(var f in m)s=s.replace(f,m[f]);return s});t.indexOf(e)>-1&&w.push(h)}}w.length||(d=!1);var n=[];x.forEach(function(s){w.forEach(function(f){n.push(s+","+f)})}),x=n}return d?x:[]}function f(s,f){var x=[],d={};if(f<0?0==s.indexOf(",w")?s=",1"+s:0==s.indexOf(",h")&&(s=",0"+s):0==s.indexOf(",1")||0==s.indexOf(",0")||f>-1&&(s=","+f+s),s.match(/,[w0],w|,[h1],h/))return!1;var m=function(s){var f="";if(!d[s]){d[s]=!0;var b=!0;do{f=s;for(var h in w){var o=w[h];if(s=s.replace(o.exp,o.str),s.indexOf("#")>-1){for(var l=s.split("#"),e=0;e-1?l++:["s","d"].indexOf(s)>-1&&l--}),h.join(",")+(l?"":d)}return""}function m(s){for(var f=s.split(","),x=[],d=0;d-1?h.sex:r.sex;for(var o=f(h.selector,t),l=0;l-1)w.push(h);else{var e=b;for(var r in m)e=e.replace(r,m[r]);var t=l.map(function(s){for(var f in m)s=s.replace(f,m[f]);return s});t.indexOf(e)>-1&&w.push(h)}}w.length||(d=!1);var n=[];x.forEach(function(s){w.forEach(function(f){n.push(s+","+f)})}),x=n}return d?x:[]}function f(s,f){var x=[],d={};if(f<0&&(f=s.match(/^,w/)?1:0),f=f?1:0,s.indexOf(",1")==-1&&s.indexOf(",0")==-1&&(s=","+f+s),s.match(/,[w0],w|,[h1],h/))return!1;var m=function(s){var f="";if(!d[s]){d[s]=!0;var b=!0;do{f=s;for(var h in w){var o=w[h];if(s=s.replace(o.exp,o.str),s.indexOf("#")>-1){for(var l=s.split("#"),e=0;e-1?h.sex:r.sex;var o=f(h.selector,t);o&&o.forEach(function(s){if("chain"==r.type){r.reverse&&(s=d(s,t));var f=m(s);f&&i.push(f)}else{r.reverse&&(s=d(s,t));var b=x(t+","+s);b.length||(b=x(s)),b.length||0!=s.indexOf("w")&&0!=s.indexOf("h")||(b=x(s.substr(2))),b.length&&(i=i.concat(b))}})})}),e(i)};r.dataCount=0;for(var t in o)r.dataCount++;return r.setMode=function(s,f){ +"undefined"==typeof l[s]&&(l[s]={}),l[s]=Object.assign(l[s],f)},r}); \ No newline at end of file diff --git a/script/relationship.js b/script/relationship.js index 967f35e..2c13cfa 100644 --- a/script/relationship.js +++ b/script/relationship.js @@ -197,6 +197,8 @@ '[xb|xs]':['兄弟姐妹','同胞','手足'], '[f,xb,s&o|f,xb,s&l]':['堂兄弟'], '[f,xb,d&o|f,xb,d&l]':['堂姐妹'], + '[m,xs,s&o|m,xs,s&l]':['姨兄弟'], + '[m,xs,d&o|m,xs,d&l]':['姨姐妹'], '[f,xs,s&o|f,xs,s&l|m,xb,s&o|m,xb,s&l]':['表兄弟'], '[f,xs,d&o|f,xs,d&l|m,xb,d&o|m,xb,d&l]':['表姐妹'], '[s|d]':['子女','儿女','小孩','孩子','孩儿','宝宝','娃'], @@ -2284,16 +2286,14 @@ function selector2id(selector,sex){ var result = []; var hash = {}; - if(sex<0){ - if(selector.indexOf(',w')==0){ - selector = ',1'+selector; - }else if(selector.indexOf(',h')==0){ - selector = ',0'+selector; - } - }else if(selector.indexOf(',1')==0||selector.indexOf(',0')==0){ - }else if(sex>-1){ + //性别判断 + if(sex<0){ + sex = selector.match(/^,w/)?1:0; + } + sex = sex?1:0; + if(selector.indexOf(',1')==-1&&selector.indexOf(',0')==-1){ selector = ','+sex+selector; - } + } // console.log('[selector]',selector); if(selector.match(/,[w0],w|,[h1],h/)){ //同志关系去除 return false; @@ -2402,7 +2402,11 @@ } if(id){ id = id.replace(/&[ol]/g,''); - sex = sex?1:0; //逆转运算自身性别必须确定 + //性别判断 + if(sex<0){ + sex = id.match(/^w/)?1:0; + } + sex = sex?1:0; var sid = (','+sex+','+id).replace(/,[fhs]|,[olx]b/g,',1').replace(/,[mwd]|,[olx]s/g,',0'); sid = sid.substring(0,sid.lastIndexOf(',')); var id_arr = id.split(',').reverse(); @@ -2412,12 +2416,9 @@ arr.push(hash[id_arr[i]][sid_arr[i]]); } var g = 0; + var gMap = {'f':1,'m':1,'s':-1,'d':-1}; arr.forEach(function(r){ - if(['f','m'].indexOf(r)>-1){ - g++; - }else if(['s','d'].indexOf(r)>-1){ - g--; - } + g += gMap[r]||0; }); return arr.join(',')+(g?'':age); } @@ -2427,12 +2428,10 @@ // 通过ID获取关系链条 function getChainById(id){ var arr = id.split(','); - var items = []; - for(var i = 0;i-1?data['sex']:options.sex; var ids = selector2id(data['selector'],sex); - // console.log('[ids]',ids); - for(var j=0;j