updated 重写数据结构并复用
通过复用,记录更多关系
This commit is contained in:
1 parent
724da3b630
commit
52cf8a9114
2 files changed
+757
-2466
No files matched your search
Vendored
+2
-3
@@ -6,6 +6,5 @@
|
||||
* Released under the MIT License.
|
||||
* https://github.com/mumuy/relationship/blob/master/LICENSE
|
||||
*/
|
||||
!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"),s=s.replace(/之/,"的").replace(/我的?(.+)/,"$1"),s.match(/[^娘婆亲]家的?/)&&(s=s.replace(/家的?/,"的"));for(var f=s.split("的"),x=[],d=!0,m={"哥":"兄","姐":"姊","侄":"姪","祖父":"王父","祖母":"王母","孙女婿":"孙婿","甥女婿":"甥婿","侄女婿":"侄婿","孙媳妇":"孙妇","甥媳妇":"甥妇","侄媳妇":"侄妇"},b={"^表":["姑表","舅表"],"^姻":["姑姻","姨姻","姊妹姻","女姻"],"^眷":["叔眷","舅眷","兄弟眷","男眷"],"^外甥":["甥"],"祖$":["祖父","祖母"],"孙$":["孙男","孙女"],"甥$":["甥男","甥女"],"侄$":["侄男","侄女"],"外甥$":["甥"],"嫂$":["兄妇"]};f.length;){var w=f.shift(),h=[],l=[w];for(var e in m){var r=w.replace(e,m[e]),t=w.replace(m[e],e);r!=w&&l.push(r),t!=w&&l.push(t)}var n=function(s){for(var f in b){var x=b[f];x.forEach(function(x){var d=s.replace(new RegExp(f),x);d!=s&&(l.push(d),n(d))})}};l.forEach(n);for(var a in o){var $=o[a];$.indexOf(w)>-1&&h.push(a)}if(!h.length)for(var a in o){var $=o[a];l.forEach(function(s){$.indexOf(s)>-1&&h.push(a)})}h.length||(d=!1);var c=[];x.length||(x=[""]),x.forEach(function(s){h.forEach(function(f){c.push(s+(f?","+f:""))})}),x=c}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 h=!0;do{b=s;for(var o in w){var l=w[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]);h=!1;break}}}while(b!=s);if(h){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(),w=m.split(",").reverse(),h=[],o=0;o<b.length;o++)h.push(x[b[o]][w[o]]);var l=0,e={f:1,m:1,s:-1,d:-1};return h.forEach(function(s){l+=e[s]||0}),h.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){if(m<0){var b=-1,w=-1;if(s.match(/^,w/)||s.match(/^,1/)?w=1:(s.match(/^,h/)||s.match(/^,0/))&&(w=0),x.match(/^,w/)||x.match(/^,1/)?b=1:(x.match(/^,h/)||x.match(/^,0/))&&(b=0),w==-1&&b>-1)m=b;else if(w>-1&&b==-1)m=w;else{if(w!=b)return!1;m=w}}var h=m,o=f(s,m),l=f(x,m),r=[];if(x){var t=!1,n=!1;l.forEach(function(s){s.match(/([fhs1](&[ol])?|[olx]b)$/)&&(t=!0),s.match(/([mwd0](&[ol])?|[olx]s)$/)&&(n=!0),r=r.concat(d(s,m))}),r=e(r),t&&n?h=-1:t?h=1:n&&(h=0)}else r=[""];var a=o.length>1?"["+o.join("|")+"]":o[0],$=r.length>1?"["+r.join("|")+"]":r[0];return{selector:(x?","+$:"")+(s?","+a:""),sex:h}}var w=[{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,lbLine truncated
|
||||
"m,f,f,xb,d,s":["堂姑表舅父","从父姑表舅父"],"m,f,f,xb,d,s,w":["堂姑表舅母","从父姑表舅母"],"m,f,f,xb,d,d":["堂姑表姨母","从父姑表姨母"],"m,f,f,xb,d,d,h":["堂姑表姨父","从父姑表姨父"],"m,f,f,xs":["姑外曾祖母","外曾姑祖母","姑外太婆","姑外太奶","姑外太姆","姑外太奶奶","外太姑婆"],"m,f,f,xs,h":["姑外曾祖父","外曾姑祖父","姑外曾祖","姑外太公","姑外太爷","姑外太翁","姑外太爷爷","外太姑公"],"m,f,f,xs,s&o":["姑表伯外祖父","外表伯祖父","外表伯公"],"m,f,f,xs,s&o,w":["姑表伯外祖母","外表伯祖母","外表伯婆"],"m,f,f,xs,s&l":["姑表叔外祖父","外表叔祖父","外表叔公"],"m,f,f,xs,s&l,w":["姑表叔外祖母","外表叔祖母","外表叔婆"],"m,f,f,xs,s,s":["姑表叔表舅父"],"m,f,f,xs,s,s,w":["姑表叔表舅母"],"m,f,f,xs,s,d":["姑表叔表姨母"],"m,f,f,xs,s,d,h":["姑表叔表姨父"],"m,f,f,xs,d":["姑表姑外祖母","外表姑祖母","外表姑婆"],"m,f,f,xs,d,h":["姑表姑外祖父","外表姑祖父","外表姑公"],"m,f,f,xs,d,s":["姑表姑表舅父"],"m,f,f,xs,d,s,w":["姑表姑表舅母"],"m,f,f,xs,d,d":["姑表姑表姨母"],"m,f,f,xs,d,d,h":["姑表姑表姨父"],"m,f,m":["外曾祖母","曾外毑母","外太婆","外太奶","外太姆","外太奶奶"],"m,f,m,f":["外高外祖父","曾外曾祖毑父"],"m,f,m,m":["外高外祖母","曾外曾祖毑母"],"m,f,m,xb":["舅外曾祖父","外曾舅祖父","舅外太公","舅外太爷","舅外太翁","舅外太爷爷","外太舅公"],"m,f,m,xb,w":["舅外曾祖母","外曾舅祖母","舅外太婆","舅外太奶","舅外太姆","舅外太奶奶","外太舅婆"],"m,f,m,xb,s&o":["舅表伯外祖父","外表伯祖父","外表伯公"],"m,f,m,xb,s&o,w":["舅表伯外祖母","外表伯祖母","外表伯婆"],"m,f,m,xb,s&l":["舅表叔外祖父","外表叔祖父","外表叔公"],"m,f,m,xb,s&l,w":["舅表叔外祖母","外表叔祖母","外表叔婆"],"m,f,m,xb,s,s":["舅表叔表舅父"],"m,f,m,xb,s,s,w":["舅表叔表舅母"],"m,f,m,xb,s,d":["舅表叔表姨母"],"m,f,m,xb,s,d,h":["舅表叔表姨父"],"m,f,m,xb,d":["舅表姑外祖母","外表姑祖母","外表姑婆"],"m,f,m,xb,d,h":["舅表姑外祖父","外表姑祖父","外表姑公"],"m,f,m,xb,d,s":["舅表姑表舅父"],"m,f,m,xb,d,s,w":["舅表姑表舅母"],"m,f,m,xb,d,d":["舅表姑表姨母"],"m,f,m,xb,d,d,h":["舅表姑表姨父"],"m,f,m,xs":["姨外曾祖母","外曾姨祖母","姨外太婆","姨外太奶","姨外太姆","姨外太奶奶","外太姨婆"],"m,f,m,xs,h":["姨外曾祖父","外曾姨祖父","姨外太公","姨外太爷","姨外太翁","姨外太爷爷","外太姨公"],"m,f,m,xs,s&o":["从母伯外祖父"],"m,f,m,xs,s&o,w":["从母伯外祖母"],"m,f,m,xs,s&l":["从母叔外祖父"],"m,f,m,xs,s&l,w":["从母叔外祖父"],"m,f,m,xs,s,s":["从母叔表舅父"],"m,f,m,xs,s,s,w":["从母叔表舅母"],"m,f,m,xs,s,d":["从母叔表姨母"],"m,f,m,xs,s,d,h":["从母叔表姨父"],"m,f,m,xs,d":["从母姑外祖母"],"m,f,m,xs,d,h":["从母姑外祖父"],"m,f,m,xs,d,s":["从母姑表舅父"],"m,f,m,xs,d,s,w":["从母姑表舅母"],"m,f,m,xs,d,d":["从母姑表姨母"],"m,f,m,xs,d,d,h":["从母姑表姨父"],"m,f,ob":["外伯公","伯外祖父","外伯祖父","伯姥爷","外伯祖","伯外祖","大外公","大姥爷","大外爷"],"m,f,ob,w":["外伯婆","伯外祖母","外伯祖母","伯姥姥","外姆婆","大外婆","大姥姥","大姥奶"],"m,f,lb":["外叔公","叔外祖父","外叔祖父","叔姥爷","外叔祖","叔外祖","小外公","小姥爷","小外爷"],"m,f,lb,w":["外叔婆","叔外祖母","外叔祖母","叔姥姥","外婶婆","小外婆","小姥姥","小姥奶"],"m,f,xb":["x外公","x姥爷","x外爷"],"m,f,xb,w":["x外婆","x姥姥","x姥奶","x外奶","x姥"],"m,f,xb,s":["堂舅","堂舅爸","堂舅父","堂舅舅","从父舅父","叔伯舅父","叔伯舅"],"m,f,xb,s,w":["堂舅妈","堂舅母","从父舅母","叔伯舅母"],"m,f,xb,s,s&o":["堂舅表哥","从父舅表哥"],"m,f,xb,s,s&o,w":["堂舅表嫂","从父舅表嫂"],"m,f,xb,s,s&l":["堂舅表弟","从父舅表弟"],"m,f,xb,s,s&l,w":["堂舅表弟媳","从父舅表弟媳"],"m,f,xb,s,s,s":["堂舅表侄男","从父舅表侄男"],"m,f,xb,s,s,s,w":["堂舅表侄妇","从父舅表侄妇"],"m,f,xb,s,s,d":["堂舅表侄女","从父舅表侄女"],"m,f,xb,s,s,d,h":["堂舅表侄婿","从父舅表侄婿"],"m,f,xb,s,d&o":["堂舅表姐","从父舅表姐"],"m,f,xb,s,d&o,h":["堂舅表姐夫","从父舅表姐夫"],"m,f,xb,s,d&l":["堂舅表妹","从父舅表妹"],"m,f,xb,s,d&l,h":["堂舅表妹夫","从父舅表妹夫"],"m,f,xb,s,d,s":["堂舅表甥男","从父舅表甥男"],"m,f,xb,s,d,s,w":["堂舅表甥妇","从父舅表甥妇"],"m,f,xb,s,d,d":["堂舅表甥女","从父舅表甥女"],"m,f,xb,s,d,d,h":["堂舅表甥婿","从父舅表甥婿"],"m,f,xb,d":["堂姨","堂姨妈","堂姨母","堂阿姨","从父姨母","叔伯姨母","叔伯姨"],"m,f,xb,d,h":["堂姨丈","堂姨爸","Line truncated
|
||||
"w,f,m,xs,s,d&o":["姨表叔表大姨子","姨表叔表大姨姐"],"w,f,m,xs,s,d&o,h":["姨表叔表大姨夫","姨表叔表大姨姐夫"],"w,f,m,xs,s,d&l":["姨表叔表小姨子","姨表叔表小姨妹"],"w,f,m,xs,s,d&l,h":["姨表叔表小姨夫","姨表叔表小姨妹夫"],"w,f,m,xs,d":["姨表姑岳母","岳姨表姑母","姨表姑丈母","丈人姨表姑母","丈人姨表姑"],"w,f,m,xs,d,h":["姨表姑岳父","岳姨表姑父","姨表姑丈人","丈人姨表姑父","丈人姨表亘"],"w,f,m,xs,d,s&o":["姨表姑表大舅子","姨表姑表大舅兄"],"w,f,m,xs,d,s&o,w":["姨表姑表大舅妇","姨表姑表大舅兄妇"],"w,f,m,xs,d,s&l":["姨表姑表小舅子","姨表姑表小舅弟"],"w,f,m,xs,d,s&l,w":["姨表姑表小舅妇","姨表姑表小舅弟妇"],"w,f,m,xs,d,d&o":["姨表姑表大姨子","姨表姑表大姨姐"],"w,f,m,xs,d,d&o,h":["姨表姑表大姨夫","姨表姑表大姨姐夫"],"w,f,m,xs,d,d&l":["姨表姑表小姨子","姨表姑表小姨妹"],"w,f,m,xs,d,d&l,h":["姨表姑表小姨夫","姨表姑表小姨妹夫"],"w,f,ob":["伯岳父","伯岳","岳伯父","伯丈人","丈人伯父","丈人伯","丈人爸"],"w,f,ob,w":["伯岳母","岳伯母","伯丈母","伯丈母娘","丈人伯母","丈人伯妈","丈人伯姆"],"w,f,lb":["叔岳父","叔岳","岳叔父","叔丈人","丈人叔父","丈人叔爸","丈人叔"],"w,f,lb,w":["叔岳母","岳叔母","叔丈母","叔丈母娘","丈人叔母","丈人叔妈","丈人婶"],"w,f,xb,s&o":["堂大舅子","堂大舅兄","从父大舅兄","内堂兄","堂内兄","岳堂兄","堂舅兄","丈人堂兄"],"w,f,xb,s&o,w":["堂大舅妇","堂大舅兄妇","从父大舅兄妇","内堂兄妇","岳堂兄妇","堂舅兄妇","丈人堂兄妇","堂大舅姐","堂大妗子","堂舅姊"],"w,f,xb,s&l":["堂小舅子","堂小舅弟","从父小舅弟","内堂弟","堂内弟","岳堂弟","堂舅弟","丈人堂弟"],"w,f,xb,s&l,w":["堂小舅妇","堂小舅弟妇","从父小舅弟妇","内堂弟妇","岳堂弟妇","堂舅弟妇","丈人堂弟妇","堂小舅妹","堂小妗子","堂舅妹"],"w,f,xb,d&o":["堂大姨子","堂大姨姐","内堂姨姐","从父大姨姐","内堂姐","堂内姐","岳堂姐","堂姨姐","丈人堂姐"],"w,f,xb,d&o,h":["堂大姨夫","堂大姨姐夫","堂襟兄","内堂姐夫","岳堂姐夫","堂姨兄","丈人堂姐夫","堂大姨哥","堂大尹子"],"w,f,xb,d&l":["堂小姨子","堂小姨妹","内堂姨妹","从父小姨妹","内堂妹","堂内妹","岳堂妹","堂姨妹","丈人堂妹"],"w,f,xb,d&l,h":["堂小姨夫","堂小姨妹夫","堂襟弟","内堂妹夫","岳堂妹夫","堂姨弟","丈人堂妹夫","堂小姨弟","堂小尹子"],"w,f,xs":["姑岳母","内姑母","岳姑母","姑丈母","姑丈母娘","丈人姑母","丈人姑妈","丈人姑"],"w,f,xs,h":["姑岳父","内姑父","岳姑父","姑丈人","姑丈人爹","丈人姑父","丈人姑爸","丈人亘"],"w,f,xs,s&o":["姑表大舅子","姑表大舅兄","内姑表兄","姑表内兄","岳姑表兄","姑表舅兄","丈人堂姑表兄"],"w,f,xs,s&o,w":["姑表大舅妇","姑表大舅兄妇","内姑表兄妇","岳姑表兄妇","姑表舅兄妇","丈人姑表兄妇","姑表大舅姐","姑表大妗子","姑表舅姊"],"w,f,xs,s&l":["姑表小舅子","姑表小舅弟","内姑表弟","姑表内弟","岳姑表弟","姑表舅弟","丈人姑表弟"],"w,f,xs,s&l,w":["姑表小舅妇","姑表小舅弟妇","内姑表弟妇","岳姑表弟妇","姑表舅弟妇","丈人姑表弟妇","姑表小舅妹","姑表小妗子","姑表舅妹"],"w,f,xs,d&o":["姑表大姨子","姑表大姨姐","内姑表姨姐","内姑表姐","姑表内姐","岳姑表姐","姑表姨姐","丈人姑表姐"],"w,f,xs,d&o,h":["姑表大姨夫","姑表大姨姐夫","姑表襟兄","内姑表姐夫","岳姑表姐夫","姑表姨兄","丈人姑表姐夫","姑表大姨哥","姑表大尹子"],"w,f,xs,d&l":["姑表小姨子","姑表小姨妹","内姑表姨妹","内姑表妹","姑表内妹","岳姑表妹","姑表姨妹","丈人姑表妹"],"w,f,xs,d&l,h":["姑表小姨夫","姑表小姨妹夫","姑表襟弟","内姑表妹夫","岳姑表妹夫","姑表姨弟","丈人姑表妹夫","姑表小姨弟","姑表小尹子"],"w,m":["岳母","丈母娘","老丈母","丈人娘","丈母","内母","外母","妻母","泰水","外姑"],"w,m,f":["外祖岳父","岳外祖父","外祖丈人","丈人外祖父","外太岳父","姥岳父","姥丈人","丈人姥爷","姥爷丈人"],"w,m,f,f":["外曾祖岳父","岳外曾祖父","外曾祖丈人","丈人外曾祖","丈人太奶爷","丈人祖奶爷","丈人太姥爷","丈人祖姥爷","祖奶爷丈人","太奶爷丈人","祖姥爷丈人","太姥爷丈人"],"w,m,f,m":["外曾祖岳母","岳外曾祖母","外曾祖丈母","丈人太姥姥","丈人太奶奶","丈人祖姥姥","丈人祖奶奶","祖奶丈母娘","太奶丈母娘","祖姥丈母娘","太姥丈母娘"],"w,m,f,ob":["伯外祖岳父","岳伯外祖父","伯外祖丈人","丈人伯外祖父","丈人伯姥爷","伯姥爷丈人"],"w,m,f,ob,w":["伯外祖岳Line truncated
|
||||
!function(s,f){"object"==typeof module&&module.exports?module.exports=f():s.relationship=f()}("undefined"!=typeof window?window:this,function(){function s(s){for(var f,x=[],m={},d=0;null!=(f=s[d]);d++){var b=f.replace(/[ol](?=s|b)/,"x").replace(/&[ol]/,"");b!=f||m[b]||(m[f]=!0)}for(var d=0;null!=(f=s[d]);d++){var b=f.replace(/[ol](?=s|b)/,"x").replace(/&[ol]/,"");b!=f?m[b]||x.indexOf(f)==-1&&x.push(f):x.indexOf(f)==-1&&x.push(f)}return x}function f(s){s=s.replace(/[二|三|四|五|六|七|八|九|十]{1,2}/g,"x"),s=s.replace(/之/,"的").replace(/我的?(.+)/,"$1"),s.match(/[^娘婆亲]家的?/)&&(s=s.replace(/家的?/,"的"));for(var f=s.split("的"),x=[],m=!0,d={"哥":"兄","姐":"姊","侄":"姪","祖父":"王父","祖母":"王母","孙女婿":"孙婿","甥女婿":"甥婿","侄女婿":"侄婿","弟媳":"弟妇","孙媳妇":"孙妇","甥媳妇":"甥妇","侄媳妇":"侄妇"},b={"^表":["姑表","舅表"],"^姻":["姑姻","姨姻","姊妹姻","女姻"],"^眷":["叔眷","舅眷","兄弟眷","男眷"],"^外甥":["甥"],"^外表伯":["姑表伯外","舅表伯外"],"^外表叔":["姑表叔外","舅表叔外"],"^外表姑":["姑表姑外","舅表姑外"],"^外表舅":["姑表舅外","舅表舅外"],"^外表姨":["姑表姨外","舅表姨外"],"祖$":["祖父","祖母"],"孙$":["孙男","孙女"],"甥$":["甥男","甥女"],"侄$":["侄男","侄女"],"外甥$":["甥"],"嫂$":["兄妇"]};f.length;){var h=f.shift(),o=[],w=[h];for(var M in d){var l=h.replace(M,d[M]),r=h.replace(d[M],M);l!=h&&w.push(l),r!=h&&w.push(r)}var e=function(s){for(var f in b){var x=b[f];x.forEach(function(x){var m=s.replace(new RegExp(f),x);m!=s&&(w.push(m),e(m))})}};w.forEach(e);for(var t in G){var a=G[t];a.indexOf(h)>-1&&o.push(t)}if(!o.length)for(var t in G){var a=G[t];w.forEach(function(s){a.indexOf(s)>-1&&o.push(t)})}o.length||(m=!1);var n=[];x.length||(x=[""]),x.forEach(function(s){o.forEach(function(f){n.push(s+(f?","+f:""))})}),x=n}return m?x:[]}function x(f,x){var m=[],d={};x<0&&(f.match(/^,w/)?x=1:f.match(/^,h/)&&(x=0));var b=function(s,f){if(s.indexOf(",1")==-1&&s.indexOf(",0")==-1&&(s=","+f+s),s.match(/,[w0],w|,[h1],h/))return!1;var x="";if(!d[s]){d[s]=!0;var h=!0;do{x=s;for(var w in o){var M=o[w];if(s=s.replace(M.exp,M.str),s.indexOf("#")>-1){for(var l=s.split("#"),r=0;r<l.length;r++)b(l[r]);h=!1;break}}}while(x!=s);if(h){if(s.match(/,[w0],w|,[h1],h/))return!1;s=s.replace(/,[01]/,"").substr(1),m.push(s)}}};return x<0?(b(f,1),b(f,0)):b(f,x),s(m)}function m(s){var f=[],x=function(s){var f=[];for(var x in G)if(x.replace(/&[ol]/g,"")==s)f.push(G[x][0]);else for(var m=s;m.match(/[ol](b|s)/);)if(m=m.replace(/[ol](b|s)/,"x$1"),m==x){f.push(G[x][0]);break}return f};if(G[s])f.push(G[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 m=s.replace(/x/g,"l");f=x(m);var d=s.replace(/x/g,"o");f=f.concat(x(d))}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"]},m="";if(s.match(/&o$/)?m="&l":s.match(/&l$/)&&(m="&o"),s){s=s.replace(/&[ol]/g,""),f<0&&(s.match(/^w/)?f=1:s.match(/^h/)&&(f=0));var d=[],b=function(f){var d=(","+f+","+s).replace(/,[fhs]|,[olx]b/g,",1").replace(/,[mwd]|,[olx]s/g,",0");d=d.substring(0,d.lastIndexOf(","));for(var b=s.split(",").reverse(),h=d.split(",").reverse(),o=[],w=0;w<b.length;w++)o.push(x[b[w]][h[w]]);var M=0,l={f:1,m:1,s:-1,d:-1};return o.forEach(function(s){M+=l[s]||0}),o.join(",")+(M?"":m)};return f<0?(d.push(b(1)),d.push(b(0))):d.push(b(f)),d}return[""]}function b(s){var f=s.split(",");return f.map(function(s){var f=s.replace(/&[ol]/,"");return G[f][0]}).join("的")}function h(f,m,b){if(b<0){var h=-1,o=-1;if(f.match(/^,w/)||f.match(/^,1/)?o=1:(f.match(/^,h/)||f.match(/^,0/))&&(o=0),m.match(/^,w/)||m.match(/^,1/)?h=1:(m.match(/^,h/)||m.match(/^,0/))&&(h=0),o==-1&&h>-1)b=h;else if(o>-1&&h==-1)b=o;else{if(o!=h)return!1;b=o}}var w=b,M=x(f,b),l=x(m,b),r=[];if(m){var e=!1,G=!1;l.forEach(function(s){s.match(/([fhs1](&[ol])?|[olx]b)$/)&&(e=!0),s.match(/([mwd0](&[ol])?|[olx]s)$/)&&(G=!0),r=r.concat(d(s,b))}),r=s(r),e&&G?w=-1:e?w=1:G&&(w=0)}else r=[""];var t=M.length>1?"["+M.join("|")+"]":M[0],a=r.length>1?"["+r.join("|")+"]":r[0];return{selector:(m?","+a:"")+(f?","+t:""),sex:w}}var o=[{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([sLine truncated
|
||||
"{M-1},f,lb":["叔弟"],"{M-1},f,lb,w":["叔弟妇"],"{M-1},f,xb,s":["叔男"],"{M-1},f,xb,d":["叔女"],"{M-1},f,os":["姑姊"],"{M-1},f,os,h":["姑姊婿"],"{M-1},f,ls":["姑妹"],"{M-1},f,ls,h":["姑妹婿"],"{M-1},f,xs,s":["姑男"],"{M-1},f,xs,d":["姑女"],"{M-1},m&o":["姊"],"{M-1},m&l":["妹"],"{M-1},m,f":["父"],"{M-1},m,f,f":["祖父"],"{M-1},m,f,m":["祖母"],"{M-1},m,m":["母"],"{M-1},m,m,f":["外祖父"],"{M-1},m,m,m":["外祖母"],"{M-1},m,ob":["舅兄"],"{M-1},m,ob,w":["舅兄妇"],"{M-1},m,lb":["舅弟"],"{M-1},m,lb,w":["舅弟妇"],"{M-1},m,xb,s":["舅男"],"{M-1},m,xb,d":["舅女"],"{M-1},m,os":["姨姊"],"{M-1},m,os,h":["姨姊婿"],"{M-1},m,ls":["姨妹"],"{M-1},m,ls,h":["姨妹婿"],"{M-1},m,xs,s":["姨男"],"{M-1},m,xs,d":["姨女"],"{M-1},xb":["男"],"{M-1},xb,w":["妇"],"{M-1},xb,s":["孙男"],"{M-1},xb,s,w":["孙妇"],"{M-1},xb,d":["孙女"],"{M-1},xb,d,h":["孙婿"],"{M-1},xs":["女"],"{M-1},xs,h":["婿"],"{M-1},xs,s":["外孙男"],"{M-1},xs,s,w":["外孙妇"],"{M-1},xs,d":["外孙女"],"{M-1},xs,d,h":["外孙婿"],"{M-2},f":["男"],"{M-2},f,f&o":["兄"],"{M-2},f,f&l":["弟"],"{M-2},f,m&o":["姊"],"{M-2},f,m&l":["妹"],"{M-2},m":["女"],"{M-2},m,f&o":["兄"],"{M-2},m,f&l":["弟"],"{M-2},m,m&o":["姊"],"{M-2},m,m&l":["妹"],"{M-2},xb":["孙男"],"{M-2},xb,w":["孙妇"],"{M-2},xs":["孙女"],"{M-2},xs,h":["孙婿"]},r={},e={},G={};for(var t in l){var a=t.match(/\{.+?\}/)[0],n=l[t];for(var c in M[a]){var p=M[a][c],i=t.replace(a,c),$=!1;["h,h","w,w","w,h","h,w"].forEach(function(s){i.indexOf(s)>-1&&($=!0)});var u=[];$||(p.forEach(function(s){n.forEach(function(f){f.indexOf("?")>-1?u.push(f.replace("?",s)):u.push(s+f)})}),r[i]=[].concat(r[i]||[],u))}}for(var t in w)r[t]=[].concat(w[t],r[t]||[]);var v={w:["内","岳","妻","丈人"],h:["外","夫"]};for(var t in r)if(0==t.indexOf("f")||0==t.indexOf("m"))for(var c in v){var i=c+","+t;r[i]||(r[i]=[]);var p=v[c],n=r[t];p.forEach(function(s){n.forEach(function(f){r[i].push(s+f)})})}G=Object.assign({},r);var W=function(o){var w=Object.assign({text:"",target:"",sex:-1,type:"default",reverse:!1,mode:"default"},o);G=Object.assign({},r);for(var M in e)if(w.mode==M)for(var l in e[M])G[l]=[].concat(e[M][l],r[l]||[]);var t=f(w.text),a=f(w.target);a.length||(a=[""]);var n=[];return t.forEach(function(s){a.forEach(function(f){var o=h(s,f,w.sex),M=o?x(o.selector,o.sex):null;M&&M.forEach(function(s){var f=[s];"chain"==w.type?(w.reverse&&(f=d(s,o.sex)),f.forEach(function(s){var f=b(s);f&&n.push(f)})):(w.reverse&&(f=d(s,o.sex)),f.forEach(function(s){var f=m(o.sex+","+s);f.length||(f=m(s)),f.length&&(n=n.concat(f))}))})})}),s(n)};W.dataCount=0;for(var g in G)W.dataCount++;return W.setMode=function(s,f){"undefined"==typeof e[s]&&(e[s]={}),e[s]=Object.assign(e[s],f)},W});
|
||||
+755
-2463
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user