Merge branch 'master' of github.com:mumuy/relationship

This commit is contained in:
mumuy committed 2022-01-11 17:49:53 +08:00
commit 0a08c0f3ec
4 files changed
+333 -159

No files matched your search

+3 -1
View File
@@ -1 +1,3 @@
!function(s,f){"object"==typeof module&&module.exports?module.exports=f():s.relationship=f()}("undefined"!=typeof window?window:this,function(){var e=[{exp:/^(.+)&o([^#]+)&l/g,str:"$1$2"},{exp:/^(.+)&l([^#]+)&o/g,str:"$1$2"},{exp:/^(.+)?,o([sb])([^#]+)&l/g,str:"$1,x$2$3"},{exp:/^(.+)?,l([sb])([^#]+)&o/g,str:"$1,x$2$3"},{exp:/(,[ds],(.+),[ds])&[ol]/g,str:"$1"},{exp:/(,o[sb])+(,o[sb])/,str:"$2"},{exp:/(,l[sb])+(,l[sb])/,str:"$2"},{exp:/^(.*)(,[fh1])(,[olx][sb])+,[olx]b(.*)$/,str:"$1$2,xb$4#$1$2$4"},{exp:/^(.*)(,[mw0])(,[olx][sb])+,[olx]s(.*)$/,str:"$1$2,xs$4#$1$2$4"},{exp:/(,[fh1])(,[olx][sb])+,[olx]s/g,str:"$1,xs"},{exp:/(,[mw0])(,[olx][sb])+,[olx]b/g,str:"$1,xb"},{exp:/^,[olx][sb],[olx]b(.+)?$/,str:"$1#,xb$1"},{exp:/^,[olx][sb],[olx]s(.+)?$/,str:"$1#,xs$1"},{exp:/^,x([sb])$/,str:",o$1#,l$1"},{exp:/m,h/g,str:"f"},{exp:/f,w/g,str:"m"},{exp:/,[xol][sb](,[mf])/g,str:"$1"},{exp:/,[mf],d&([ol])/,str:",$1s"},{exp:/,[mf],s&([ol])/,str:",$1b"},{exp:/^(.*)(,[fh1]|[xol]b),[mf],s(.*)$/,str:"$1$2,xb$3#$1$2$3"},{exp:/^(.*)(,[mw0]|[xol]s),[mf],d(.*)$/,str:"$1$2,xs$3#$1$2$3"},{exp:/(,[mw0]|[xol]s),[mf],s/,str:"$1,xb"},{exp:/(,[fh1]|[xol]b),[mf],d/,str:"$1,xs"},{exp:/^,[mf],s(.+)?$/,str:",1$1#,xb$1"},{exp:/^,[mf],d(.+)?$/,str:",0$1#,xs$1"},{exp:/,[ds]&o,ob/g,str:",s&o"},{exp:/,[ds]&o,os/g,str:",d&o"},{exp:/,[ds]&l,lb/g,str:",s&l"},{exp:/,[ds]&l,ls/g,str:",d&l"},{exp:/,[ds](&[ol])?,[olx]s/g,str:",d"},{exp:/,[ds](&[ol])?,[olx]b/g,str:",s"},{exp:/(,[mwd0](&[ol])?|[olx]s),[ds](&[ol])?,m/g,str:"$1"},{exp:/(,[mwd0](&[ol])?|[olx]s),[ds](&[ol])?,f/g,str:"$1,h"},{exp:/(,[fhs1](&[ol])?|[olx]b),[ds](&[ol])?,f/g,str:"$1"},{exp:/(,[fhs1](&[ol])?|[olx]b),[ds](&[ol])?,m/g,str:"$1,w"},{exp:/^,[ds],m(.+)?$/,str:"$1#,w$1"},{exp:/^,[ds],f(.+)?$/,str:"$1#,h$1"},{exp:/,[wh](,[ds])/g,str:"$1"},{exp:/,w,h|,h,w/g,str:""},{exp:/(.+)?\[([^\|]+?)\|([^\[\]]+?\|[^\[\]]+?)?\](.+)?/g,str:"$1$2$4#$1[$3]$4"},{exp:/(.+)?\[([^\[\]\|]+?)\|([^\[\]\|]+?)?\](.+)?/g,str:"$1$2$4#$1$3$4"}],m={"":["自己","我","本人","在下"],"[f,f|f,m|m,f|m,m]":["祖辈","祖父母"],"[f|m]":["父母","爹娘","爹妈","爸妈","双亲","二亲","两亲","二老","高堂"],"[h,f|h,m]":["公婆"],"[w,f|w,m]":["岳父母"],"[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]":["子女","儿女","小孩","孩子","孩儿","宝宝","娃"],"[s,s|s,d|d,s|d,d]":["孙辈"],f:["爸爸","父亲","老爸","阿爸","老窦","爸","父","爹","爹爹","爹地","爹啲","老爹","大大","老爷子"],"f,f":["爷爷","祖父","奶爷","阿爷","阿公","吖爷","老爷"],"f,f,f":["曾祖父","曾祖","太公","太爷","太爷爷","祖公","祖奶爷","太老爷"],"f,f,f,f":["高祖父","老太奶爷","老太爷","祖太爷","祖太爷爷","祖太公","高王父"],"f,f,f,f,f":["天祖父","高祖"],"f,f,f,f,f,f":["烈祖父","烈祖"],"f,f,f,f,f,f,f":["太祖父","太祖"],"f,f,f,f,f,f,f,f":["远祖父","远祖"],"f,f,f,f,f,f,f,f,f":["鼻祖父","鼻祖","始祖"],"f,f,f,f,f,f,f,f,f,ob":["伯鼻祖父"],"f,f,f,f,f,f,f,f,f,ob,w":["伯鼻祖母"],"f,f,f,f,f,f,f,f,f,lb":["叔鼻祖父"],"f,f,f,f,f,f,f,f,f,lb,w":["叔鼻祖母"],"f,f,f,f,f,f,f,f,f,xs":["姑鼻祖母"],"f,f,f,f,f,f,f,f,f,xs,h":["姑鼻祖父"],"f,f,f,f,f,f,f,f,m":["鼻祖母"],"f,f,f,f,f,f,f,f,m,xb":["舅鼻祖父"],"f,f,f,f,f,f,f,f,m,xb,w":["舅鼻祖母"],"f,f,f,f,f,f,f,f,m,xs":["姨鼻祖母"],"f,f,f,f,f,f,f,f,m,xs,h":["姨鼻祖父"],"f,f,f,f,f,f,f,f,ob":["伯远祖父"],"f,f,f,f,f,f,f,f,ob,w":["伯远祖母"],"f,f,f,f,f,f,f,f,lb":["叔远祖父"],"f,f,f,f,f,f,f,f,lb,w":["叔远祖母"],"f,f,f,f,f,f,f,f,xs":["姑远祖母"],"f,f,f,f,f,f,f,f,xs,h":["姑远祖父"],"f,f,f,f,f,f,f,m":["远祖母"],"f,f,f,f,f,f,f,m,xb":["舅远祖父"],"f,f,f,f,f,f,f,m,xb,w":["舅远祖母"],"f,f,f,f,f,f,f,m,xs":["姨远祖母"],"f,f,f,f,f,f,f,m,xs,h":["姨远祖父"],"f,f,f,f,f,f,f,ob":["伯太祖父"],"f,f,f,f,f,f,f,ob,w":["伯太祖母"],"f,f,f,f,f,f,f,lb":["叔太祖父"],"f,f,f,f,f,f,f,lb,w":["叔太祖母"],"f,f,f,f,f,f,f,xs":["姑太祖母"],"f,f,f,f,f,f,f,xs,h":["姑太祖父"],"f,f,f,f,f,f,m":["太祖母"],"f,f,f,f,f,f,m,xb":["舅太祖父"],"f,f,f,f,f,f,m,xb,w":["舅太祖母"],"f,f,f,f,f,f,m,xs":["姨太祖母"],"f,f,f,f,f,f,m,xs,h":["姨太祖父"],"f,f,f,f,f,f,ob":["伯烈祖父"],"f,f,f,f,f,f,ob,w":["伯烈祖母"],"f,f,f,f,f,f,lb":["叔烈祖父"],"f,f,f,f,f,f,lb,w":["叔烈祖母"],"f,f,f,f,f,f,xs":["姑烈祖母"],"f,f,f,f,f,f,xs,h":["姑烈祖父"],"f,f,f,f,f,m":["烈祖母"],"f,f,f,f,f,m,xb":["舅烈祖父"],"f,f,f,f,f,m,xb,w":["舅烈祖母"],"f,f,f,f,f,m,xs":["姨烈祖母"],"f,f,f,f,f,m,xs,h":["姨烈祖父"],"f,f,f,f,f,ob":["伯天祖父"],"f,f,f,f,f,ob,w":["伯天祖母"],"f,f,f,f,f,lb":["叔天祖父"],"f,f,f,f,f,lb,w":["叔天祖母"],"f,f,f,f,f,xs":["姑天祖母"],"f,f,f,fLine truncated !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(/我的?(.+)/,"$1").replace(/家的?/,"的").split("的"),x=[""],d=!0,m={"哥":"兄","姐":"姊","媳":"妇","夫":"婿","姪":"侄","姊妹姻":"姻","女姻":"姻","兄弟眷":"眷","男眷":"眷"},b={"媳妇":"妇","女婿":"婿"};f.length;){var h=f.shift(),w=[];for(var l in o){var e=o[l];if(e.indexOf(h)>-1)w.push(l);else{var r=h;for(var t in m)r=r.replace(t,m[t]);for(var t in b)t!=h&&(r=r.replace(t,m[t]));var n=e.map(function(s){for(var f in m)s=s.replace(f,m[f]);return s});n.indexOf(r)>-1&&w.push(l)}}w.length||(d=!1);var a=[];x.forEach(function(s){w.forEach(function(f){a.push(s+(f?","+f:""))})}),x=a}return d?x:[""]}function f(s,f){var x=[],d={};f<0&&(s.match(/^,w/)?f=1:s.match(/^,h/)&&(f=0));var m=function(s,f){if(s.indexOf(",1")==-1&&s.indexOf(",0")==-1&&(s=","+f+s),s.match(/,[w0],w|,[h1],h/))return!1;var b="";if(!d[s]){d[s]=!0;var w=!0;do{b=s;for(var o in h){var l=h[o];if(s=s.replace(l.exp,l.str),s.indexOf("#")>-1){for(var e=s.split("#"),r=0;r<e.length;r++)m(e[r]);w=!1;break}}}while(b!=s);if(w){if(s.match(/,[w0],w|,[h1],h/))return!1;s=s.replace(/,[01]/,"").substr(1),x.push(s)}}};return f<0?(m(s,1),m(s,0)):m(s,f),e(x)}function x(s){var f=[],x=function(s){var f=[];for(var x in o)if(x.replace(/&[ol]/g,"")==s)f.push(o[x][0]);else for(var d=s;d.match(/[ol](b|s)/);)if(d=d.replace(/[ol](b|s)/,"x$1"),d==x){f.push(o[x][0]);break}return f};if(o[s])f.push(o[s][0]);else if(f=x(s),f.length||(s=s.replace(/&[ol]/g,""),f=x(s)),f.length||(s=s.replace(/[ol](b|s)/g,"x$1"),f=x(s)),!f.length){var d=s.replace(/x/g,"l");f=x(d);var m=s.replace(/x/g,"o");f=f.concat(x(m))}return f}function d(s,f){var x={f:["d","s"],m:["d","s"],h:["w",""],w:["","h"],s:["m","f"],d:["m","f"],lb:["os","ob"],ob:["ls","lb"],xb:["xs","xb"],ls:["os","ob"],os:["ls","lb"],xs:["xs","xb"]},d="";if(s.match(/&o$/)?d="&l":s.match(/&l$/)&&(d="&o"),s){s=s.replace(/&[ol]/g,""),f<0&&(s.match(/^w/)?f=1:s.match(/^h/)&&(f=0));var m=[],b=function(f){var m=(","+f+","+s).replace(/,[fhs]|,[olx]b/g,",1").replace(/,[mwd]|,[olx]s/g,",0");m=m.substring(0,m.lastIndexOf(","));for(var b=s.split(",").reverse(),h=m.split(",").reverse(),w=[],o=0;o<b.length;o++)w.push(x[b[o]][h[o]]);var l=0,e={f:1,m:1,s:-1,d:-1};return w.forEach(function(s){l+=e[s]||0}),w.join(",")+(l?"":d)};return f<0?(m.push(b(1)),m.push(b(0))):m.push(b(f)),m}return[""]}function m(s){var f=s.split(",");return f.map(function(s){var f=s.replace(/&[ol]/,"");return o[f][0]}).join("的")}function b(s,x,m){m<0&&(s.match(/^,w/)||x.match(/^,w/)?m=1:(s.match(/^,h/)||x.match(/^,h/))&&(m=0));var b=m,h=f(s,m),w=f(x,m),o=[];if(x){var l=!1,r=!1;w.forEach(function(s){s.match(/([fhs1](&[ol])?|[olx]b)$/)&&(l=!0),s.match(/([mwd0](&[ol])?|[olx]s)$/)&&(r=!0),o=o.concat(d(s,m))}),o=e(o),l&&r?b=-1:l?b=1:r&&(b=0)}else o=[""];var t=h.length>1?"["+h.join("|")+"]":h[0],n=o.length>1?"["+o.join("|")+"]":o[0];return{selector:(x?","+n:"")+(s?","+t:""),sex:b}}var h=[{exp:/^(.+)&o([^#]+)&l/g,str:"$1$2"},{exp:/^(.+)&l([^#]+)&o/g,str:"$1$2"},{exp:/^(.+)?,o([sb])([^#]+)&l/g,str:"$1,x$2$3"},{exp:/^(.+)?,l([sb])([^#]+)&o/g,str:"$1,x$2$3"},{exp:/(,[ds],(.+),[ds])&[ol]/g,str:"$1"},{exp:/(,o[sb])+(,o[sb])/,str:"$2"},{exp:/(,l[sb])+(,l[sb])/,str:"$2"},{exp:/^(.*)(,[fh1])(,[olx][sb])+,[olx]b(.*)$/,str:"$1$2,xb$4#$1$2$4"},{exp:/^(.*)(,[mw0])(,[olx][sb])+,[olx]s(.*)$/,str:"$1$2,xs$4#$1$2$4"},{exp:/(,[fh1])(,[olx][sb])+,[olx]s/g,str:"$1,xs"},{exp:/(,[mw0])(,[olx][sb])+,[olx]b/g,str:"$1,xb"},{exp:/^,[olx][sb],[olx]b(.+)?$/,str:"$1#,xb$1"},{exp:/^,[olx][sb],[olx]s(.+)?$/,str:"$1#,xs$1"},{exp:/^,x([sb])$/,str:",o$1#,l$1"},{exp:/m,h/g,str:"f"},{exp:/f,w/g,str:"m"},{exp:/,[xol][sb](,[mf])/g,str:"$1"},{exp:/,[mf],d&([ol])/,str:",$1s"},{exp:/,[mf],s&([ol])/,str:",$1b"},{exp:/^(.*)(,[fh1]|[xol]b),[mf],s(.*)$/,str:"$1$2,xb$3#$1$2$3"},{exp:/^(.*)(,[mw0]|[xol]s),[mf],d(.*)$/,str:"$1$2,xs$3#$1$2$3"},{exp:/(,[mw0]|[xol]s),[mf],s/,str:"$1,xb"},{exp:/(,[fh1]|[xol]b),[mf],d/,str:"$1,xs"},{exp:/^,[mf],s(.+)?$/,str:",1$1#,xb$1"},{exp:/^,[mf],d(.+)?$/,str:",0$1#,xs$1"},{exp:/,[ds]&o,ob/g,str:",s&o"},{exp:/,[ds]&o,os/g,str:",d&o"},{exp:/,[ds]&l,lb/g,str:",s&l"},{exp:/,[ds]&l,ls/g,str:",d&l"},{exp:/,[ds](&[ol])?,[olx]s/g,str:",d"},{exp:/,[ds](&[ol])?,[olx]b/g,str:",s"},{exp:/(,[mwd0](&[ol])?|[olx]s),[ds](&[ol])?,m/g,str:"$1"},{exp:/(,[mwd0](&[ol])?|[olx]s),[ds](&[ol])?,f/g,str:"$1,h"},{exp:/(,[fhs1](&[ol])?|[olx]b),[ds](&[ol])?,f/g,str:"$1"},{exp:/(,[fhs1](&[ol])?|[olx]b),[ds](&[ol])?,m/g,str:"$1,w"},{exp:/^,[ds],m(.+)?$/,str:"$1#,w$1"},{exp:/^,[ds],f(.+)?$/,str:"$1#,h$1"},{exp:/,[wh](,[ds])/g,str:"$1"},{exp:/,w,h|,h,w/g,str:""},{exp:/(.+)?\[([^\|]+?)\|([^\[\]]*\|[^\[\]]*)\](.+)?/g,str:"$1$2$4#$1[$3]$4"},{exp:/(.+)?\[([^\[\]\|]+?)\|([^\[\]\|]+?)?\](.+)?/g,str:"$1$2$4#$1$3$4"}],w={"":["自己","我","本人","在下"],"[f,f|f,m|m,f|m,m]":Line truncated
"m,m,f,xs,d,d,h":["姑表姨表姨父"],"m,m,m":["外曾外祖母","外太外婆","外太姥姥"],"m,m,m,f":["外曾外曾外祖父","祖太姥爷","祖太公","高王父"],"m,m,m,m":["外曾外曾外祖母","祖太姥姥","祖太姥娘","祖太婆","高王母"],"m,m,m,xb":["舅外曾外祖父","舅太姥爷"],"m,m,m,xb,w":["舅外曾外祖母","舅太姥姥"],"m,m,m,xb,s":["舅表舅外祖父"],"m,m,m,xb,s,w":["舅表舅外祖母"],"m,m,m,xb,s,s":["舅表舅表舅父"],"m,m,m,xb,s,s,w":["舅表舅表舅母"],"m,m,m,xb,s,d":["舅表舅表姨母"],"m,m,m,xb,s,d,h":["舅表舅表姨父"],"m,m,m,xb,d":["舅表姨外祖母"],"m,m,m,xb,d,h":["舅表姨外祖父"],"m,m,m,xb,d,s":["舅表姨表舅父"],"m,m,m,xb,d,s,w":["舅表姨表舅母"],"m,m,m,xb,d,d":["舅表姨表姨母"],"m,m,m,xb,d,d,h":["舅表姨表姨父"],"m,m,m,xs":["姨外曾外祖母","姨太姥姥"],"m,m,m,xs,h":["姨外曾外祖父","姨太姥爷"],"m,m,m,xs,s":["从母舅外祖父"],"m,m,m,xs,s,w":["从母舅外祖母"],"m,m,m,xs,s,s":["从母舅表舅父"],"m,m,m,xs,s,s,w":["从母舅表舅母"],"m,m,m,xs,s,d":["从母舅表姨母"],"m,m,m,xs,s,d,h":["从母舅表姨父"],"m,m,m,xs,d":["从母姨外祖母","从母姨姥姥"],"m,m,m,xs,d,h":["从母姨外祖父","从母姨姥爷"],"m,m,m,xs,d,s":["再从母舅父"],"m,m,m,xs,d,s,w":["再从母舅母"],"m,m,m,xs,d,d":["再从母姨母"],"m,m,m,xs,d,d,h":["再从母姨父"],"m,m,m,xs,d,d,s&o":["三从母兄"],"m,m,m,xs,d,d,s&o,w":["三从母嫂"],"m,m,m,xs,d,d,s&l":["三从母弟"],"m,m,m,xs,d,d,s&l,w":["三从母弟媳"],"m,m,m,xs,d,d,d&o":["三从母姊"],"m,m,m,xs,d,d,d&o,h":["三从母姊夫"],"m,m,m,xs,d,d,d&l":["三从母妹"],"m,m,m,xs,d,d,d&l,h":["三从母妹夫"],"m,m,xb":["外舅公","外舅祖父","外太舅父","舅外祖父","舅姥爷","舅外公","舅公","x舅姥爷"],"m,m,xb,w":["外舅婆","外舅祖母","外太舅母","舅外祖母","舅姥姥","舅婆","外妗婆"],"m,m,xb,s":["舅表舅父","舅表舅爸","表舅父","表舅爸","表舅","表舅舅","舅表舅舅"],"m,m,xb,s,w":["舅表舅母","舅表舅妈","表舅母","表舅妈"],"m,m,xb,s,s&o":["舅表舅表哥"],"m,m,xb,s,s&o,w":["舅表舅表嫂"],"m,m,xb,s,s&l":["舅表舅表弟"],"m,m,xb,s,s&l,w":["舅表舅表弟媳"],"m,m,xb,s,s,s":["舅表舅表侄男"],"m,m,xb,s,s,s,w":["舅表舅表侄妇"],"m,m,xb,s,s,d":["舅表舅表侄女"],"m,m,xb,s,s,d,h":["舅表舅表侄婿"],"m,m,xb,s,d&o":["舅表舅表姐"],"m,m,xb,s,d&o,h":["舅表舅表姐夫"],"m,m,xb,s,d&l":["舅表舅表妹"],"m,m,xb,s,d&l,h":["舅表舅表妹夫"],"m,m,xb,s,d,s":["舅表舅表甥男"],"m,m,xb,s,d,s,w":["舅表舅表甥妇"],"m,m,xb,s,d,d":["舅表舅表甥女"],"m,m,xb,s,d,d,h":["舅表舅表甥婿"],"m,m,xb,d":["舅表姨母","舅表姨妈","表姨母","表姨妈","表姨","表阿姨","舅表姨姨"],"m,m,xb,d,h":["舅表姨父","舅表姨丈","表姨父","表姨丈"],"m,m,xb,d,s&o":["舅表姨表哥"],"m,m,xb,d,s&o,w":["舅表姨表嫂"],"m,m,xb,d,s&l":["舅表姨表弟"],"m,m,xb,d,s&l,w":["舅表姨表弟媳"],"m,m,xb,d,s,s":["舅表姨表侄男"],"m,m,xb,d,s,s,w":["舅表姨表侄妇"],"m,m,xb,d,s,d":["舅表姨表侄女"],"m,m,xb,d,s,d,h":["舅表姨表侄婿"],"m,m,xb,d,d&o":["舅表姨表姐"],"m,m,xb,d,d&o,h":["舅表姨表姐夫"],"m,m,xb,d,d&l":["舅表姨表妹"],"m,m,xb,d,d&l,h":["舅表姨表妹夫"],"m,m,xb,d,d,s":["舅表姨表甥男"],"m,m,xb,d,d,s,w":["舅表姨表甥妇"],"m,m,xb,d,d,d":["舅表姨表甥女"],"m,m,xb,d,d,d,h":["舅表姨表甥婿"],"m,m,xs":["外姨婆","姨外祖母","姨姥姥","外姨祖母","从母姨外祖母"],"m,m,xs,h":["外姨公","姨外祖父","姨姥爷","外姨祖父","从母姨外祖父"],"m,m,xs,s":["姨舅父","姨舅","从母舅父"],"m,m,xs,s,w":["姨舅母","从母舅母"],"m,m,xs,s,s&o":["从母舅表哥"],"m,m,xs,s,s&o,w":["从母舅表嫂"],"m,m,xs,s,s&l":["从母舅表弟"],"m,m,xs,s,s&l,w":["从母舅表弟媳"],"m,m,xs,s,s,s":["从母舅表侄男"],"m,m,xs,s,s,s,w":["从母舅表侄妇"],"m,m,xs,s,s,d":["从母舅表侄女"],"m,m,xs,s,s,d,h":["从母舅表侄婿"],"m,m,xs,s,d&o":["从母舅表姐"],"m,m,xs,s,d&o,h":["从母舅表姐夫"],"m,m,xs,s,d&l":["从母舅表妹"],"m,m,xs,s,d&l,h":["从母舅表妹夫"],"m,m,xs,s,d,s":["从母舅表甥男"],"m,m,xs,s,d,s,w":["从母舅表甥妇"],"m,m,xs,s,d,d":["从母舅表甥女"],"m,m,xs,s,d,d,h":["从母舅表甥婿"],"m,m,xs,d":["姨姨母","姨姨","从母姨母"],"m,m,xs,d,h":["姨姨父","从母姨父","从母姨丈"],"m,m,xs,d,s&o":["再从母兄"],"m,m,xs,d,s&o,w":["再从母嫂"],"m,m,xs,d,s&l":["再从母弟"],"m,m,xs,d,s&l,w":["再从母弟媳"],"m,m,xs,d,s,s":["再从母侄男"],"m,m,xs,d,s,s,w":["再从母侄妇"],"m,m,xs,d,s,d":["再从母侄女"],"m,m,xs,d,s,d,h":["再从母侄婿"],"m,m,xs,d,d&o":["再从母姊"],"m,m,xs,d,d&o,h":["再从母姊夫"],"m,m,xs,d,d&l":["再从母妹"],"m,m,xs,d,d&l,h":["再从母妹夫"],"m,m,xs,d,d,s":["再从母甥男"],"m,m,xs,d,d,s,w":["再从母甥妇"],"m,m,xs,d,d,d":["再从母甥女"],"m,mLine truncated
"s,w,f,lb,w":["男眷叔弟妇"],"s,w,f,xb,s":["男眷叔男"],"s,w,f,xb,d":["男眷叔女"],"s,w,f,os":["男眷姑姊"],"s,w,f,os,h":["男眷姑姊婿"],"s,w,f,ls":["男眷姑妹"],"s,w,f,ls,h":["男眷姑妹婿"],"s,w,f,xs,s":["男眷姑男"],"s,w,f,xs,d":["男眷姑女"],"s,w,m":["亲家母","亲家姆","姻姆","亲家"],"s,w,m&o":["男眷姊","息眷姊"],"s,w,m&l":["男眷妹","息眷妹"],"s,w,m,f":["男眷父","太姻翁"],"s,w,m,m":["男眷母","太姻姆"],"s,w,m,ob":["男眷舅兄"],"s,w,m,ob,w":["男眷舅兄妇"],"s,w,m,lb":["男眷舅弟"],"s,w,m,lb,w":["男眷舅弟妇"],"s,w,m,xb,s":["男眷舅男"],"s,w,m,xb,d":["男眷舅女"],"s,w,m,os":["男眷姨姊"],"s,w,m,os,h":["男眷姨姊婿"],"s,w,m,ls":["男眷姨妹"],"s,w,m,ls,h":["男眷姨妹婿"],"s,w,m,xs,s":["男眷姨男"],"s,w,m,xs,d":["男眷姨女"],"s,w,xb":["男眷男","息眷男"],"s,w,xb,w":["男眷妇","息眷妇"],"s,w,xb,s":["男眷孙男","息眷孙男"],"s,w,xb,s,w":["男眷孙妇","息眷孙妇"],"s,w,xb,d":["男眷孙女","息眷孙女"],"s,w,xb,d,h":["男眷孙婿","息眷孙婿"],"s,w,xs":["男眷女","息眷女"],"s,w,xs,h":["男眷婿","息眷婿"],"s,w,xs,s":["男眷外孙男","息眷外孙男"],"s,w,xs,s,w":["男眷外孙妇","息眷外孙妇"],"s,w,xs,d":["男眷外孙女","息眷外孙女"],"s,w,xs,d,h":["男眷外孙婿","息眷外孙婿"],"d,h,f":["亲家公","亲家翁","姻翁","亲家"],"d,h,f&o":["女姻兄","息姻兄"],"d,h,f&l":["女姻弟","息姻弟"],"d,h,f,f":["女姻父","太姻翁"],"d,h,f,f,f":["老太姻翁"],"d,h,f,f,m":["老太姻姆"],"d,h,f,f,ob":["女姻伯父","姻伯翁"],"d,h,f,f,ob,w":["女姻伯母","姻伯姆"],"d,h,f,f,lb":["女姻叔父","姻叔翁"],"d,h,f,f,lb,w":["女姻叔母","姻叔姆"],"d,h,f,f,xb,s&o":["女姻家兄"],"d,h,f,f,xb,s&o,w":["女姻家兄妇"],"d,h,f,f,xb,s&l":["女姻家弟"],"d,h,f,f,xb,s&l,w":["女姻家弟妇"],"d,h,f,f,xb,s,s":["女姻侄男"],"d,h,f,f,xb,s,d":["女姻侄女"],"d,h,f,f,xb,d&o":["女姻家姊"],"d,h,f,f,xb,d&o,w":["女姻家姊婿"],"d,h,f,f,xb,d&l":["女姻家妹"],"d,h,f,f,xb,d&l,w":["女姻家妹婿"],"d,h,f,f,xb,d,s":["女姻甥男"],"d,h,f,f,xb,d,d":["女姻甥女"],"d,h,f,m":["女姻母","太姻姆"],"d,h,f,m,f":["老太姻翁"],"d,h,f,m,m":["老太姻姆"],"d,h,f,ob":["女姻叔兄"],"d,h,f,ob,w":["女姻叔兄妇"],"d,h,f,lb":["女姻叔弟"],"d,h,f,lb,w":["女姻叔弟妇"],"d,h,f,xb,s":["女姻叔男"],"d,h,f,xb,d":["女姻叔女"],"d,h,f,os":["女姻姑姊"],"d,h,f,os,h":["女姻姑姊婿"],"d,h,f,ls":["女姻姑妹"],"d,h,f,ls,h":["女姻姑妹婿"],"d,h,f,xs,s":["女姻姑男"],"d,h,f,xs,d":["女姻姑女"],"d,h,m":["亲家母","亲家姆","姻姆","亲家"],"d,h,m&o":["女姻姊","息姻姊"],"d,h,m&l":["女姻妹","息姻妹"],"d,h,m,f":["女姻父","太姻翁"],"d,h,m,m":["女姻母","太姻姆"],"d,h,m,ob":["女姻舅兄"],"d,h,m,ob,w":["女姻舅兄妇"],"d,h,m,lb":["女姻舅弟"],"d,h,m,lb,w":["女姻舅弟妇"],"d,h,m,xb,s":["女姻舅男"],"d,h,m,xb,d":["女姻舅女"],"d,h,m,os":["女姻姨姊"],"d,h,m,os,h":["女姻姨姊婿"],"d,h,m,ls":["女姻姨妹"],"d,h,m,ls,h":["女姻姨妹婿"],"d,h,m,xs,s":["女姻姨男"],"d,h,m,xs,d":["女姻姨女"],"d,h,xb":["女姻男","息姻男"],"d,h,xb,w":["女姻妇","息姻妇"],"d,h,xb,s":["女姻孙男","息姻孙男"],"d,h,xb,s,w":["女姻孙妇","息姻孙妇"],"d,h,xb,d":["女姻孙女","息姻孙女"],"d,h,xb,d,h":["女姻孙婿","息姻孙婿"],"d,h,xs":["女姻女","息姻女"],"d,h,xs,h":["女姻婿","息姻婿"],"d,h,xs,s":["女姻外孙男","息姻外孙男"],"d,h,xs,s,w":["女姻外孙妇","息姻外孙妇"],"d,h,xs,d":["女姻外孙女","息姻外孙女"],"d,h,xs,d,h":["女姻外孙婿","息姻外孙婿"]},o=Object.assign({},w),l={},e=function(s){for(var f,x=[],d={},m=0;null!=(f=s[m]);m++){var b=f.replace(/[ol](?=s|b)/,"x").replace(/&[ol]/,"");b!=f||d[b]||(d[f]=!0)}for(var m=0;null!=(f=s[m]);m++){var b=f.replace(/[ol](?=s|b)/,"x").replace(/&[ol]/,"");b!=f?d[b]||x.indexOf(f)==-1&&x.push(f):x.indexOf(f)==-1&&x.push(f)}return x},r=function(h){var r=Object.assign({text:"",target:"",sex:-1,type:"default",reverse:!1,mode:"default"},h);o=Object.assign({},w);for(var t in l)if(r.mode==t)for(var n in l[t])o[n]=[].concat(l[t][n],w[n]||[]);var a=s(r.text),p=s(r.target),$=[];return a.forEach(function(s){p.forEach(function(h){var w=b(s,h,r.sex),o=f(w.selector,w.sex);o&&o.forEach(function(s){var f=[s];"chain"==r.type?(r.reverse&&(f=d(s,w.sex)),f.forEach(function(s){var f=m(s);f&&$.push(f)})):(r.reverse&&(f=d(s,w.sex)),f.forEach(function(s){var f=x(w.sex+","+s);f.length||(f=x(s)),f.length||0!=s.indexOf("w")&&0!=s.indexOf("h")||(f=x(s.substr(2))),f.length&&($=$.concat(f))}))})})}),e($)};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});
+15 -8
View File
@@ -137,14 +137,21 @@ relationship.setMode('cantonese',{
}; };
var bindChange = function(){ var bindChange = function(){
var value = $input.value.trim(); var value = $input.value.trim();
var result = relationship({text:value,type:'chain'}); var sex = $sex[0].checked?1:0;
if(result.length){ var mode = $mode[0].checked?$mode[0].value:$mode[1].value;
var name = result[0].split('的').pop(); var reverse = !$reverse[0].checked;
if(!name){ if(value){
toggleSex($sex[0].checked); var result = relationship({text:value,sex:sex,reverse:reverse,mode:mode});
}else{ if(result.length){
toggleSex('爸爸,老公,儿子,哥哥,弟弟,兄弟'.indexOf(name)>-1); var name = result[0].split('的').pop();
} if(!name){
toggleSex($sex[0].checked);
}else{
toggleSex('爸爸,老公,儿子,哥哥,弟弟,兄弟'.indexOf(name)>-1);
}
}
}else{
$result.value = '';
} }
}; };
+311 -150
View File
@@ -20,7 +20,7 @@
exp:/^(.+)&l([^#]+)&o/g, exp:/^(.+)&l([^#]+)&o/g,
str:'$1$2' str:'$1$2'
}, },
{//有大有小,增加不确定性 {//有大有小,增加不确定性
exp:/^(.+)?,o([sb])([^#]+)&l/g, exp:/^(.+)?,o([sb])([^#]+)&l/g,
str:'$1,x$2$3' str:'$1,x$2$3'
}, },
@@ -173,11 +173,11 @@
exp:/,w,h|,h,w/g, exp:/,w,h|,h,w/g,
str:'' str:''
}, },
{//并列关系处理1 {//并列关系处理1 X[A|B|C]Y = XAY#X[B|C]Y
exp:/(.+)?\[([^\|]+?)\|([^\[\]]+?\|[^\[\]]+?)?\](.+)?/g, exp:/(.+)?\[([^\|]+?)\|([^\[\]]*\|[^\[\]]*)\](.+)?/g,
str:'$1$2$4#$1[$3]$4' str:'$1$2$4#$1[$3]$4'
}, },
{//并列关系处理2 {//并列关系处理2 X[A|B]Y = XAY#XBY
exp:/(.+)?\[([^\[\]\|]+?)\|([^\[\]\|]+?)?\](.+)?/g, exp:/(.+)?\[([^\[\]\|]+?)\|([^\[\]\|]+?)?\](.+)?/g,
str:'$1$2$4#$1$3$4' str:'$1$2$4#$1$3$4'
} }
@@ -197,7 +197,7 @@
'[xb|xs]':['兄弟姐妹','同胞','手足'], '[xb|xs]':['兄弟姐妹','同胞','手足'],
'[f,xb,s&o|f,xb,s&l]':['堂兄弟'], '[f,xb,s&o|f,xb,s&l]':['堂兄弟'],
'[f,xb,d&o|f,xb,d&l]':['堂姐妹'], '[f,xb,d&o|f,xb,d&l]':['堂姐妹'],
'[m,xs,s&o|m,xs,s&l]':['姨兄弟'], '[m,xs,s&o|m,xs,s&l]':['姨兄弟'],
'[m,xs,d&o|m,xs,d&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,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]':['表姐妹'], '[f,xs,d&o|f,xs,d&l|m,xb,d&o|m,xb,d&l]':['表姐妹'],
@@ -316,10 +316,6 @@
'f,f,f,xb,s&o,w':['堂伯祖母','从父伯祖母','叔伯伯祖母','族伯祖母','族祖母'], 'f,f,f,xb,s&o,w':['堂伯祖母','从父伯祖母','叔伯伯祖母','族伯祖母','族祖母'],
'f,f,f,xb,s&l':['堂叔祖父','从父叔祖父','叔伯叔祖父','族叔祖父','族祖父'], 'f,f,f,xb,s&l':['堂叔祖父','从父叔祖父','叔伯叔祖父','族叔祖父','族祖父'],
'f,f,f,xb,s&l,w':['堂叔祖母','从父叔祖母','叔伯叔祖母','族叔祖母','族祖母'], 'f,f,f,xb,s&l,w':['堂叔祖母','从父叔祖母','叔伯叔祖母','族叔祖母','族祖母'],
'f,f,f,xb,s&o':['堂伯祖父','从父伯祖父'],
'f,f,f,xb,s&o,w':['堂伯祖母','从父伯祖母'],
'f,f,f,xb,s&l':['堂叔祖父','从父叔祖父'],
'f,f,f,xb,s&l,w':['堂叔祖母','从父叔祖母'],
'f,f,f,xb,s,s&o':['从堂伯父','再从父伯父','叔伯叔伯伯父','再从伯父','族伯父','族父'], 'f,f,f,xb,s,s&o':['从堂伯父','再从父伯父','叔伯叔伯伯父','再从伯父','族伯父','族父'],
'f,f,f,xb,s,s&o,w':['从堂伯母','再从父伯母','叔伯叔伯伯母','再从伯母','族伯母','族母'], 'f,f,f,xb,s,s&o,w':['从堂伯母','再从父伯母','叔伯叔伯伯母','再从伯母','族伯母','族母'],
'f,f,f,xb,s,s&l':['从堂叔父','再从父叔父','叔伯叔伯叔父','再从叔父','族叔父','族父'], 'f,f,f,xb,s,s&l':['从堂叔父','再从父叔父','叔伯叔伯叔父','再从叔父','族叔父','族父'],
@@ -1240,9 +1236,9 @@
'm,xb,w,xs,d&o,h':['舅眷姨表姐夫'], 'm,xb,w,xs,d&o,h':['舅眷姨表姐夫'],
'm,xb,w,xs,d&l':['舅眷姨表妹'], 'm,xb,w,xs,d&l':['舅眷姨表妹'],
'm,xb,w,xs,d&l,h':['舅眷姨表妹夫'], 'm,xb,w,xs,d&l,h':['舅眷姨表妹夫'],
'm,xb,s&o':['舅表哥','表哥','表兄'], 'm,xb,s&o':['舅表哥','表哥','老表'],
'm,xb,s&o,w':['舅表嫂','舅表兄妇','表嫂'], 'm,xb,s&o,w':['舅表嫂','舅表兄妇','表嫂'],
'm,xb,s&l':['舅表弟','表弟'], 'm,xb,s&l':['舅表弟','表弟','老表'],
'm,xb,s&l,w':['舅表弟媳','舅表弟妇','表弟媳','表弟妹'], 'm,xb,s&l,w':['舅表弟媳','舅表弟妇','表弟媳','表弟妹'],
'm,xb,s,s':['舅表侄男','表侄男','舅表侄','表侄'], 'm,xb,s,s':['舅表侄男','表侄男','舅表侄','表侄'],
'm,xb,s,s,w':['舅表侄妇','表侄妇'], 'm,xb,s,s,w':['舅表侄妇','表侄妇'],
@@ -1251,14 +1247,14 @@
'm,xb,s,s,d':['舅表侄孙女','表侄孙女','舅表侄孙','表侄孙'], 'm,xb,s,s,d':['舅表侄孙女','表侄孙女','舅表侄孙','表侄孙'],
'm,xb,s,s,d,h':['舅表侄孙婿','表侄孙婿'], 'm,xb,s,s,d,h':['舅表侄孙婿','表侄孙婿'],
'm,xb,s,d':['舅表侄女','表侄女','舅表侄','表侄'], 'm,xb,s,d':['舅表侄女','表侄女','舅表侄','表侄'],
'm,xb,s,d,h':['舅表侄婿','表侄婿'], 'm,xb,s,d,h':['舅表侄婿','表侄婿'],
'm,xb,s,d,s':['舅表侄外孙男','表侄外孙男','舅表侄外孙','表侄外孙'], 'm,xb,s,d,s':['舅表侄外孙男','表侄外孙男','舅表侄外孙','表侄外孙'],
'm,xb,s,d,s,w':['舅表侄外孙妇','表侄外孙妇'], 'm,xb,s,d,s,w':['舅表侄外孙妇','表侄外孙妇'],
'm,xb,s,d,d':['舅表侄外孙女','表侄外孙女','舅表侄外孙','表侄外孙'], 'm,xb,s,d,d':['舅表侄外孙女','表侄外孙女','舅表侄外孙','表侄外孙'],
'm,xb,s,d,d,h':['舅表侄外孙婿','表侄外孙婿'], 'm,xb,s,d,d,h':['舅表侄外孙婿','表侄外孙婿'],
'm,xb,d&o':['舅表姐','表姐'], 'm,xb,d&o':['舅表姐','表姐','老表'],
'm,xb,d&o,h':['舅表姐夫','表姐夫','表姐丈'], 'm,xb,d&o,h':['舅表姐夫','表姐夫','表姐丈'],
'm,xb,d&l':['舅表妹','表妹'], 'm,xb,d&l':['舅表妹','表妹','老表'],
'm,xb,d&l,h':['舅表妹夫','舅表妹婿','表妹夫'], 'm,xb,d&l,h':['舅表妹夫','舅表妹婿','表妹夫'],
'm,xb,d,s':['舅表甥男','舅表甥男','表甥男','表甥'], 'm,xb,d,s':['舅表甥男','舅表甥男','表甥男','表甥'],
'm,xb,d,s,w':['舅表甥妇','表甥妇'], 'm,xb,d,s,w':['舅表甥妇','表甥妇'],
@@ -1740,14 +1736,32 @@
'xb,s,w':['侄媳妇','侄妇'], 'xb,s,w':['侄媳妇','侄妇'],
'xb,s,w,f&o':['侄眷兄'], 'xb,s,w,f&o':['侄眷兄'],
'xb,s,w,f&l':['侄眷弟'], 'xb,s,w,f&l':['侄眷弟'],
'xb,s,w,f,f':['侄眷父'],
'xb,s,w,f,m':['侄眷母'],
'xb,s,w,m&o':['侄眷姊'], 'xb,s,w,m&o':['侄眷姊'],
'xb,s,w,m&l':['侄眷妹'], 'xb,s,w,m&l':['侄眷妹'],
'xb,s,w,m,f':['侄眷父'],
'xb,s,w,m,m':['侄眷母'],
'xb,s,w,xb':['侄眷男'], 'xb,s,w,xb':['侄眷男'],
'xb,s,w,xb,w':['侄眷妇'], 'xb,s,w,xb,w':['侄眷妇'],
'xb,s,w,xs':['侄眷女'], 'xb,s,w,xs':['侄眷女'],
'xb,s,w,xs,h':['侄眷婿'], 'xb,s,w,xs,h':['侄眷婿'],
'xb,s,s':['侄孙男','侄孙子','从孙男'], 'xb,s,s':['侄孙男','侄孙子','从孙男'],
'xb,s,s,w':['侄孙妇','从孙妇'], 'xb,s,s,w':['侄孙妇','从孙妇'],
'xb,s,s,w,f':['侄孙眷男'],
'xb,s,s,w,f,f&o':['侄孙眷兄'],
'xb,s,s,w,f,f&l':['侄孙眷弟'],
'xb,s,s,w,f,m&o':['侄孙眷姊'],
'xb,s,s,w,f,m&l':['侄孙眷妹'],
'xb,s,s,w,m':['侄孙眷女'],
'xb,s,s,w,m,f&o':['侄孙眷兄'],
'xb,s,s,w,m,f&l':['侄孙眷弟'],
'xb,s,s,w,m,m&o':['侄孙眷姊'],
'xb,s,s,w,m,m&l':['侄孙眷妹'],
'xb,s,s,w,xb':['侄孙眷孙男'],
'xb,s,s,w,xb,w':['侄孙眷孙妇'],
'xb,s,s,w,xs':['侄孙眷孙女'],
'xb,s,s,w,xs,h':['侄孙眷孙婿'],
'xb,s,s,s':['侄曾孙'], 'xb,s,s,s':['侄曾孙'],
'xb,s,s,s,w':['侄曾孙妇'], 'xb,s,s,s,w':['侄曾孙妇'],
'xb,s,s,s,s':['侄玄孙'], 'xb,s,s,s,s':['侄玄孙'],
@@ -1758,6 +1772,20 @@
'xb,s,s,d,d':['侄玄外孙女'], 'xb,s,s,d,d':['侄玄外孙女'],
'xb,s,d':['侄孙女','从孙女'], 'xb,s,d':['侄孙女','从孙女'],
'xb,s,d,h':['侄孙婿','从孙婿'], 'xb,s,d,h':['侄孙婿','从孙婿'],
'xb,s,d,h,f':['侄孙姻男'],
'xb,s,d,h,f,f&o':['侄孙姻兄'],
'xb,s,d,h,f,f&l':['侄孙姻弟'],
'xb,s,d,h,f,m&o':['侄孙姻姊'],
'xb,s,d,h,f,m&l':['侄孙姻妹'],
'xb,s,d,h,m':['侄孙姻女'],
'xb,s,d,h,m,f&o':['侄孙姻兄'],
'xb,s,d,h,m,f&l':['侄孙姻弟'],
'xb,s,d,h,m,m&o':['侄孙姻姊'],
'xb,s,d,h,m,m&l':['侄孙姻妹'],
'xb,s,d,h,xb':['侄孙姻孙男'],
'xb,s,d,h,xb,w':['侄孙姻孙妇'],
'xb,s,d,h,xs':['侄孙姻孙女'],
'xb,s,d,h,xs,h':['侄孙姻孙婿'],
'xb,s,d,s':['侄曾外孙'], 'xb,s,d,s':['侄曾外孙'],
'xb,s,d,s,w':['侄曾外孙妇'], 'xb,s,d,s,w':['侄曾外孙妇'],
'xb,s,d,s,s':['侄曾外曾孙'], 'xb,s,d,s,s':['侄曾外曾孙'],
@@ -1770,14 +1798,32 @@
'xb,d,h':['侄女婿','侄婿'], 'xb,d,h':['侄女婿','侄婿'],
'xb,d,h,f&o':['侄姻兄'], 'xb,d,h,f&o':['侄姻兄'],
'xb,d,h,f&l':['侄姻弟'], 'xb,d,h,f&l':['侄姻弟'],
'xb,d,h,f,f':['侄姻父'],
'xb,d,h,f,m':['侄姻母'],
'xb,d,h,m&o':['侄姻姊'], 'xb,d,h,m&o':['侄姻姊'],
'xb,d,h,m&l':['侄姻妹'], 'xb,d,h,m&l':['侄姻妹'],
'xb,d,h,m,f':['侄姻父'],
'xb,d,h,m,m':['侄姻母'],
'xb,d,h,xb':['侄姻男'], 'xb,d,h,xb':['侄姻男'],
'xb,d,h,xb,w':['侄姻妇'], 'xb,d,h,xb,w':['侄姻妇'],
'xb,d,h,xs':['侄姻女'], 'xb,d,h,xs':['侄姻女'],
'xb,d,h,xs,h':['侄姻婿'], 'xb,d,h,xs,h':['侄姻婿'],
'xb,d,s':['侄外孙','外侄孙'], 'xb,d,s':['侄外孙','外侄孙'],
'xb,d,s,w':['侄外孙妇','外侄孙妇'], 'xb,d,s,w':['侄外孙妇','外侄孙妇'],
'xb,d,s,w,f':['侄外孙眷男'],
'xb,d,s,w,f,f&o':['侄外孙眷兄'],
'xb,d,s,w,f,f&l':['侄外孙眷弟'],
'xb,d,s,w,f,m&o':['侄外孙眷姊'],
'xb,d,s,w,f,m&l':['侄外孙眷妹'],
'xb,d,s,w,m':['侄外孙眷女'],
'xb,d,s,w,m,f&o':['侄外孙眷兄'],
'xb,d,s,w,m,f&l':['侄外孙眷弟'],
'xb,d,s,w,m,m&o':['侄外孙眷姊'],
'xb,d,s,w,m,m&l':['侄外孙眷妹'],
'xb,d,s,w,xb':['侄外孙眷孙男'],
'xb,d,s,w,xb,w':['侄外孙眷孙妇'],
'xb,d,s,w,xs':['侄外孙眷孙女'],
'xb,d,s,w,xs,h':['侄外孙眷孙婿'],
'xb,d,s,s':['侄外曾孙'], 'xb,d,s,s':['侄外曾孙'],
'xb,d,s,s,w':['侄外曾孙妇'], 'xb,d,s,s,w':['侄外曾孙妇'],
'xb,d,s,s,s':['侄外玄孙'], 'xb,d,s,s,s':['侄外玄孙'],
@@ -1788,6 +1834,20 @@
'xb,d,s,d,d':['侄外玄外孙女'], 'xb,d,s,d,d':['侄外玄外孙女'],
'xb,d,d':['侄外孙女','外侄孙女'], 'xb,d,d':['侄外孙女','外侄孙女'],
'xb,d,d,h':['侄外孙婿','外侄孙婿'], 'xb,d,d,h':['侄外孙婿','外侄孙婿'],
'xb,d,d,h,f':['侄外孙姻男'],
'xb,d,d,h,f,f&o':['侄外孙姻兄'],
'xb,d,d,h,f,f&l':['侄外孙姻弟'],
'xb,d,d,h,f,m&o':['侄外孙姻姊'],
'xb,d,d,h,f,m&l':['侄外孙姻妹'],
'xb,d,d,h,m':['侄外孙姻女'],
'xb,d,d,h,m,f&o':['侄外孙姻兄'],
'xb,d,d,h,m,f&l':['侄外孙姻弟'],
'xb,d,d,h,m,m&o':['侄外孙姻姊'],
'xb,d,d,h,m,m&l':['侄外孙姻妹'],
'xb,d,d,h,xb':['侄外孙姻孙男'],
'xb,d,d,h,xb,w':['侄外孙姻孙妇'],
'xb,d,d,h,xs':['侄外孙姻孙女'],
'xb,d,d,h,xs,h':['侄外孙姻孙婿'],
'xb,d,d,s':['侄外曾外孙'], 'xb,d,d,s':['侄外曾外孙'],
'xb,d,d,s,w':['侄外曾外孙妇'], 'xb,d,d,s,w':['侄外曾外孙妇'],
'xb,d,d,s,s':['侄外曾外曾孙'], 'xb,d,d,s,s':['侄外曾外曾孙'],
@@ -1898,14 +1958,32 @@
'xs,s,w':['外甥媳妇','甥媳妇','甥妇'], 'xs,s,w':['外甥媳妇','甥媳妇','甥妇'],
'xs,s,w,f&o':['甥眷兄'], 'xs,s,w,f&o':['甥眷兄'],
'xs,s,w,f&l':['甥眷弟'], 'xs,s,w,f&l':['甥眷弟'],
'xs,s,w,f,f':['甥眷父'],
'xs,s,w,f,m':['甥眷母'],
'xs,s,w,m&o':['甥眷姊'], 'xs,s,w,m&o':['甥眷姊'],
'xs,s,w,m&l':['甥眷妹'], 'xs,s,w,m&l':['甥眷妹'],
'xs,s,w,m,f':['甥眷父'],
'xs,s,w,m,m':['甥眷母'],
'xs,s,w,xb':['甥眷男'], 'xs,s,w,xb':['甥眷男'],
'xs,s,w,xb,w':['甥眷妇'], 'xs,s,w,xb,w':['甥眷妇'],
'xs,s,w,xs':['甥眷女'], 'xs,s,w,xs':['甥眷女'],
'xs,s,w,xs,h':['甥眷婿'], 'xs,s,w,xs,h':['甥眷婿'],
'xs,s,s':['甥孙','甥孙男','从孙男'], 'xs,s,s':['甥孙','甥孙男','从孙男'],
'xs,s,s,w':['甥孙妇','从孙妇'], 'xs,s,s,w':['甥孙妇','从孙妇'],
'xs,s,s,w,f':['甥孙眷男'],
'xs,s,s,w,f,f&o':['甥孙眷兄'],
'xs,s,s,w,f,f&l':['甥孙眷弟'],
'xs,s,s,w,f,m&o':['甥孙眷姊'],
'xs,s,s,w,f,m&l':['甥孙眷妹'],
'xs,s,s,w,m':['甥孙眷女'],
'xs,s,s,w,m,f&o':['甥孙眷兄'],
'xs,s,s,w,m,f&l':['甥孙眷弟'],
'xs,s,s,w,m,m&o':['甥孙眷姊'],
'xs,s,s,w,m,m&l':['甥孙眷妹'],
'xs,s,s,w,xb':['甥孙眷孙男'],
'xs,s,s,w,xb,w':['甥孙眷孙妇'],
'xs,s,s,w,xs':['甥孙眷孙女'],
'xs,s,s,w,xs,h':['甥孙眷孙婿'],
'xs,s,s,s':['甥曾孙'], 'xs,s,s,s':['甥曾孙'],
'xs,s,s,s,w':['甥曾孙妇'], 'xs,s,s,s,w':['甥曾孙妇'],
'xs,s,s,s,s':['甥玄孙'], 'xs,s,s,s,s':['甥玄孙'],
@@ -1916,6 +1994,20 @@
'xs,s,s,d,d':['甥玄外孙女'], 'xs,s,s,d,d':['甥玄外孙女'],
'xs,s,d':['甥孙女','从孙女'], 'xs,s,d':['甥孙女','从孙女'],
'xs,s,d,h':['甥孙婿','从孙婿'], 'xs,s,d,h':['甥孙婿','从孙婿'],
'xs,s,d,h,f':['甥孙姻男'],
'xs,s,d,h,f,f&o':['甥孙姻兄'],
'xs,s,d,h,f,f&l':['甥孙姻弟'],
'xs,s,d,h,f,m&o':['甥孙姻姊'],
'xs,s,d,h,f,m&l':['甥孙姻妹'],
'xs,s,d,h,m':['甥孙姻女'],
'xs,s,d,h,m,f&o':['甥孙姻兄'],
'xs,s,d,h,m,f&l':['甥孙姻弟'],
'xs,s,d,h,m,m&o':['甥孙姻姊'],
'xs,s,d,h,m,m&l':['甥孙姻妹'],
'xs,s,d,h,xb':['甥孙姻孙男'],
'xs,s,d,h,xb,w':['甥孙姻孙妇'],
'xs,s,d,h,xs':['甥孙姻孙女'],
'xs,s,d,h,xs,h':['甥孙姻孙婿'],
'xs,s,d,s':['甥曾外孙'], 'xs,s,d,s':['甥曾外孙'],
'xs,s,d,s,w':['甥曾外孙妇'], 'xs,s,d,s,w':['甥曾外孙妇'],
'xs,s,d,s,s':['甥曾外曾孙'], 'xs,s,d,s,s':['甥曾外曾孙'],
@@ -1928,14 +2020,32 @@
'xs,d,h':['外甥女婿','甥女婿','甥婿'], 'xs,d,h':['外甥女婿','甥女婿','甥婿'],
'xs,d,h,f&o':['甥姻兄'], 'xs,d,h,f&o':['甥姻兄'],
'xs,d,h,f&l':['甥姻弟'], 'xs,d,h,f&l':['甥姻弟'],
'xs,d,h,f,f':['甥姻父'],
'xs,d,h,f,m':['甥姻母'],
'xs,d,h,m&o':['甥姻姊'], 'xs,d,h,m&o':['甥姻姊'],
'xs,d,h,m&l':['甥姻妹'], 'xs,d,h,m&l':['甥姻妹'],
'xs,d,h,m,f':['甥姻父'],
'xs,d,h,m,m':['甥姻母'],
'xs,d,h,xb':['甥姻男'], 'xs,d,h,xb':['甥姻男'],
'xs,d,h,xb,w':['甥姻妇'], 'xs,d,h,xb,w':['甥姻妇'],
'xs,d,h,xs':['甥姻女'], 'xs,d,h,xs':['甥姻女'],
'xs,d,h,xs,h':['甥姻婿'], 'xs,d,h,xs,h':['甥姻婿'],
'xs,d,s':['甥外孙'], 'xs,d,s':['甥外孙'],
'xs,d,s,w':['甥外孙妇'], 'xs,d,s,w':['甥外孙妇'],
'xs,d,s,w,f':['甥外孙眷男'],
'xs,d,s,w,f,f&o':['甥外孙眷兄'],
'xs,d,s,w,f,f&l':['甥外孙眷弟'],
'xs,d,s,w,f,m&o':['甥外孙眷姊'],
'xs,d,s,w,f,m&l':['甥外孙眷妹'],
'xs,d,s,w,m':['甥外孙眷女'],
'xs,d,s,w,m,f&o':['甥外孙眷兄'],
'xs,d,s,w,m,f&l':['甥外孙眷弟'],
'xs,d,s,w,m,m&o':['甥外孙眷姊'],
'xs,d,s,w,m,m&l':['甥外孙眷妹'],
'xs,d,s,w,xb':['甥外孙眷孙男'],
'xs,d,s,w,xb,w':['甥外孙眷孙妇'],
'xs,d,s,w,xs':['甥外孙眷孙女'],
'xs,d,s,w,xs,h':['甥外孙眷孙婿'],
'xs,d,s,s':['甥外曾孙'], 'xs,d,s,s':['甥外曾孙'],
'xs,d,s,s,w':['甥外曾孙妇'], 'xs,d,s,s,w':['甥外曾孙妇'],
'xs,d,s,s,s':['甥外玄孙'], 'xs,d,s,s,s':['甥外玄孙'],
@@ -1946,6 +2056,19 @@
'xs,d,s,d,d':['甥外玄外孙女'], 'xs,d,s,d,d':['甥外玄外孙女'],
'xs,d,d':['甥外孙女'], 'xs,d,d':['甥外孙女'],
'xs,d,d,h':['甥外孙婿'], 'xs,d,d,h':['甥外孙婿'],
'xs,d,d,h,f,f&o':['甥外孙姻兄'],
'xs,d,d,h,f,f&l':['甥外孙姻弟'],
'xs,d,d,h,f,m&o':['甥外孙姻姊'],
'xs,d,d,h,f,m&l':['甥外孙姻妹'],
'xs,d,d,h,m':['甥外孙姻女'],
'xs,d,d,h,m,f&o':['甥外孙姻兄'],
'xs,d,d,h,m,f&l':['甥外孙姻弟'],
'xs,d,d,h,m,m&o':['甥外孙姻姊'],
'xs,d,d,h,m,m&l':['甥外孙姻妹'],
'xs,d,d,h,xb':['甥外孙姻孙男'],
'xs,d,d,h,xb,w':['甥外孙姻孙妇'],
'xs,d,d,h,xs':['甥外孙姻孙女'],
'xs,d,d,h,xs,h':['甥外孙姻孙婿'],
'xs,d,d,s':['甥外曾外孙'], 'xs,d,d,s':['甥外曾外孙'],
'xs,d,d,s,w':['甥外曾外孙妇'], 'xs,d,d,s,w':['甥外曾外孙妇'],
'xs,d,d,s,s':['甥外曾外曾孙'], 'xs,d,d,s,s':['甥外曾外曾孙'],
@@ -2027,15 +2150,15 @@
's,d,s':['曾外孙'], 's,d,s':['曾外孙'],
's,d,s,w':['曾外孙媳妇'], 's,d,s,w':['曾外孙媳妇'],
's,d,s,s':['曾外曾孙'], 's,d,s,s':['曾外曾孙'],
's,d,s,s,w':['曾外曾孙媳妇'], 's,d,s,s,w':['曾外曾孙媳妇'],
's,d,s,d':['曾外曾孙女'], 's,d,s,d':['曾外曾孙女'],
's,d,s,d,d':['曾外曾孙女婿'], 's,d,s,d,h':['曾外曾孙女婿'],
's,d,d':['曾外孙女'], 's,d,d':['曾外孙女'],
's,d,d,h':['曾外孙女婿'], 's,d,d,h':['曾外孙女婿'],
's,d,d,s':['曾外曾外孙'], 's,d,d,s':['曾外曾外孙'],
's,d,d,s,w':['曾外曾外孙媳妇'], 's,d,d,s,w':['曾外曾外孙媳妇'],
's,d,d,d':['曾外曾外孙女'], 's,d,d,d':['曾外曾外孙女'],
's,d,d,d,h':['曾外曾外孙女婿'], 's,d,d,d,h':['曾外曾外孙女婿'],
'd':['女儿','千金','闺女','掌上明珠','乖囡','囡囡','姑娘','女','阿女','女女','x女儿'], 'd':['女儿','千金','闺女','掌上明珠','乖囡','囡囡','姑娘','女','阿女','女女','x女儿'],
'd,h':['女婿','姑爷','女婿子','女婿儿','儿婿'], 'd,h':['女婿','姑爷','女婿子','女婿儿','儿婿'],
'd,s':['外孙'], 'd,s':['外孙'],
@@ -2043,29 +2166,29 @@
'd,s,s':['外曾孙','重外孙'], 'd,s,s':['外曾孙','重外孙'],
'd,s,s,w':['外曾孙媳妇','外曾孙妇'], 'd,s,s,w':['外曾孙媳妇','外曾孙妇'],
'd,s,s,s':['外玄孙'], 'd,s,s,s':['外玄孙'],
'd,s,s,s,w':['外玄孙媳妇'], 'd,s,s,s,w':['外玄孙媳妇'],
'd,s,s,d':['外玄孙女'], 'd,s,s,d':['外玄孙女'],
'd,s,s,d,h':['外玄孙女婿'], 'd,s,s,d,h':['外玄孙女婿'],
'd,s,d':['外曾孙女','重外孙女'], 'd,s,d':['外曾孙女','重外孙女'],
'd,s,d,h':['外曾孙女婿','重外孙女婿'], 'd,s,d,h':['外曾孙女婿','重外孙女婿'],
'd,s,d,s':['外玄外孙'], 'd,s,d,s':['外玄外孙'],
'd,s,d,s,w':['外玄外孙媳妇'], 'd,s,d,s,w':['外玄外孙媳妇'],
'd,s,d,d':['外玄外孙女'], 'd,s,d,d':['外玄外孙女'],
'd,s,d,d,h':['外玄外孙女婿'], 'd,s,d,d,h':['外玄外孙女婿'],
'd,d':['外孙女','外孙囡'], 'd,d':['外孙女','外孙囡'],
'd,d,h':['外孙女婿','外孙婿'], 'd,d,h':['外孙女婿','外孙婿'],
'd,d,s':['外曾外孙'], 'd,d,s':['外曾外孙'],
'd,d,s,w':['外曾外孙媳妇'], 'd,d,s,w':['外曾外孙媳妇'],
'd,d,s,s':['外曾外曾孙'], 'd,d,s,s':['外曾外曾孙'],
'd,d,s,s,w':['外曾外曾孙媳妇'], 'd,d,s,s,w':['外曾外曾孙媳妇'],
'd,d,s,d':['外曾外曾孙女'], 'd,d,s,d':['外曾外曾孙女'],
'd,d,s,d,h':['外曾外曾孙女婿'], 'd,d,s,d,h':['外曾外曾孙女婿'],
'd,d,d':['外曾外孙女'], 'd,d,d':['外曾外孙女'],
'd,d,d,h':['外曾外孙女婿'], 'd,d,d,h':['外曾外孙女婿'],
'd,d,d,s':['外曾外曾外孙'], 'd,d,d,s':['外曾外曾外孙'],
'd,d,d,s,w':['外曾外曾外孙媳妇'], 'd,d,d,s,w':['外曾外曾外孙媳妇'],
'd,d,d,d':['外曾外曾外孙女'], 'd,d,d,d':['外曾外曾外孙女'],
'd,d,d,d,h':['外曾外曾外孙女婿'], 'd,d,d,d,h':['外曾外曾外孙女婿'],
//亲家 //亲家
's,w,f':['亲家公','亲家翁','姻翁','亲家'], 's,w,f':['亲家公','亲家翁','姻翁','亲家'],
's,w,f&o':['男眷兄','息眷兄'], 's,w,f&o':['男眷兄','息眷兄'],
@@ -2081,11 +2204,14 @@
's,w,f,f,xb,s&o,w':['男眷家兄妇'], 's,w,f,f,xb,s&o,w':['男眷家兄妇'],
's,w,f,f,xb,s&l':['男眷家弟'], 's,w,f,f,xb,s&l':['男眷家弟'],
's,w,f,f,xb,s&l,w':['男眷家弟妇'], 's,w,f,f,xb,s&l,w':['男眷家弟妇'],
's,w,f,f,xb,s,s':['男眷侄'], 's,w,f,f,xb,s,s':['男眷侄男'],
's,w,f,f,xb,s,d':['男眷侄女'],
's,w,f,f,xb,d&o':['男眷家姊'], 's,w,f,f,xb,d&o':['男眷家姊'],
's,w,f,f,xb,d&o,w':['男眷家姊婿'], 's,w,f,f,xb,d&o,w':['男眷家姊婿'],
's,w,f,f,xb,d&l':['男眷家妹'], 's,w,f,f,xb,d&l':['男眷家妹'],
's,w,f,f,xb,d&l,w':['男眷家妹婿'], 's,w,f,f,xb,d&l,w':['男眷家妹婿'],
's,w,f,f,xb,d,s':['男眷甥男'],
's,w,f,f,xb,d,d':['男眷甥女'],
's,w,f,m':['男眷母','太姻姆'], 's,w,f,m':['男眷母','太姻姆'],
's,w,f,m,f':['老太姻翁'], 's,w,f,m,f':['老太姻翁'],
's,w,f,m,m':['老太姻姆'], 's,w,f,m,m':['老太姻姆'],
@@ -2144,11 +2270,14 @@
'd,h,f,f,xb,s&o,w':['女姻家兄妇'], 'd,h,f,f,xb,s&o,w':['女姻家兄妇'],
'd,h,f,f,xb,s&l':['女姻家弟'], 'd,h,f,f,xb,s&l':['女姻家弟'],
'd,h,f,f,xb,s&l,w':['女姻家弟妇'], 'd,h,f,f,xb,s&l,w':['女姻家弟妇'],
'd,h,f,f,xb,s,s':['女姻侄'], 'd,h,f,f,xb,s,s':['女姻侄男'],
'd,h,f,f,xb,s,d':['女姻侄女'],
'd,h,f,f,xb,d&o':['女姻家姊'], 'd,h,f,f,xb,d&o':['女姻家姊'],
'd,h,f,f,xb,d&o,w':['女姻家姊婿'], 'd,h,f,f,xb,d&o,w':['女姻家姊婿'],
'd,h,f,f,xb,d&l':['女姻家妹'], 'd,h,f,f,xb,d&l':['女姻家妹'],
'd,h,f,f,xb,d&l,w':['女姻家妹婿'], 'd,h,f,f,xb,d&l,w':['女姻家妹婿'],
'd,h,f,f,xb,d,s':['女姻甥男'],
'd,h,f,f,xb,d,d':['女姻甥女'],
'd,h,f,m':['女姻母','太姻姆'], 'd,h,f,m':['女姻母','太姻姆'],
'd,h,f,m,f':['老太姻翁'], 'd,h,f,m,f':['老太姻翁'],
'd,h,f,m,m':['老太姻姆'], 'd,h,f,m,m':['老太姻姆'],
@@ -2194,10 +2323,10 @@
'd,h,xs,d':['女姻外孙女','息姻外孙女'], 'd,h,xs,d':['女姻外孙女','息姻外孙女'],
'd,h,xs,d,h':['女姻外孙婿','息姻外孙婿'], 'd,h,xs,d,h':['女姻外孙婿','息姻外孙婿'],
}; };
// 模式 // 模式
var _data = Object.assign({},_map); var _data = Object.assign({},_map);
var _mode = {}; var _mode = {};
// 数组去重 // 数组去重
var unique = function(arr) { var unique = function(arr) {
@@ -2229,22 +2358,24 @@
// 中文获取选择器 // 中文获取选择器
function getSelectors(str){ function getSelectors(str){
str = str.replace(/[二|三|四|五|六|七|八|九|十]{1,2}/g,'x'); str = str.replace(/[二|三|四|五|六|七|八|九|十]{1,2}/g,'x');
var lists = str.replace(/我的?/,'').replace(/家的?/,'的').split('的'); var lists = str.replace(/我的?(.+)/,'$1').replace(/家的?/,'的').split('的');
var result = ['']; var result = [''];
var isMatch = true; var isMatch = true;
var replaceMap = { var replaceMap = {
'哥':'兄', '哥':'兄',
'姐':'姊', '姐':'姊',
'媳妇':'妇', '媳':'妇',
'女婿':'婿', '夫':'婿',
'媳':'妇', '姪':'侄',
'夫':'婿', '姊妹姻':'姻',
'姪':'侄', '女姻':'姻',
'姊妹姻':'姻', '兄弟眷':'眷',
'女姻':'姻', '男眷':'眷'
'兄弟眷':'眷', };
'男眷':'眷' var replaceMap2 = {
}; '媳妇':'妇',
'女婿':'婿'
}
while(lists.length){ while(lists.length){
var name = lists.shift(); //当前匹配词 var name = lists.shift(); //当前匹配词
var items = []; //当前匹配词可能性 var items = []; //当前匹配词可能性
@@ -2252,42 +2383,47 @@
var value = _data[i]; var value = _data[i];
if(value.indexOf(name)>-1){ //是否存在该关系 if(value.indexOf(name)>-1){ //是否存在该关系
items.push(i); items.push(i);
}else{ //同义词替换 }else{ //同义词替换
var r_name = name; var r_name = name;
for(var word in replaceMap){ for(var word in replaceMap){
r_name = r_name.replace(word,replaceMap[word]); r_name = r_name.replace(word,replaceMap[word]);
} }
var r_value = value.map(function(v){ for(var word in replaceMap2){
for(var word in replaceMap){ if(word!=name){
v = v.replace(word,replaceMap[word]); r_name = r_name.replace(word,replaceMap[word]);
} }
return v; }
}); var r_value = value.map(function(v){
if(r_value.indexOf(r_name)>-1){ for(var word in replaceMap){
items.push(i); v = v.replace(word,replaceMap[word]);
} }
} return v;
});
if(r_value.indexOf(r_name)>-1){
items.push(i);
}
}
} }
if(!items.length){ if(!items.length){
isMatch = false; isMatch = false;
} }
var res = []; var res = [];
result.forEach(function(a){ result.forEach(function(a){
items.forEach(function(b){ items.forEach(function(b){
res.push(a+','+b); res.push(a+(b?','+b:''));
}); });
}); });
result = res; result = res;
} }
return isMatch?result:[]; return isMatch?result:[''];
} }
// 选择器转ID // 选择器转ID
function selector2id(selector,sex){ function selector2id(selector,sex){
var result = []; var result = [];
var hash = {}; var hash = {};
//性别判断 //性别判断
if(sex<0){ if(sex<0){
if(selector.match(/^,w/)){ if(selector.match(/^,w/)){
sex = 1; sex = 1;
}else if(selector.match(/^,h/)){ }else if(selector.match(/^,h/)){
@@ -2296,9 +2432,9 @@
} }
// console.log('[selector]',selector); // console.log('[selector]',selector);
var getId = function(selector,sex){ var getId = function(selector,sex){
if(selector.indexOf(',1')==-1&&selector.indexOf(',0')==-1){ if(selector.indexOf(',1')==-1&&selector.indexOf(',0')==-1){
selector = ','+sex+selector; selector = ','+sex+selector;
} }
if(selector.match(/,[w0],w|,[h1],h/)){ //同志关系去除 if(selector.match(/,[w0],w|,[h1],h/)){ //同志关系去除
return false; return false;
} }
@@ -2371,7 +2507,7 @@
items = getData(id); items = getData(id);
} }
// 忽略年龄条件查找 // 忽略年龄条件查找
if(!items.length){ if(!items.length){
id = id.replace(/[ol](b|s)/g,'x$1'); id = id.replace(/[ol](b|s)/g,'x$1');
items = getData(id); items = getData(id);
} }
@@ -2410,14 +2546,14 @@
} }
if(id){ if(id){
id = id.replace(/&[ol]/g,''); id = id.replace(/&[ol]/g,'');
//性别判断 //性别判断
if(sex<0){ if(sex<0){
if(id.match(/^w/)){ if(id.match(/^w/)){
sex = 1; sex = 1;
}else if(id.match(/^h/)){ }else if(id.match(/^h/)){
sex = 0; sex = 0;
} }
} }
var result = []; var result = [];
var doing = function(sex){ var doing = function(sex){
var sid = (','+sex+','+id).replace(/,[fhs]|,[olx]b/g,',1').replace(/,[mwd]|,[olx]s/g,',0'); var sid = (','+sex+','+id).replace(/,[fhs]|,[olx]b/g,',1').replace(/,[mwd]|,[olx]s/g,',0');
@@ -2429,9 +2565,9 @@
arr.push(hash[id_arr[i]][sid_arr[i]]); arr.push(hash[id_arr[i]][sid_arr[i]]);
} }
var g = 0; var g = 0;
var gMap = {'f':1,'m':1,'s':-1,'d':-1}; var gMap = {'f':1,'m':1,'s':-1,'d':-1};
arr.forEach(function(r){ arr.forEach(function(r){
g += gMap[r]||0; g += gMap[r]||0;
}); });
return arr.join(',')+(g?'':age); return arr.join(',')+(g?'':age);
}; };
@@ -2450,29 +2586,54 @@
function getChainById(id){ function getChainById(id){
var arr = id.split(','); var arr = id.split(',');
return arr.map(function(sign){ return arr.map(function(sign){
var key = sign.replace(/&[ol]/,''); var key = sign.replace(/&[ol]/,'');
return _data[key][0]; return _data[key][0];
}).join('的'); }).join('的');
} }
// 合并选择器,查找两个对象之间的关系 // 合并选择器,查找两个对象之间的关系
function mergeSelector(from,to,mid_sex){ function mergeSelector(from,to,my_sex){
var sex = mid_sex; if(my_sex<0){
if(to){ if(from.match(/^,w/)||to.match(/^,w/)){
sex = to.match(/([fhs1](&[ol])?|[olx]b)$/)?1:0; my_sex = 1;
} }else if(from.match(/^,h/)||to.match(/^,h/)){
var ids = reverseId(to.substr(1),mid_sex); my_sex = 0;
if(ids.length>1){ }
return {
'selector':(to?',['+ids.join('|')+']':'')+from,
'sex':sex
};
}else{
return {
'selector':(to?','+ids[0]+'':'')+from,
'sex':sex
};
} }
var sex = my_sex;
var from_ids = selector2id(from,my_sex);
var to_ids = selector2id(to,my_sex);
var r_ids = [];
if(to){
var isMale = false;
var isFemale = false;
to_ids.forEach(function(id){
if(id.match(/([fhs1](&[ol])?|[olx]b)$/)){
isMale = true;
}
if(id.match(/([mwd0](&[ol])?|[olx]s)$/)){
isFemale = true;
}
r_ids = r_ids.concat(reverseId(id,my_sex));
});
r_ids = unique(r_ids);
if(isMale&&isFemale){
sex = -1;
}else if(isMale){
sex = 1;
}else if(isFemale){
sex = 0;
}
}else{
r_ids = [''];
}
// console.log('[from_ids]',from_ids,'r_ids',r_ids);
var from_selector = from_ids.length>1?'['+from_ids.join('|')+']':from_ids[0];
var to_selector = r_ids.length>1?'['+r_ids.join('|')+']':r_ids[0];
return {
'selector':(to?','+to_selector:'')+(from?','+from_selector:''),
'sex':sex
};
} }
var relationship = function (parameter){ var relationship = function (parameter){
@@ -2481,19 +2642,19 @@
target:'', target:'',
sex:-1, sex:-1,
type:'default', // 'chain'表示关系链 type:'default', // 'chain'表示关系链
reverse:false, // true表示反向 reverse:false, // true表示反向
mode:'default', // 用户自定义模式 mode:'default', // 用户自定义模式
},parameter); },parameter);
_data = Object.assign({},_map); _data = Object.assign({},_map);
for(var lang in _mode){ for(var lang in _mode){
if(options.mode==lang){ if(options.mode==lang){
for(var key in _mode[lang]){ for(var key in _mode[lang]){
_data[key] = [].concat(_mode[lang][key],_map[key]||[]); _data[key] = [].concat(_mode[lang][key],_map[key]||[]);
} }
} }
} }
var from_selectors = getSelectors(options.text); var from_selectors = getSelectors(options.text);
var to_selectors = options.target?getSelectors(options.target):['']; var to_selectors = getSelectors(options.target);
// console.log('[selectors]',from_selectors,to_selectors); // console.log('[selectors]',from_selectors,to_selectors);
var result = []; //匹配结果 var result = []; //匹配结果
from_selectors.forEach(function(from){ from_selectors.forEach(function(from){
@@ -2501,57 +2662,57 @@
var data = mergeSelector(from,to,options.sex); var data = mergeSelector(from,to,options.sex);
// console.log('[data]',data); // console.log('[data]',data);
var ids = selector2id(data['selector'],data['sex']); var ids = selector2id(data['selector'],data['sex']);
// console.log('[ids]',data['selector'],sex,ids); // console.log('[ids]',data['selector'],data['sex'],ids);
if(ids){ if(ids){
ids.forEach(function(id){ ids.forEach(function(id){
var temps = [id]; var temps = [id];
if(options.type=='chain'){ if(options.type=='chain'){
if(options.reverse){ if(options.reverse){
temps = reverseId(id,data['sex']); temps = reverseId(id,data['sex']);
} }
temps.forEach(function(id){ temps.forEach(function(id){
var item = getChainById(id); var item = getChainById(id);
if(item){ if(item){
result.push(item); result.push(item);
} }
}); });
}else{ }else{
if(options.reverse){ if(options.reverse){
temps = reverseId(id,data['sex']); temps = reverseId(id,data['sex']);
} }
temps.forEach(function(id){ temps.forEach(function(id){
var items = getDataById(data['sex']+','+id); var items = getDataById(data['sex']+','+id);
if(!items.length){ if(!items.length){
items = getDataById(id); items = getDataById(id);
} }
if(!items.length){ if(!items.length){
if(id.indexOf('w')==0||id.indexOf('h')==0){ //找不到关系,随爱人叫 if(id.indexOf('w')==0||id.indexOf('h')==0){ //找不到关系,随爱人叫
items = getDataById(id.substr(2)); items = getDataById(id.substr(2));
} }
} }
if(items.length){ if(items.length){
result = result.concat(items); result = result.concat(items);
} }
}); });
} }
}); });
} }
}); });
}); });
return unique(result); return unique(result);
}; };
// 数据量 // 数据量
relationship.dataCount = 0; relationship.dataCount = 0;
for(var i in _data){ for(var i in _data){
relationship.dataCount++; relationship.dataCount++;
} }
// 设置语言模式 // 设置语言模式
relationship.setMode = function(sign,data){ relationship.setMode = function(sign,data){
if(typeof _mode[sign]=='undefined'){ if(typeof _mode[sign]=='undefined'){
_mode[sign] = {}; _mode[sign] = {};
} }
_mode[sign] = Object.assign(_mode[sign],data); _mode[sign] = Object.assign(_mode[sign],data);
}; };
return relationship; return relationship;
}); });
+4
View File
@@ -21,6 +21,10 @@ test('relationship.js show to be tested', function (t) {
t.deepEqual(relationship({text:'岳母',target:'女儿',reverse:true}),['外孙女']); t.deepEqual(relationship({text:'岳母',target:'女儿',reverse:true}),['外孙女']);
t.deepEqual(relationship({text:'姑妈',target:'舅妈',reverse:true}),['兄弟眷兄妇','兄弟眷弟妇']); t.deepEqual(relationship({text:'姑妈',target:'舅妈',reverse:true}),['兄弟眷兄妇','兄弟眷弟妇']);
t.deepEqual(relationship({text:'舅妈',target:'女儿',reverse:true}),['姑甥孙女','姑甥外孙女']); t.deepEqual(relationship({text:'舅妈',target:'女儿',reverse:true}),['姑甥孙女','姑甥外孙女']);
t.deepEqual(relationship({text:'老公的父母',target:'孩子'}),['爷爷','奶奶']);
t.deepEqual(relationship({text:'爸爸的哥哥的弟弟的儿子'}),['堂哥','堂弟','兄弟','自己']);
t.deepEqual(relationship({text:'外婆',target:'女婿',reverse:true}),['外曾孙女婿','外曾外孙女婿']);
t.deepEqual(relationship({text:'我',target:'爸爸'}),['儿子','女儿']);
t.end(); t.end();
}); });