/*! * relationship - Chinese kinship library * https://passer-by.com/relationship/ * * Copyright (c) 2016-present, HaoLe Zheng * Released under the MIT License. * https://github.com/mumuy/relationship/blob/master/LICENSE */ !function (root, factory) { if (typeof module === 'object' && module.exports){ module.exports = factory(); }else{ root.relationship = factory(); } }(this,function (){ /* * 关系数据语法说明: * 【关系符】 f:父; m:母; h:夫; w:妻; s:子; d:女; xb:兄弟; ob:兄; lb:弟; xs:姐妹; os:姐; ls:妹 * 【修饰符】 1:男性; 0:女性; &o:年长; &l:年幼; #:隔断; [a|b]:并列 */ // 关系链缩写规则 var _filter = [ /* 年龄 */ {//有大有小,增加不确定性 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:',xb$1#$1' }, {//不知道性别,兄弟姐妹的姐妹是姐妹或自己 exp:/^,[olx][sb],[olx]s(.+)?$/, str:',xs$1#$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:',xb$1#,1$1' }, {//父母的女儿是姐妹或者自己 exp:/^,[mf],d(.+)?$/, str:',xs$1#,0$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:',w$1#$1' }, {//不知道性别,子女的爸爸是丈夫或自己 exp:/^,[ds],f(.+)?$/, str:',h$1#$1' }, {//夫妻的孩子就是自己的孩子 exp:/,[wh](,[ds])/g, str:'$1' }, {//夫妻的对方是自己 exp:/,w,h|,h,w/g, str:'' }, {//并列关系处理1 X[A|B|C]Y = XAY#X[B|C]Y exp:/(.+)?\[([^\|]+?)\|([^\[\]]*\|[^\[\]]*)\](.+)?/g, str:'$1$2$4#$1[$3]$4' }, {//并列关系处理2 X[A|B]Y = XAY#XBY exp:/(.+)?\[([^\[\]\|]+?)\|([^\[\]\|]+?)?\](.+)?/g, str:'$1$2$4#$1$3$4' } ]; // 主要关系链 var _main = { '':['自己','我','俺','本人','在下'], //并称 '[f,f|f,m|m,f],[f,m],f':['老太奶爷','祖太奶爷'], '[f,f|f,m|m,f],[f,m],m':['老太奶奶','祖太奶奶'], '[f,m|m,f|m,m],[f,m],f':['老太姥爷','祖太姥爷'], '[f,m|m,f|m,m],[f,m],m':['老太姥姥','祖太姥姥'], '[f|m],[f|m],f':['太老爷'], '[f|m],[f|m],f,ob':['伯太老爷'], '[f|m],[f|m],f,ob,w':['伯太老姥'], '[f|m],[f|m],f,lb':['叔太老爷'], '[f|m],[f|m],f,lb,w':['叔太老姥'], '[f|m],[f|m],f,xs':['姑太老姥'], '[f|m],[f|m],f,xs,h':['姑太老爷'], '[f|m],[f|m],m':['太老姥'], '[f|m],[f|m],m,xb':['舅太老爷'], '[f|m],[f|m],m,xb,w':['舅太老姥'], '[f|m],[f|m],m,xs':['姨太老姥'], '[f|m],[f|m],m,xs,h':['姨太老爷'], '[f,f|f,m|m,f],f':['太奶爷','祖奶爷'], '[f,f|f,m|m,f],f,ob':['伯太奶爷','太伯奶爷'], '[f,f|f,m|m,f],f,ob,w':['伯太奶奶','太伯奶奶'], '[f,f|f,m|m,f],f,lb':['叔太奶爷','太叔奶爷'], '[f,f|f,m|m,f],f,lb,w':['叔太奶奶','太叔奶奶'], '[f,f|f,m|m,f],f,xs':['姑太奶奶','太姑奶奶'], '[f,f|f,m|m,f],f,xs,h':['姑太奶爷','太姑奶爷'], '[f,f|f,m|m,f],m':['太奶奶','祖奶奶'], '[f,f|f,m|m,f],m,xb':['舅太奶爷','太舅奶爷'], '[f,f|f,m|m,f],m,xb,w':['舅太奶奶','太舅奶奶'], '[f,f|f,m|m,f],m,xs':['姨太奶奶','太姨奶奶'], '[f,f|f,m|m,f],m,xs,h':['姨太奶爷','太姨奶爷'], '[f,m|m,f|m,m],f':['太姥爷','祖姥爷','太毑爷'], '[f,m|m,f|m,m],f,ob':['伯太姥爷','伯叔姥爷'], '[f,m|m,f|m,m],f,ob,w':['伯太姥姥','太伯姥姥'], '[f,m|m,f|m,m],f,lb':['叔太姥爷','太叔姥爷'], '[f,m|m,f|m,m],f,lb,w':['叔太姥姥','太叔姥姥'], '[f,m|m,f|m,m],f,xs':['姑太姥姥','太姑姥姥'], '[f,m|m,f|m,m],f,xs,h':['姑太姥爷','太姑姥爷'], '[f,m|m,f|m,m],m':['太姥姥','祖姥姥','太毑毑'], '[f,m|m,f|m,m],m,xb':['舅太姥爷','太舅姥爷'], '[f,m|m,f|m,m],m,xb,w':['舅太姥姥','太舅姥姥'], '[f,m|m,f|m,m],m,xs':['姨太姥姥','太姨姥姥'], '[f,m|m,f|m,m],m,xs,h':['姨太姥爷','太姨姥爷'], '[f,m][f,m]':['祖辈'], '[f|m],f':['老爷'], '[f|m],f,ob':['伯老爷'], '[f|m],f,ob,w':['伯老姥'], '[f|m],f,lb':['叔老爷'], '[f|m],f,lb,w':['叔老姥'], '[f|m],f,xs':['姑老姥'], '[f|m],f,xs,h':['姑老爷'], '[f|m],m':['老姥'], '[f|m],m,xb':['舅老爷'], '[f|m],m,xb,w':['舅老姥'], '[f|m],m,xs':['姨老姥'], '[f|m],m,xs,h':['姨老爷'], 'f,[f|m]':['祖父母','爷爷奶奶'], 'm,[f|m]':['外祖父母','外公外婆','姥姥姥爷'], '[f|m]':['父母','爹娘','爹妈','爸妈','爸爸妈妈','父母亲','双亲','二亲','两亲','二老','高堂'], 'f,f,[f,xs|m,xb],s':['舅姑爷爷','舅姑爷'], 'm,f,[f,xs|m,xb],s':['舅姑姥爷'], '[f|m],[f,xs|m,xb],s':['舅姑爸','姑舅爸'], '[f|m],[f,xs|m,xb],s&o,w':['舅姑姆','姑舅姆'], '[f|m],[f,xs|m,xb],s&l,w':['舅姑婶','姑舅婶'], '[f|m],[f,xs|m,xb],d':['姑舅娘娘'], '[f|m],m,xs,s':['两姨爸'], '[f|m],m,xs,s&o,w':['两姨姆'], '[f|m],m,xs,s&l,w':['两姨婶'], '[f|m],m,xs,d':['两姨娘娘'], 'f,[ob|ob,w]':['伯父母'], 'f,[lb|lb,w]':['叔父母'], 'f,[xs|xs,h]':['姑父母'], 'm,[xb|xb,w]':['舅父母'], 'm,[xs|xs,h]':['姨父母'], 'w,[f|m]':['岳父母','岳父岳母','丈人丈母','舅姑'], 'w,f,[ob|ob,w]':['伯岳父母'], 'w,f,[lb|lb,w]':['叔岳父母'], 'w,f,[xs|xs,h]':['姑岳父母'], 'w,m,[xb|xb,w]':['舅岳父母'], 'w,m,[xs|xs,h]':['姨岳父母'], 'w,[ls|os],h':['襟兄弟'], 'h,[f|m]':['公婆','翁姑','大家官','公公婆婆','姑嫜'], 'h,f,[ob|ob,w]':['伯公婆'], 'h,f,[lb|lb,w]':['叔公婆'], 'h,f,[xs|xs,h]':['姑公婆'], 'h,m,[xb|xb,w]':['舅公婆'], 'h,m,[xs|xs,h]':['姨公婆'], '[ob|lb]':['兄弟','晜弟','亲兄弟','同胞兄弟'], '[ob|lb],w':['兄弟媳妇','兄弟妇'], '[os|ls]':['姐妹','亲姐妹','同胞姐妹'], '[os|ls],h':['姐妹夫','姊妹婿'], '[xb|xs]':['兄弟姐妹','同胞','同胞兄弟姐妹','手足'], '[ob|os]':['哥哥姐姐'], '[lb|ls]':['弟弟妹妹'], '[ob|ob,w]':['哥哥嫂嫂'], '[f,xb|m,xs],[s|d]':['从兄弟姐妹','从姐妹兄弟'], '[f,xs|m,xb],[s|d]':['表兄弟姐妹','表姐妹兄弟','老表','阿表'], 'f,xb,[s|d]':['堂兄弟姐妹','堂姐妹兄弟','从父兄弟姐妹'], 'm,xs,[s|d]':['姨兄弟姐妹','姨姐妹兄弟','从母兄弟姐妹'], 'f,xs,[s|d]':['姑表兄弟姐妹'], 'm,xb,[s|d]':['舅表兄弟姐妹'], '[f,xs|m,xb],s':['姑舅兄弟','舅姑兄弟'], '[f,xs|m,xb],s&o':['姑舅哥','姑舅哥哥'], '[f,xs|m,xb],s&l':['姑舅弟','姑舅弟弟'], '[f,xs|m,xb],d':['姑舅姊妹','舅姑姊妹'], '[f,xs|m,xb],d&o':['姑舅姐','姑舅姐姐'], '[f,xs|m,xb],d&l':['姑舅妹','姑舅妹妹'], '[f,xs|m,xb],s,s':['姑舅儿子'], '[f,xs|m,xb],s,d':['姑舅女儿'], 'xb,[s|d]':['侄子女','侄子侄女'], 'xs,[s|d]':['甥子女','外甥子女'], '[w|s|d]':['妻儿'], '[s|d]':['子女','儿女','小孩','孩子','孩子们','孩儿','小孩儿','宝宝','宝贝','娃','儿辈','子辈','子息','子嗣','崽','幺儿'], '[s|d],[s|d]':['孙辈'], 's,[s|d]':['孙子女'], 'd,[s|d]':['外孙子女'], '[s|d]#[s|d],[s|d]':['儿孙','子孙','孙息'], '[s,w|d,h],[f|m]':['亲家','儿女亲家'], '[s,w|d,h],f':['亲家公','亲家父','亲家翁','亲家世翁','姻翁'], '[s,w|d,h],f,f':['太姻翁'], '[s,w|d,h],f,m':['太姻姆'], '[s,w|d,h],f,f,f':['太姻翁'], '[s,w|d,h],f,f,m':['太姻姆'], '[s,w|d,h],f,f,ob':['姻伯翁'], '[s,w|d,h],f,f,ob,w':['姻伯姆'], '[s,w|d,h],f,f,lb':['姻叔翁'], '[s,w|d,h],f,f,lb,w':['姻叔母'], '[s,w|d,h],f,f,xb,s&o':['姻家兄'], '[s,w|d,h],f,f,xb,s&o,w':['姻家兄妇'], '[s,w|d,h],f,f,xb,s&l':['姻家弟'], '[s,w|d,h],f,f,xb,s&l,w':['姻家弟妇'], '[s,w|d,h],f,f,xb,s,s':['姻家侄'], '[s,w|d,h],f,f,xb,s,s,w':['姻家侄妇'], '[s,w|d,h],f,ob':['姻兄'], '[s,w|d,h],f,ob,w':['姻兄妇'], '[s,w|d,h],f,lb':['姻弟'], '[s,w|d,h],f,lb,w':['姻弟妇'], '[s,w|d,h],f,xb,s':['姻侄'], '[s,w|d,h],f,xb,s,w':['姻侄妇'], '[s,w|d,h],m':['亲家母','亲家婆','亲家姆','亲姆','姻姆'], '[s,w|d,h],m,ob':['姻仁兄'], '[s,w|d,h],m,ob,w':['姻仁兄妇'], '[s,w|d,h],m,lb':['姻仁弟'], '[s,w|d,h],m,lb,w':['姻仁弟妇'], '[s,w|d,h],[f|m],f':['姻太翁'], '[s,w|d,h],[f|m],m':['姻太姆'], // 主线 'f,f,f,f,f,f,f,f,f':['鼻祖父','鼻太爷','始祖父','始太爷','九世祖'], 'f,f,f,f,f,f,f,f,m':['鼻祖母','鼻太奶','始祖母','始太奶'], 'f,f,f,f,f,f,f,f':['远祖父','远太爷','八世祖'], 'f,f,f,f,f,f,f,m':['远祖母','远太奶'], 'f,f,f,f,f,f,f':['太祖父','太太爷','七世祖'], 'f,f,f,f,f,f,m':['太祖母','太太奶'], 'f,f,f,f,f,f':['烈祖父','烈太爷','六世祖'], 'f,f,f,f,f,m':['烈祖母','烈太奶'], 'f,f,f,f,f':['天祖父','天太爷','五世祖'], 'f,f,f,f,m':['天祖母','天太奶'], // 高祖辈 'f,f,f,f':['高祖父','外曾外曾外毑父','祖太公','祖太爷','高太爷','祖太翁','祖太爷爷','四世祖'], 'f,f,f,m':['高祖母','外曾外曾外毑母','祖太婆','祖太奶','高太奶','祖太姆','祖太奶奶'], 'f,f,m,f':['高外祖父','外曾外曾毑父'], 'f,f,m,m':['高外祖母','外曾外曾毑母'], 'f,m,f,f':['曾外曾祖父','外高外毑父'], 'f,m,f,m':['曾外曾祖母','外高外毑母'], 'f,m,m,f':['曾外曾外祖父','外高毑父'], 'f,m,m,m':['曾外曾外祖母','外高毑母'], 'm,f,f,f':['外高祖父','曾外曾外毑父'], 'm,f,f,m':['外高祖母','曾外曾外毑母'], 'm,f,m,f':['外高外祖父','曾外曾祖毑父'], 'm,f,m,m':['外高外祖母','曾外曾祖毑母'], 'm,m,f,f':['外曾外曾祖父','高外毑父'], 'm,m,f,m':['外曾外曾祖母','高外毑母'], 'm,m,m,f':['外曾外曾外祖父','高毑父'], 'm,m,m,m':['外曾外曾外祖母','高毑母'], // 曾祖辈 'f,f,f':['曾祖父','外曾外毑父','太公','太爷','老太爷','祖爷','太翁','太爷爷','三世祖'], 'f,f,m':['曾祖母','外曾外毑母','太婆','太奶','老太奶','太嬷','太姆','太奶奶','老娭毑'], 'f,m,f':['曾外祖父','曾外祖','外曾毑父','太外公','太外爷','太外翁','太外爷爷'], 'f,m,m':['曾外祖母','外曾毑母','太外婆','太外奶','太外姆','太外奶奶'], 'm,f,f':['外曾祖父','外曾祖','曾外毑父','外太公','外太爷','外太翁','外太爷爷','老外公','老外爷','老姥爷'], 'm,f,m':['外曾祖母','曾外毑母','外太婆','外太奶','外太姆','外太奶奶'], 'm,m,f':['外曾外祖父','外曾外祖','曾毑父','外太外公','外太外爷','外太外翁','外太外爷爷','外太姥爷'], 'm,m,m':['外曾外祖母','曾毑母','外太外婆','外太外奶','外太外姆','外太外奶奶','老外婆','老外奶','老姥姥','老姥娘'], // 祖父辈 'f,f':['爷爷','祖父','奶爷','阿爷','阿公','嗲嗲','二世祖'], 'f,m':['奶奶','祖母','阿奶','阿姆','阿嬷','阿嫲','嫲嫲','婻婻','娭毑','嗯奶','娘姆','媪婆'], 'm,f':['外公','外祖父','姥爷','阿公','客公','外爷','舅家爷','姥公','毑父','毑爹','毑公','毑爷','嘎公','尕公'], 'm,m':['外婆','外祖母','姥姥','姥娘','姥婆','阿婆','阿嬷','阿嫲','嫲嫲','外奶','客婆','舅家婆','姥婆','毑母','毑婆','毑毑','嘎嘎','尕婆'], 'f,f,ob':['伯公','伯祖','伯翁','大爷爷','大爷','大公','大伯公','大阿爷'], 'f,f,ob,w':['伯婆','大奶奶','姆婆'], 'f,f,lb':['叔公','叔祖','叔翁','小爷爷','晚公'], 'f,f,lb,w':['叔婆','小奶奶','婶婆','晚婆'], 'f,f,xb':['堂祖父','x爷爷','x大爷','x爷','x公'], 'f,f,xb,w':['堂祖母','x奶奶','x大娘','x奶','x婆'], 'f,f,xs':['姑奶奶','祖姑'], 'f,f,xs,h':['姑爷爷','姑公公','祖姑丈','姑丈公','丈公'], 'f,m,xb':['舅爷爷','舅祖','舅爹','太舅父'], 'f,m,xb,w':['舅奶奶','妗婆','妗奶','太舅母'], 'f,m,xs':['姨奶奶','姨奶'], 'f,m,xs,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,xs':['姑外婆','姑婆'], 'm,f,xs,h':['姑外公','姑公','外姑丈公','外丈公'], 'm,m,xb':['舅外公','舅公'], 'm,m,xb,w':['舅外婆','舅婆','妗姥姥','妗姥娘','妗姥','外妗婆'], 'm,m,xs':['姨外婆','姨婆'], 'm,m,xs,h':['姨外公','姨公','外姨丈公','外丈公'], // 父辈 'f':['爸爸','父亲','老爸','阿爸','阿父','阿爹','老窦','老汉','老汉儿','老子','牙老子','牙老倌','爸比','爸','父','爹','爹爹','爹地','爹啲','老爹','老爷子','一世祖'], 'm':['妈妈','母亲','老妈','阿妈','阿母','阿毑','老母','老娘','老乸','老妈子','妈子','娘老子','姆嬷','姆妈','妈','母','娘','娘亲','妈咪'], 'f,ob':['伯父','伯伯','阿伯','大伯','大伯爷','大伯伯','大大','世父','大爹','大爷','大爸'], 'f,ob,w':['伯母','伯妈','伯娘','伯妇','阿娘','姆姆','姆','世母','大娘','大妈','大妈妈','大姆妈','大嬷'], 'f,lb':['叔叔','叔父','叔爸','叔爹','阿叔','叔儿','仲父','季父','叔仔','小叔','小爹','小爸','尕爸','幺爸','幺爹','幺叔','细叔','满叔','晚叔','叔'], 'f,lb,w':['婶婶','婶母','婶娘','婶妈','婶爹','叔妇','阿婶','仲母','季母','小婶','小娘','小妈','尕婶','幺婶','细婶','满婶','晚婆','婶子','婶儿','家婶','叔母','叔妈','叔娘','婶'], 'f,os':['大姑','大姑妈','姑姊'], 'f,ls':['小姑','小姑妈','姑姐','姑妹','姑仔','尕娘','幺姑','幺姑姐','老姑','细姑','满姑'], 'f,xs':['姑妈','姑母','姑姑','嬢嬢','娘娘','姑','阿姑'], 'f,xs,h':['姑丈','姑父','姑爸','姑爹','姑夫','姑婿','亘'], 'm,ob':['大舅','大舅舅','元舅'], 'm,ob,w':['大舅妈','大妗'], 'm,lb':['小舅','小舅舅','舅仔','舅父仔','幺舅','老舅','细舅','满舅','尕阿舅'], 'm,lb,w':['小舅妈','小妗','细妗'], 'm,xb':['舅舅','舅父','舅爸','舅爹','娘舅','母舅','舅','阿舅','妗公'], 'm,xb,w':['舅妈','舅母','舅媳妇','舅妇','妗','妗子','妗妗','妗妈','妗娘','妗母','阿妗','妗门','妗婆仔','妗儿妈'], 'm,os':['大姨','大姨妈'], 'm,os,h':['大姨父','大姨丈','大姨婿','大姨爸'], 'm,ls':['小姨','小姨妈','姨仔','幺姨','老姨','满姨','细姨','尕姨娘'], 'm,ls,h':['小姨父','小姨丈','小姨婿','小姨爹'], 'm,xs':['姨妈','姨母','姨姨','姨娘','阿姨','姨'], 'm,xs,h':['姨丈','姨父','姨爸','姨爹','姨夫','姨婿','姨郎','尹'], 'f,f,xb,s&o':['堂伯'], 'f,f,xb,s&o,w':['堂伯母'], 'f,f,xb,s&l':['堂叔'], 'f,f,xb,s&l,w':['堂婶'], 'f,f,xb,s':['堂叔伯'], 'f,f,xb,d':['堂姑'], 'f,f,xb,d,h':['堂姑丈'], 'm,f,xb,s':['堂舅'], 'm,f,xb,s,w':['堂舅妈'], 'm,f,xb,d':['堂姨'], 'm,f,xb,d,h':['堂姨丈'], // 同辈 'f,xb,s&o':['堂哥','堂阿哥'], 'f,xb,s&o,w':['堂嫂','堂兄嫂'], 'f,xb,s&l':['堂弟','堂阿弟'], 'f,xb,s&l,w':['堂弟媳','堂弟媳','堂弟妹'], 'f,xb,d&o':['堂姐','堂阿姐'], 'f,xb,d&o,h':['堂姐夫'], 'f,xb,d&l':['堂妹','堂阿妹'], 'f,xb,d&l,h':['堂妹夫'], // 婆家 'h,f,f,f':['曾祖公父','曾祖公','太公翁'], 'h,f,f,m':['曾祖婆母','曾祖婆','太奶亲'], 'h,f,m,f':['曾外祖公父','曾外祖公'], 'h,f,m,m':['曾外祖婆母','曾外祖婆'], 'h,m,f,f':['外曾祖公父','外曾祖公'], 'h,m,f,m':['外曾祖婆母','外曾祖婆'], 'h,m,m,f':['外曾外祖公父','外曾外祖公'], 'h,m,m,m':['外曾外祖婆母','外曾外祖婆'], 'h,f,f,f,ob':['伯曾祖公父','伯曾祖公','太伯翁'], 'h,f,f,f,ob,w':['伯曾祖婆母','伯曾祖婆','太姆婆'], 'h,f,f,f,lb':['叔曾祖公父','叔曾祖公','太叔翁'], 'h,f,f,f,lb,w':['叔曾祖婆母','叔曾祖婆','太婶婆'], 'h,f,f,f,xs':['姑曾祖婆母','姑曾祖婆'], 'h,f,f,f,xs,h':['姑曾祖公父','姑曾祖婆'], 'h,f,f':['祖公父','祖公','祖翁','奶公父'], 'h,f,m':['祖婆母','祖婆','奶婆母'], 'h,m,f':['外祖公父','外祖公','姥公父','姥公'], 'h,m,m':['外祖婆母','外祖婆','姥婆母','姥婆'], 'h,f':['公公','公父','家公','家官','翁亲','大官','老公公','老人公','公爹','老公爹','婆父','婆爹'], 'h,m':['婆婆','婆母','家婆','家娘','姑亲','大家','老婆婆','老人婆','婆妈','婆母娘','婆子妈'], 'h,f,ob':['伯公父','伯公','伯翁'], 'h,f,ob,w':['伯婆母','伯婆','姆婆','伯姆'], 'h,f,lb':['叔公父','叔公','叔翁','叔祖'], 'h,f,lb,w':['叔婆母','叔婆','婶婆','婶婆婆','婶亲'], 'h,m,xb':['舅公父','舅公',], 'h,m,xb,w':['舅婆母','舅婆','妗婆婆'], 'h,m,xs':['姨婆母','姨婆'], 'h,m,xs,h':['姨公父','姨公'], 'h':['老公','丈夫','先生','官人','男人','汉子','夫','夫君','相公','夫婿','良人','老头子','老公仔','爱人','老伴','那口子','配偶','伴侣','卿卿'], 'h,ob':['大伯子','大伯儿','大伯兄','伯子'], 'h,ob,w':['大婶子','大婶儿','大伯兄姊','伯嫂','姒妇','姒姆','大伯嫂','大伯妇','大伯娘','夫兄嫂'], 'h,lb':['小叔子','小叔儿','小叔弟','叔子'], 'h,lb,w':['小婶子','小婶儿','小叔弟妹','叔嫂','娣妇','娣姆','小叔妇','小婶','夫弟妇'], 'h,xb':['伯叔'], 'h,xb,w':['妯娌','娣姒','婶子'], 'h,xb,s':['叔侄','叔侄男','叔男','从男'], 'h,xb,d':['叔侄女','叔女','从女'], 'h,os':['大姑子','大姑姐','大娘姑','婆姐','婆婆姐'], 'h,os,h':['大姑夫','大亘子','婆姐夫','婆婆姐夫'], 'h,ls':['小姑子','小姑妹','婆妹','婆婆妹'], 'h,ls,h':['小姑夫','小亘子','婆妹夫','婆婆妹夫'], 'h,xs':['姑子','夫姑'], 'h,xs,h':['姑夫','姑郎'], 'h,xs,s':['姑甥','姑甥男','姑男'], 'h,xs,d':['姑甥女','姑女'], // 岳家 'w,f,f,f':['曾祖岳父','曾祖丈人','太爷丈人','祖爷丈人'], 'w,f,f,m':['曾祖岳母','曾祖丈母','曾祖丈母娘','祖奶丈母娘','太奶丈母娘'], 'w,f,m,f':['曾外祖岳父','曾外祖丈人','祖姥爷丈人','太姥爷丈'], 'w,f,m,m':['曾外祖岳母','曾外祖丈母','曾外祖丈母娘','祖姥丈母娘','太姥丈母娘'], 'w,m,f,f':['外曾祖岳父','外曾祖丈人','祖奶爷丈人','太奶爷丈人','祖姥爷丈人','太姥爷丈人'], 'w,m,f,m':['外曾祖岳母','外曾祖丈母','太奶丈母娘','祖姥丈母娘','太姥丈母娘'], 'w,m,m,f':['外曾外祖岳父','外曾外祖丈人','祖姥爷丈人','太姥爷丈人'], 'w,m,m,m':['外曾外祖岳母','外曾外祖丈母','外曾外祖丈母娘','祖姥丈母娘','太姥丈母娘'], 'w,f,f':['祖岳父','太岳父','奶岳父','祖丈人','爷丈人','奶爷丈人','奶丈爷','奶丈人','老丈爷'], 'w,f,m':['祖岳母','太岳母','奶岳母','祖丈母','祖丈母娘','奶丈母娘','奶丈姥','奶丈母','老丈姥'], 'w,f,ob':['伯岳父','姻伯','姻伯丈'], 'w,f,ob,w':['伯岳母','姻姆'], 'w,f,lb':['叔岳父','姻叔','姻叔丈'], 'w,f,lb,w':['叔岳母','姻婶'], 'w,m,f':['外祖岳父','外祖丈人','外太岳父','姥岳父','姥丈爷','姥丈人','姥爷丈人','老丈爷'], 'w,m,m':['外祖岳母','外祖丈母娘','外祖丈母','外太岳母','姥岳母','姥丈姥','姥丈母','姥丈母娘'], 'w,f':['岳父','岳丈','岳老子','老干爷','老丈人','丈母爷','老丈杆子','丈人爹','丈爷爹','岳翁','丈人','丈父','丈爷','外父','妻父','泰山','外舅','老亲爷'], 'w,m':['岳母','丈母娘','丈姥娘','岳母娘','老干娘','老丈母','丈人娘','丈母','丈姥','外母','泰水','外姑','老亲娘'], 'w':['老婆','妻子','太太','媳妇儿','媳妇','夫人','女人','婆娘','妻','内人','内子','娘子','爱妻','老太婆','婆子','老婆子','老婆仔','堂客','爱人','老伴','那口子','配偶','伴侣','卿卿'], 'w,ob':['大舅子','大舅兄','舅兄'], 'w,ob,w':['大舅妇','大舅姆','大舅兄嫂','舅嫂','大舅嫂','大舅姐','大舅媳妇','大妗子','大妗儿'], 'w,lb':['小舅子','小舅弟','舅弟'], 'w,lb,w':['小舅妇','小舅姆','小舅弟妇','舅弟媳','小舅妹','小舅媳妇','小妗子','小妗儿'], 'w,xb':['舅子','妻舅'], 'w,xb,w':['舅嫂','妻妗','妗仔','妗子','妗儿'], 'w,xb,s':['舅侄','舅侄男','舅男'], 'w,xb,d':['舅侄女','舅女'], 'w,os':['大姨子','大姨姐','姨姐'], 'w,os,h':['大姨夫','大姨姐夫','襟兄','大尹子'], 'w,ls':['小姨子','小姨妹','姨妹','姨仔','姨妹子'], 'w,ls,h':['小姨夫','小姨妹夫','襟弟','小尹子'], 'w,xs':['姨子','妻姨'], 'w,xs,h':['连襟','连桥','两桥','姨夫','姨夫爷','一担挑','老挑','挑担','担儿挑','连襟儿','妻尹','娅'], 'w,xs,s':['姨甥','姨甥男','姨男','从男'], 'w,xs,d':['姨甥女','姨女','从女'], // 兄弟 'ob':['哥哥','哥','兄','老哥','兄长','阿哥','大佬','胞哥'], 'ob,w':['嫂子','嫂','嫂嫂','哥嫂','兄姊','兄嫂','兄妇','兄妻','阿嫂'], 'lb':['弟弟','弟','胞弟','老弟','阿弟','细佬','小弟','幺弟','细弟','满弟'], 'lb,w':['弟妹','弟媳','弟媳妇','弟新妇','弟妇'], '0,xb,w,xb,s':['舅眷舅男'], '1,xb,w,xb,s':['叔眷舅男'], '0,xb,w,xb,d':['舅眷舅女'], '1,xb,w,xb,d':['叔眷舅女'], '0,xb,w,xs,s':['舅眷姨男'], '1,xb,w,xs,s':['叔眷姨男'], '0,xb,w,xs,d':['舅眷姨女'], '1,xb,w,xs,d':['叔眷姨女'], '0,xb,s':['娘家侄子','娘家侄'], 'xb,s':['侄子','侄男','侄儿','阿侄','侄','侄仔'], 'xb,s,w':['侄媳妇','侄嫂'], 'xb,d':['侄女','侄囡','侄女儿','侄闺女'], 'xb,d,h':['侄女婿','侄婿'], // 姐妹 'os':['姐姐','姐','胞姐','阿姐','姊仔','家姐'], 'os,h':['姐夫','姐丈','姐婿','姐郎','姊兄','姐夫哥','胞姐夫'], 'ls':['妹妹','妹','胞妹','阿妹','幺妹','细妹','满妹'], 'ls,h':['妹夫','妹丈','妹婿','妹郎','妹弟','妹夫子','胞妹夫'], '0,xs,h,xb,s':['姨姻叔男'], '1,xs,h,xb,s':['姑姻叔男'], '0,xs,h,xb,d':['姨姻叔女'], '1,xs,h,xb,d':['姑姻叔女'], '0,xs,h,xs,s':['姨姻姑男'], '1,xs,h,xs,s':['姑姻姑男'], '0,xs,h,xs,d':['姨姻姑女'], '1,xs,h,xs,d':['姑姻姑女'], '0,xs,s':['姨甥男'], '0,xs,s,w':['姨甥媳妇'], '0,xs,d':['姨甥女'], '0,xs,d,h':['姨甥女婿'], 'xs,s':['外甥','外甥男','外甥儿','外甥子','外甥儿子'], 'xs,s,w':['外甥媳妇','甥嫂'], 'xs,s,s':['甥孙','远甥','弥甥'], 'xs,d':['外甥女','外甥囡','外甥女儿','外甥闺女'], 'xs,d,h':['外甥女婿','甥婿'], // 堂表亲 'f,xb,s,s':['堂侄'], 'f,xb,s,s,w':['堂侄媳妇'], 'f,xb,s,d':['堂侄女'], 'f,xb,s,d,h':['堂侄女婿'], 'f,xb,d,s':['堂外甥'], 'f,xb,d,s,w':['堂甥媳妇'], 'f,xb,d,d':['堂外甥女'], 'f,xb,d,d,h':['堂外甥女婿'], // 子辈 's':['儿子','男儿','息男','闺男','囝囝','囝男','小子','娃子','男亲','长子','次子','幼子','儿','仔','子','阿仔','仔仔','一世孙'], 's,w':['儿媳','儿媳妇','儿媳妇儿','新妇','心抱','子妇','息妇','息妇儿'], 's,w,f':['亲家公'], 's,w,m':['亲家母'], 's,s':['孙子','孙男','孙男儿','孙儿','长孙','二世孙'], 's,s,w':['孙媳妇','孙媳','孙妇','孙息妇','孙新妇'], 's,s,s':['曾孙','曾孙男','重孙','重孙子','息仔','三世孙'], 's,s,s,w':['曾孙妇','重孙媳妇'], 's,s,s,s':['玄孙','元孙','膀孙','四世孙'], 's,s,s,s,w':['玄孙媳妇'], 's,s,s,s,s':['来孙','五世孙'], 's,s,s,s,s,w':['来孙媳妇'], 's,s,s,s,s,s':['晜孙','六世孙'], 's,s,s,s,s,s,w':['晜孙媳妇'], 's,s,s,s,s,s,s':['仍孙','七世孙'], 's,s,s,s,s,s,s,w':['仍孙媳妇'], 's,s,s,s,s,s,s,s':['云孙','八世孙'], 's,s,s,s,s,s,s,s,s':['耳孙','远孙','弥孙','九世孙'], 's,s,s,s,s,s,s,s,s,w':['耳孙媳妇'], 's,s,s,s,s,s,s,s,d':['耳孙女'], 's,s,s,s,s,s,s,s,d,h':['耳孙女婿'], 's,s,s,s,s,s,s,d':['云孙女'], 's,s,s,s,s,s,s,d,h':['云孙女婿'], 's,s,s,s,s,s,s,d,s':['耳外孙'], 's,s,s,s,s,s,s,d,s,w':['耳外孙媳妇'], 's,s,s,s,s,s,s,d,d':['耳外孙女'], 's,s,s,s,s,s,s,d,d,h':['耳外孙女婿'], 's,s,s,s,s,s,d':['仍孙女'], 's,s,s,s,s,s,d,h':['仍孙女婿'], 's,s,s,s,s,s,d,s':['云外孙'], 's,s,s,s,s,s,d,s,w':['云外孙媳妇'], 's,s,s,s,s,s,d,d':['云外孙女'], 's,s,s,s,s,s,d,d,h':['云外孙女婿'], 's,s,s,s,s,d':['晜孙女'], 's,s,s,s,s,d,h':['晜孙女婿'], 's,s,s,s,s,d,s':['仍外孙'], 's,s,s,s,s,d,s,w':['仍外孙媳妇'], 's,s,s,s,s,d,d':['仍外孙女'], 's,s,s,s,s,d,d,h':['仍外孙女婿'], 's,s,s,s,d':['来孙女'], 's,s,s,s,d,h':['来孙女婿'], 's,s,s,s,d,s':['晜外孙'], 's,s,s,s,d,s,w':['晜外孙媳妇'], 's,s,s,s,d,d':['晜外孙女'], 's,s,s,s,d,d,h':['晜外孙女婿'], 's,s,s,d':['玄孙女','元孙女','膀孙女'], 's,s,s,d,h':['玄孙女婿'], 's,s,s,d,s':['来外孙'], 's,s,s,d,s,w':['来外孙媳妇'], 's,s,s,d,d':['来外孙女'], 's,s,s,d,d,h':['来外孙女婿'], 's,s,d':['曾孙女','重孙女','息女'], 's,s,d,h':['曾孙女婿'], 's,s,d,s':['玄外孙'], 's,s,d,s,w':['玄外孙媳妇'], 's,s,d,d':['玄外孙女'], 's,s,d,d,h':['玄外孙女婿'], 's,d':['孙女','孙女儿','孙囡','孙囡儿','女孙'], 's,d,h':['孙女婿','孙婿','孙息婿'], 's,d,s':['曾外孙','外息仔'], 's,d,s,w':['曾外孙媳妇'], 's,d,s,s':['曾外曾孙'], 's,d,s,s,w':['曾外曾孙媳妇'], 's,d,s,d':['曾外曾孙女'], 's,d,s,d,h':['曾外曾孙女婿'], 's,d,d':['曾外孙女','外息女'], 's,d,d,h':['曾外孙女婿'], 's,d,d,s':['曾外曾外孙'], 's,d,d,s,w':['曾外曾外孙媳妇'], 's,d,d,d':['曾外曾外孙女'], 's,d,d,d,h':['曾外曾外孙女婿'], 'd':['女儿','千金','掌上明珠','息女','闺女','囡女','乖囡','囡囡','囡嗯','丫头','姑娘','妮子','女亲','长女','次女','幼女','女','阿女','女女'], 'd,h':['女婿','姑爷','女婿子','女婿儿','儿婿','子婿','息婿','郎婿','息婿儿','囝婿'], 'd,h,f':['亲家公'], 'd,h,m':['亲家母'], 'd,s':['外孙','外孙子','外孙儿'], 'd,s,w':['外孙媳妇','外孙妇','外孙新妇'], 'd,s,s':['外曾孙','重外孙','外息仔'], 'd,s,s,w':['外曾孙媳妇','外曾孙妇'], 'd,s,s,s':['外玄孙','外元孙','外膀孙'], 'd,s,s,s,w':['外玄孙媳妇'], 'd,s,s,d':['外玄孙女','外元孙女','外膀孙女'], 'd,s,s,d,h':['外玄孙女婿'], 'd,s,d':['外曾孙女','重外孙女','外息女'], 'd,s,d,h':['外曾孙女婿','重外孙女婿'], 'd,s,d,s':['外玄外孙'], 'd,s,d,s,w':['外玄外孙媳妇'], 'd,s,d,d':['外玄外孙女'], 'd,s,d,d,h':['外玄外孙女婿'], 'd,d':['外孙女','外孙囡','外孙女儿'], 'd,d,h':['外孙女婿','外孙婿'], 'd,d,s':['外曾外孙','外息仔'], 'd,d,s,w':['外曾外孙媳妇'], 'd,d,s,s':['外曾外曾孙'], 'd,d,s,s,w':['外曾外曾孙媳妇'], 'd,d,s,d':['外曾外曾孙女'], 'd,d,s,d,h':['外曾外曾孙女婿'], 'd,d,d':['外曾外孙女','外息女'], 'd,d,d,h':['外曾外孙女婿'], 'd,d,d,s':['外曾外曾外孙'], 'd,d,d,s,w':['外曾外曾外孙媳妇'], 'd,d,d,d':['外曾外曾外孙女'], 'd,d,d,d,h':['外曾外曾外孙女婿'], }; /* * 【分支标签】 - 仅内部使用 * {G1M}:父辈旁系(男); {G1W}:父辈旁系(女); {G1}:父辈旁系(后代); {G0}:同辈旁系; * {M1M}:父辈姻亲(姻); {M1W}:父辈姻亲(眷); {M0}:同辈姻亲; {M-1}:子辈姻亲; {M-2}:孙辈姻亲; * ?:称呼中前缀占位符,没有默认为头部 */ // 分支前缀 var _prefix = { '{G2}':{ 'f,f,xb':['从祖'], 'm,f,xb':['外从祖'], }, '{G1}':{ 'f,xb':['堂','同堂','从父','叔伯','从'], 'f,xs':['姑表','姑家'], 'm,xb':['舅表','舅家'], 'm,xs':['姨','从母','姨家','从'], 'f,f,xb,s':['再从父','从堂','叔伯叔伯','再从'], 'f,f,xb,d':['堂姑表','从父姑表'], 'f,f,xs,s':['姑表叔表'], 'f,f,xs,d':['姑表姑表'], 'f,m,xb,s':['舅表叔表'], 'f,m,xb,d':['舅表姑表'], 'f,m,xs,s':['从母叔表'], 'f,m,xs,d':['从母姑表'], 'm,f,xb,s':['堂舅表','从父舅表'], 'm,f,xb,d':['堂姨表',,'从父姨表'], 'm,f,xs,s':['姑表舅表'], 'm,f,xs,d':['姑表姨表'], 'm,m,xb,s':['舅表舅表'], 'm,m,xb,d':['舅表姨表'], 'm,m,xs,s':['从母舅表'], 'm,m,xs,d':['再从母','姨姨','再从'], 'f,f,f,xb,s,s':['三从父','再从堂','族','三从'], 'm,m,m,xs,d,d':['三从母','三从'], 'f,f,f,f,xb,s,s,s':['四从父','三从堂','四从'], 'm,m,m,m,xs,d,d,d':['四从母','四从'], }, '{G1M}':{ 'f,ob':['伯'], 'f,lb':['叔'], 'm,xb':['舅'], 'f,f,xb,s&o':['堂伯','从父伯','叔伯伯','从伯'], 'f,f,xb,s&l':['堂叔','从父叔','叔伯叔','从叔'], 'f,f,f,xb,s,s&o':['从堂伯'], 'f,f,f,xb,s,s&l':['从堂叔'], 'f,f,f,xb,s,s':['族'], 'f,f,xs,s&o':['姑表伯'], 'f,f,xs,s&l':['姑表叔'], 'f,m,xb,s&o':['舅表伯'], 'f,m,xb,s&l':['舅表叔'], 'f,m,xs,s&o':['姨伯','从母伯','从伯'], 'f,m,xs,s&l':['姨叔','从母叔','从叔'], 'm,f,xb,s':['堂舅','从父舅'], 'm,f,xs,s':['姑表舅'], 'm,m,xb,s':['舅表舅'], 'm,m,xs,s':['姨舅','从母舅'], }, '{G1W}':{ 'f,xs':['姑'], 'm,xs':['姨'], 'f,f,xb,d':['堂姑','从父姑'], 'f,f,f,xb,s,d':['从堂姑'], 'f,f,xs,d':['姑表姑'], 'f,m,xb,d':['舅表姑'], 'f,m,xs,d':['姨姑','从母姑'], 'm,f,xb,d':['堂姨','从父姨'], 'm,f,xs,d':['姑表姨'], 'm,m,xb,d':['舅表姨'], 'm,m,xs,d':['姨姨','从母姨'], }, '{G0}':{ 'xb':['侄'], '1,xb':['从'], '1,f,xb,s':['再从'], '1,f,f,xb,s,s':['三从'], 'h,xb':['叔侄','叔伯'], 'w,xb':['舅侄'], 'xs':['甥'], '0,xs':['从'], '0,m,xs,d':['再从'], '0,m,m,xs,d,d':['三从'], 'h,xs':['姑甥'], 'w,xs':['姨甥','襟侄'], }, '{M1W}':{ 'f,xb,w':['叔眷'], 'f,f,xb,s,w':['从父叔眷'], 'f,f,xs,s,w':['姑表叔眷'], 'f,m,xb,s,w':['舅表叔眷'], 'f,m,xs,s,w':['姨表叔眷'], 'm,xb,w':['舅眷'], 'm,f,xb,s,w':['从父舅眷'], 'm,f,xs,s,w':['姑表舅眷'], 'm,m,xb,s,w':['舅表舅眷'], 'm,m,xs,s,w':['姨表舅眷'], }, '{M1M}':{ 'f,xs,h':['姑姻'], 'f,f,xb,d,h':['从父姑姻'], 'f,f,xs,d,h':['姑表姑姻'], 'f,m,xb,d,h':['舅表姑姻'], 'f,m,xs,d,h':['姨表姑姻'], 'm,xs,h':['姨姻'], 'm,f,xb,d,h':['从父姨姻'], 'm,f,xs,d,h':['姑表姨姻'], 'm,m,xb,d,h':['舅表姨姻'], 'm,m,xs,d,h':['姨表姨姻'], }, '{M0}':{ 'xb,w':['兄弟眷'], 'xs,h':['姊妹姻'], 'w,xb,w':['内兄弟眷'], 'w,xs,h':['内姊妹姻'], 'h,xb,w':['外兄弟眷'], 'h,xs,h':['外姊妹姻'], 'f,xb,s,w':['从父兄弟眷'], 'f,xb,d,h':['从父姊妹姻'], 'f,xs,s,w':['姑表兄弟眷'], 'f,xs,d,h':['姑表姊妹姻'], 'm,xb,s,w':['舅表兄弟眷'], 'm,xb,d,h':['舅表姊妹姻'], 'm,xs,s,w':['从母兄弟眷'], 'm,xs,d,h':['从母姊妹姻'], }, '{M-1}':{ 's,w':['男眷','息眷'], 'd,h':['女姻','息姻'], 'xb,s,w':['侄眷'], 'xb,d,h':['侄姻'], 'xs,s,w':['甥眷'], 'xs,d,h':['甥姻'], 'f,xb,s,s,w':['堂侄眷'], 'f,xb,s,d,h':['堂侄姻'], 'f,xb,d,s,w':['堂甥眷'], 'f,xb,d,d,h':['堂甥姻'], 'f,xs,s,s,w':['姑表侄眷'], 'f,xs,s,d,h':['姑表侄姻'], 'f,xs,d,s,w':['姑表甥眷'], 'f,xs,d,d,h':['姑表甥姻'], 'm,xb,s,s,w':['舅表侄眷'], 'm,xb,s,d,h':['舅表侄姻'], 'm,xb,d,s,w':['舅表甥眷'], 'm,xb,d,d,h':['舅表甥姻'], 'm,xb,s,s,w':['姨侄眷'], 'm,xb,s,d,h':['姨侄姻'], 'm,xb,d,s,w':['姨甥眷'], 'm,xb,d,d,h':['姨甥姻'], }, '{M-2}':{ 's,s,w':['孙眷'], 's,d,h':['孙姻'], 'd,s,w':['外孙眷'], 'd,d,h':['外孙姻'], 'xb,s,s,w':['侄孙眷'], 'xb,s,d,h':['侄孙姻'], 'xb,d,s,w':['侄外孙眷'], 'xb,d,d,h':['侄外孙姻'], 'xs,s,s,w':['甥孙眷'], 'xs,s,d,h':['甥孙姻'], 'xs,d,s,w':['甥外孙眷'], 'xs,d,d,h':['甥外孙姻'], } }; // 分支关系链 var _branch = { 'f,f,f,f,f,f,f,f,{G1M}':['鼻祖父'], 'f,f,f,f,f,f,f,f,{G1M},w':['鼻祖母'], 'f,f,f,f,f,f,f,f,{G1W}':['鼻祖母'], 'f,f,f,f,f,f,f,f,{G1W},h':['鼻祖父'], 'f,f,f,f,f,f,f,{G1M}':['远祖父'], 'f,f,f,f,f,f,f,{G1M},w':['远祖母'], 'f,f,f,f,f,f,f,{G1W}':['远祖母'], 'f,f,f,f,f,f,f,{G1W},h':['远祖父'], 'f,f,f,f,f,f,{G1M}':['太祖父'], 'f,f,f,f,f,f,{G1M},w':['太祖母'], 'f,f,f,f,f,f,{G1W}':['姑太祖母'], 'f,f,f,f,f,f,{G1W},h':['姑太祖父'], 'f,f,f,f,f,{G1M}':['烈祖父'], 'f,f,f,f,f,{G1M},w':['烈祖母'], 'f,f,f,f,f,{G1W}':['烈祖母'], 'f,f,f,f,f,{G1W},h':['烈祖父'], 'f,f,f,f,{G1M}':['天祖父'], 'f,f,f,f,{G1M},w':['天祖母'], 'f,f,f,f,{G1W}':['天祖母'], 'f,f,f,f,{G1W},h':['天祖父'], // 高祖辈 'f,f,f,{G1M}':['高祖父','外曾外曾外毑父'], 'f,f,f,{G1M},w':['高祖母','外曾外曾外毑母'], 'f,f,f,{G1W}':['高祖母','外曾外曾外毑母'], 'f,f,f,{G1W},h':['高祖父','外曾外曾外毑父'], 'f,f,m,{G1M}':['高外祖父','外曾外曾毑父'], 'f,f,m,{G1M},w':['高外祖母','外曾外曾毑母'], 'f,f,m,{G1W}':['高外祖母','外曾外曾毑母'], 'f,f,m,{G1W},h':['高外祖父','外曾外曾毑父'], 'f,m,f,{G1M}':['曾外曾祖父','外高外毑父'], 'f,m,f,{G1M},w':['曾外曾祖母','外高外毑母'], 'f,m,f,{G1W}':['曾外曾祖母','外高外毑母'], 'f,m,f,{G1W},h':['曾外曾祖父','外高外毑父'], 'f,m,m,{G1M}':['曾外曾外祖父','外高毑父'], 'f,m,m,{G1M},w':['曾外曾外祖母','外高毑母'], 'f,m,m,{G1W}':['曾外曾外祖母','外高毑母'], 'f,m,m,{G1W},h':['曾外曾外祖父','外高毑父'], 'm,f,f,{G1M}':['外高祖父','曾外曾外毑父'], 'm,f,f,{G1M},w':['外高祖母','曾外曾外毑母'], 'm,f,f,{G1W}':['外高祖母','曾外曾外毑母'], 'm,f,f,{G1W},h':['外高祖父','曾外曾外毑父'], 'm,f,m,{G1M}':['外高外祖父','曾外曾祖毑父'], 'm,f,m,{G1M},w':['外高外祖母','曾外曾祖毑母'], 'm,f,m,{G1W}':['外高外祖母','曾外曾祖毑母'], 'm,f,m,{G1W},h':['外高外祖父','曾外曾祖毑父'], 'm,m,f,{G1M}':['外曾外曾祖父','高外毑父'], 'm,m,f,{G1M},w':['外曾外曾祖母','高外毑母'], 'm,m,f,{G1W}':['外曾外曾祖母','高外毑母'], 'm,m,f,{G1W},h':['外曾外曾祖父','高外毑父'], 'm,m,m,{G1M}':['外曾外曾外祖父','高毑父'], 'm,m,m,{G1M},w':['外曾外曾外祖母','高毑母'], 'm,m,m,{G1W}':['外曾外曾外祖母','高毑母'], 'm,m,m,{G1W},h':['外曾外曾外祖父','高毑父'], // 曾祖辈 'f,f,{G1M}':['?曾祖父','曾?祖父','?太公','太?公','?公太','太?爷','?太爷','?太爷爷','太?爷爷'], 'f,f,{G1M},w':['?曾祖母','曾?祖母','?太婆','太?婆','?婆太','太?奶','?太奶','?太奶奶','太?奶奶'], 'f,f,{G1W}':['?曾祖母','曾?祖母','?太婆','太?婆','?婆太','太?奶','?太奶','?太奶奶','太?奶奶'], 'f,f,{G1W},h':['?曾祖父','曾?祖父','?太公','太?公','?公太','太?爷','?太爷','?太爷爷','太?爷爷'], 'f,m,{G1M}':['?曾外祖父','曾外?祖父','?太外公','太外?公','太外?爷','?太外爷','?太外爷爷','太外?爷爷'], 'f,m,{G1M},w':['?曾外祖母','曾外?祖母','?太外婆','太外?婆','太外?奶','?太外奶','?太外奶奶','太外?奶奶'], 'f,m,{G1W}':['?曾外祖母','曾外?祖母','?太外婆','太外?婆','太外?奶','?太外奶','?太外奶奶','太外?奶奶'], 'f,m,{G1W},h':['?曾外祖父','曾外?祖父','?太外公','太外?公','太外?爷','?太外爷','?太外爷爷','太外?爷爷'], 'm,f,{G1M}':['?外曾祖父','外曾?祖父','?外太公','外太?公','外太?爷','?外太爷','?外太爷爷','外太?爷爷'], 'm,f,{G1M},w':['?外曾祖母','外曾?祖母','?外太婆','外太?婆','外太?奶','?外太奶','?外太奶奶','外太?奶奶'], 'm,f,{G1W}':['?外曾祖母','外曾?祖母','?外太婆','外太?婆','外太?奶','?外太奶','?外太奶奶','外太?奶奶'], 'm,f,{G1W},h':['?外曾祖父','外曾?祖父','?外太公','外太?公','外太?爷','?外太爷','?外太爷爷','外太?爷爷'], 'm,m,{G1M}':['?外曾外祖父','外曾外?祖父','?外太外公','外太外?公','外太外?爷','?外太外爷','?外太外爷爷','外太外?爷爷'], 'm,m,{G1M},w':['?外曾外祖母','外曾外?祖母','?外太外婆','外太外?婆','外太外?奶','?外太外奶','?外太外奶奶','外太外?奶奶'], 'm,m,{G1W}':['?外曾外祖母','外曾外?祖母','?外太外婆','外太外?婆','外太外?奶','?外太外奶','?外太外奶奶','外太外?奶奶'], 'm,m,{G1W},h':['?外曾外祖父','外曾外?祖父','?外太外公','外太外?公','外太外?爷','?外太外爷','?外太外爷爷','外太?外爷爷'], // 祖辈 'f,{G1M}':['祖父','公','太?父','奶爷','爷爷','爷'], 'f,{G1M},w':['祖母','婆','太?母','奶奶','奶'], 'f,{G1W}':['祖母','婆','太?母','奶奶','奶'], 'f,{G1W},h':['祖父','公','太?父','奶爷','爷爷','爷'], 'm,{G1M}':['外祖父','外公','外爷','外?公','外?祖父','外太?父','姥爷','姥公','毑公','毑爷','嘎公'], 'm,{G1M},w':['外祖母','外婆','外奶','外?婆','外?祖母','外太?母','姥姥','姥娘','姥婆','毑婆','毑毑','嘎嘎'], 'm,{G1W}':['外祖母','外婆','外奶','外?婆','外?祖母','外太?母','姥姥','姥娘','姥婆','毑婆','毑毑','嘎嘎'], 'm,{G1W},h':['外祖父','外公','外爷','外?公','外?祖父','外太?父','姥爷','姥公','毑公','毑爷','嘎公'], // 父辈 'f,{G1},s&o':['伯父','伯伯','伯','大爷'], 'f,{G1},s&o,w':['伯母'], 'f,{G1},s&l':['叔父','叔爸','叔叔','叔'], 'f,{G1},s&l,w':['叔母','婶'], 'f,{G1},d':['姑母','姑姑','姑妈','姑'], 'f,{G1},d,h':['姑父'], 'm,{G1},s':['舅父','舅舅','舅爸','舅'], 'm,{G1},s,w':['舅母','舅妈'], 'm,{G1},d':['姨母','姨姨','姨妈','姨'], 'm,{G1},d,h':['姨父','姨爸','姨丈'], // 同辈及以下 '{G1},s&o':['哥'], '{G1},s&o,w':['嫂','嫂子','兄妇'], '{G1},s&l':['弟'], '{G1},s&l,w':['弟媳','弟妇'], '{G1},[s&o|s&l]':['兄弟'], '{G1},s,s':['侄男','侄子','侄儿'], '{G1},s,s,w':['侄妇'], '{G1},s,s,s':['侄孙男'], '{G1},s,s,s,w':['侄孙妇'], '{G1},s,s,d':['侄孙女'], '{G1},s,s,d,h':['侄孙婿'], '{G1},s,d':['侄女','侄女儿'], '{G1},s,d,h':['侄婿'], '{G1},s,d,s':['侄外孙男'], '{G1},s,d,s,w':['侄外孙妇'], '{G1},s,d,d':['侄外孙女'], '{G1},s,d,d,h':['侄外孙婿'], '{G1},d&o':['姐'], '{G1},d&o,h':['姐夫'], '{G1},d&l':['妹'], '{G1},d&l,h':['妹夫'], '{G1},[d&o|d&l]':['姐妹'], '{G1},d,s':['甥男'], '{G1},d,s,w':['甥妇'], '{G1},d,s,s':['甥孙男'], '{G1},d,s,s,w':['甥孙妇'], '{G1},d,s,d':['甥孙女'], '{G1},d,s,d,h':['甥孙婿'], '{G1},d,d':['甥女'], '{G1},d,d,h':['甥婿'], '{G1},d,d,s':['甥外孙男'], '{G1},d,d,s,w':['甥外孙妇'], '{G1},d,d,d':['甥外孙女'], '{G1},d,d,d,h':['甥外孙婿'], // 其他旁系 '{G2}':['祖父'], '{G2},w':['祖母'], '{G2},s':['父'], '{G2},s,w':['母'], '{G2},s,s&o':['兄'], '{G2},s,s&l':['弟'], '{G2},s,[s&o|s&l]':['兄弟'], '{G2},s,d&o':['姊'], '{G2},s,d&l':['妹'], '{G2},s,[d&o|d&l]':['姊妹'], '{G2},s,s,s':['男','子'], '{G2},s,s,d':['女'], // 夫族 'h,f,{G1M}':['祖公父','祖公','祖翁'], 'h,f,{G1M},w':['祖婆母','祖婆','祖姆'], 'h,{G1M}':['公父','公公'], 'h,{G1M},w':['婆母','婆婆'], 'h,{G1W}':['婆母','婆婆'], 'h,{G1W},h':['公父','公公'], 'h,{G1},s&o':['大伯子','大伯兄'], 'h,{G1},s&o,w':['大婶子','大伯嫂'], 'h,{G1},s&l':['小叔子','小叔弟'], 'h,{G1},s&l,w':['小婶子','小叔弟妇'], 'h,{G1},d&o':['大姑子','大姑姐'], 'h,{G1},d&o,h':['大姑夫','大姑姐夫'], 'h,{G1},d&l':['小姑子','小姑妹'], 'h,{G1},d&l,h':['小姑夫','小姑妹夫'], // 妻族 'w,f,{G1M}':['祖岳父','太?岳','祖丈人','爷丈人','奶爷丈人'], 'w,f,{G1M},w':['祖岳母','太?岳母','祖丈母','祖丈母娘','奶丈母娘','奶丈母'], 'w,f,{G1W}':['祖岳母',,'太?岳母','祖丈母','祖丈母娘','奶丈母娘','奶丈母'], 'w,f,{G1W},h':['祖岳父',,'太?岳父','祖丈人','爷丈人','奶爷丈人'], 'w,m,{G1M}':['外祖岳父','太外?岳','外祖丈人','姥爷丈人'], 'w,m,{G1M},w':['外祖岳母','太外?岳母','外祖丈母','外祖丈母娘','姥丈母娘','姥丈母'], 'w,m,{G1W}':['外祖岳母',,'太外?岳母','外祖丈母','外祖丈母娘','姥丈母娘','姥丈母'], 'w,m,{G1W},h':['外祖岳父',,'太外?岳父','外祖丈人','外爷丈人','姥爷丈人'], 'w,{G1M}':['岳父','丈人','丈人爹'], 'w,{G1M},w':['岳母','丈母','丈母娘'], 'w,{G1W}':['岳母','丈母','丈母娘'], 'w,{G1W},h':['岳父','丈人','丈人爹'], 'w,{G1},s&o':['大舅子','大舅兄','舅兄'], 'w,{G1},s&o,w':['大舅妇','大舅姆','大舅兄妇','舅兄妇','舅姐','大舅姐','大妗子','大妗儿'], 'w,{G1},s&l':['小舅子','小舅弟','舅弟'], 'w,{G1},s&l,w':['小舅妇','小舅姆','小舅弟妇','舅弟妇','舅妹','小舅妹','小妗子','小妗儿'], 'w,{G1},d&o':['大姨子','大姨姐','姨姐'], 'w,{G1},d&o,h':['大姨夫','大姨姐夫','襟兄','姨兄','大姨哥','大尹子'], 'w,{G1},d&l':['小姨子','小姨妹','姨妹','姨仔'], 'w,{G1},d&l,h':['小姨夫','小姨妹夫','襟弟','姨弟','小姨弟','小尹子'], // 子辈及以下 '{G0},s':['男','男儿','儿','子'], '{G0},s,w':['媳妇','妇'], '{G0},s,s':['孙','孙男','孙子'], '{G0},s,s,w':['孙妇'], '{G0},s,s,s':['曾孙','曾孙男'], '{G0},s,s,s,w':['曾孙妇'], '{G0},s,s,s,s':['玄孙','玄孙男'], '{G0},s,s,s,d':['玄孙女'], '{G0},s,s,d':['曾孙女'], '{G0},s,s,d,h':['曾孙婿'], '{G0},s,s,d,s':['玄外孙','玄外孙男'], '{G0},s,s,d,d':['玄外孙女'], '{G0},s,d':['孙女'], '{G0},s,d,h':['孙婿'], '{G0},s,d,s':['曾外孙','曾外孙男'], '{G0},s,d,s,w':['曾外孙妇'], '{G0},s,d,s,s':['曾外曾孙','曾外曾孙男'], '{G0},s,d,s,d':['曾外曾孙女'], '{G0},s,d,d':['曾外孙女'], '{G0},s,d,d,h':['曾外孙婿'], '{G0},s,d,d,s':['曾外曾外孙','曾外曾外孙男'], '{G0},s,d,d,d':['曾外曾外孙女'], '{G0},d':['女','女儿'], '{G0},d,s':['外孙','外孙男'], '{G0},d,s,w':['外孙妇'], '{G0},d,s,s':['外曾孙','外曾孙男'], '{G0},d,s,s,w':['外曾孙妇'], '{G0},d,s,s,s':['外玄孙','外玄孙男'], '{G0},d,s,s,d':['外玄孙女'], '{G0},d,s,d':['外曾孙女'], '{G0},d,s,d,h':['外曾孙婿'], '{G0},d,s,d,s':['外玄外孙','外玄外孙男'], '{G0},d,s,d,d':['外玄外孙女'], '{G0},d,d':['外孙女'], '{G0},d,d,h':['外孙婿'], '{G0},d,d,s':['外曾外孙','外曾外孙男'], '{G0},d,d,s,w':['外曾外孙妇'], '{G0},d,d,s,s':['外曾外曾孙','外曾外曾孙男'], '{G0},d,d,s,d':['外曾外曾孙女'], '{G0},d,d,d':['外曾外孙女'], '{G0},d,d,d,h':['外曾外孙婿'], '{G0},d,d,d,s':['外曾外曾外孙'], '{G0},d,d,d,d':['外曾外曾外孙女'], // 姻亲关系 '{M1W},f':['外祖父'], '{M1W},m':['外祖母'], '{M1W},xb':['舅父'], '{M1W},xb,w':['舅母'], '{M1W},xb,s&o':['舅表哥'], '{M1W},xb,s&o,w':['舅表嫂'], '{M1W},xb,s&l':['舅表弟'], '{M1W},xb,s&l,w':['舅表弟妇'], '{M1W},xb,s,s':['侄男'], '{M1W},xb,s,s,w':['侄妇'], '{M1W},xb,s,d':['侄女'], '{M1W},xb,s,d,h':['侄婿'], '{M1W},xb,d&o':['舅表姐'], '{M1W},xb,d&o,h':['舅表姐夫'], '{M1W},xb,d&l':['舅表妹'], '{M1W},xb,d&l,h':['舅表妹夫'], '{M1W},xb,d,s':['甥男'], '{M1W},xb,d,s,w':['甥妇'], '{M1W},xb,d,d':['甥女'], '{M1W},xb,d,d,h':['甥婿'], '{M1W},xs':['姨母'], '{M1W},xs,h':['姨父'], '{M1W},xs,s&o':['姨表哥'], '{M1W},xs,s&o,w':['姨表嫂'], '{M1W},xs,s&l':['姨表弟'], '{M1W},xs,s&l,w':['姨表弟妇'], '{M1W},xs,d&o':['姨表姐'], '{M1W},xs,d&o,h':['姨表姐夫'], '{M1W},xs,d&l':['姨表妹'], '{M1W},xs,d&l,h':['姨表妹夫'], '{M1M},f':['祖父'], '{M1M},m':['祖母'], '{M1M},ob':['伯父'], '{M1M},ob,w':['伯母'], '{M1M},lb':['叔父'], '{M1M},lb,w':['叔母'], '{M1M},xb,s&o':['叔表哥'], '{M1M},xb,s&o,w':['叔表嫂'], '{M1M},xb,s&l':['叔表弟'], '{M1M},xb,s&l,w':['叔表弟妇'], '{M1M},xb,s,s':['侄男','侄子','侄儿'], '{M1M},xb,s,s,w':['侄妇'], '{M1M},xb,s,d':['侄女'], '{M1M},xb,s,d,h':['侄婿'], '{M1M},xb,d&o':['叔表姐'], '{M1M},xb,d&o,h':['叔表姐夫'], '{M1M},xb,d&l':['叔表妹'], '{M1M},xb,d&l,h':['叔表妹夫'], '{M1M},xb,d,s':['甥男'], '{M1M},xb,d,s,w':['甥妇'], '{M1M},xb,d,d':['甥女'], '{M1M},xb,d,d,h':['甥婿'], '{M1M},xs':['姑母'], '{M1M},xs,h':['姑父'], '{M1M},xs,s&o':['姑表哥'], '{M1M},xs,s&o,w':['姑表嫂'], '{M1M},xs,s&l':['姑表弟'], '{M1M},xs,s&l,w':['姑表弟妇'], '{M1M},xs,d&o':['姑表姐'], '{M1M},xs,d&o,h':['姑表姐夫'], '{M1M},xs,d&l':['姑表妹'], '{M1M},xs,d&l,h':['姑表妹夫'], '{M0},f':['父'], '{M0},f,f':['祖父'], '{M0},f,f,ob':['伯祖父'], '{M0},f,f,ob,w':['伯祖母'], '{M0},f,f,lb':['叔祖父'], '{M0},f,f,lb,w':['叔祖母'], '{M0},f,f,xs':['姑祖母'], '{M0},f,f,xs,h':['姑祖父'], '{M0},f,m':['祖母'], '{M0},f,m,xb':['舅祖父'], '{M0},f,m,xb,w':['舅祖母'], '{M0},f,m,xs':['姨祖母'], '{M0},f,m,xs,h':['姨祖父'], '{M0},f,ob':['伯父'], '{M0},f,ob,w':['伯母'], '{M0},f,lb':['叔父'], '{M0},f,lb,w':['叔母'], '{M0},f,xb,s&o':['叔表兄'], '{M0},f,xb,s&o,w':['叔表兄妇'], '{M0},f,xb,s&l':['叔表弟'], '{M0},f,xb,s&l,w':['叔表弟妇'], '{M0},f,xb,d&o':['叔表姊'], '{M0},f,xb,d&o,h':['叔表姊婿'], '{M0},f,xb,d&l':['叔表妹'], '{M0},f,xb,d&l,h':['叔表妹婿'], '{M0},f,xs':['姑母'], '{M0},f,xs,h':['姑父'], '{M0},f,xs,s&o':['姑表兄'], '{M0},f,xs,s&o,w':['姑表兄妇'], '{M0},f,xs,s&l':['姑表弟'], '{M0},f,xs,s&l,w':['姑表弟妇'], '{M0},f,xs,d&o':['姑表姊'], '{M0},f,xs,d&o,h':['姑表姊婿'], '{M0},f,xs,d&l':['姑表妹'], '{M0},f,xs,d&l,h':['姑表妹婿'], '{M0},m':['母'], '{M0},m,f':['外祖父'], '{M0},m,f,ob':['伯外祖父'], '{M0},m,f,ob,w':['伯外祖母'], '{M0},m,f,lb':['叔外祖父'], '{M0},m,f,lb,w':['叔外祖母'], '{M0},m,f,xs':['姑外祖母'], '{M0},m,f,xs,h':['姑外祖父'], '{M0},m,m':['外祖母'], '{M0},m,m,xb':['舅外祖父'], '{M0},m,m,xb,w':['舅外祖母'], '{M0},m,m,xs':['姨外祖母'], '{M0},m,m,xs,h':['姨外祖父'], '{M0},m,xb':['舅父'], '{M0},m,xb,w':['舅母'], '{M0},m,xb,s&o':['舅表兄'], '{M0},m,xb,s&o,w':['舅表兄妇'], '{M0},m,xb,s&l':['舅表弟'], '{M0},m,xb,s&l,w':['舅表弟妇'], '{M0},m,xb,d&o':['舅表姊'], '{M0},m,xb,d&o,h':['舅表姊婿'], '{M0},m,xb,d&l':['舅表妹'], '{M0},m,xb,d&l,h':['舅表妹婿'], '{M0},m,xs':['姨母'], '{M0},m,xs,h':['姨父'], '{M0},m,xs,s&o':['姨表兄'], '{M0},m,xs,s&o,w':['姨表兄妇'], '{M0},m,xs,s&l':['姨表弟'], '{M0},m,xs,s&l,w':['姨表弟妇'], '{M0},m,xs,d&o':['姨表姊'], '{M0},m,xs,d&o,h':['姨表姊婿'], '{M0},m,xs,d&l':['姨表妹'], '{M0},m,xs,d&l,h':['姨表妹婿'], '{M0},ob':['兄'], '{M0},ob,w':['兄妇'], '{M0},lb':['弟'], '{M0},lb,w':['弟妇'], '{M0},xb,s':['侄男','侄子','侄儿'], '{M0},xb,s,w':['侄妇'], '{M0},xb,d':['侄女'], '{M0},xb,d,h':['侄婿'], '{M0},os':['姊'], '{M0},os,h':['姊婿'], '{M0},ls':['妹'], '{M0},ls,h':['妹婿'], '{M0},xs,s':['甥男'], '{M0},xs,s,w':['甥妇'], '{M0},xs,d':['甥女'], '{M0},xs,d,h':['甥婿'], '{M-1},f&o':['兄'], '{M-1},f&l':['弟'], '{M-1},f,f':['父'], '{M-1},f,f,f':['祖父'], '{M-1},f,f,m':['祖母'], '{M-1},f,f,ob':['伯父'], '{M-1},f,f,ob,w':['伯母'], '{M-1},f,f,lb':['叔父'], '{M-1},f,f,lb,w':['叔母'], '{M-1},f,m':['母'], '{M-1},f,m,f':['外祖父'], '{M-1},f,m,m':['外祖母'], '{M-1},f,ob':['叔兄'], '{M-1},f,ob,w':['叔兄妇'], '{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':['孙婿'], } // 数据 var _map = {}; // 默认数据 var _mode = {}; // 模式数据 var _data = {}; // 最终数据 // 数组去重 function unique(arr){ var sameList = arr.filter(item=>item==item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,'')); return arr.filter(item=>{ var temp = item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,''); return sameList.indexOf(item)>-1||item!=temp&&sameList.indexOf(temp)==-1; }).filter((item,idx,arr) => arr.indexOf(item) === idx); } // 中文获取选择器 function getSelectors(str){ str = str.replace(/之/,'的').replace(/我的?(.+)/,'$1'); if(str.match(/[^娘婆岳亲]家的?/)){ str = str.replace(/家的?/,'的'); } var lists = str.split('的'); var result = []; var isMatch = true; // 双向替换 var replaceMap = { '哥':'兄', '姐':'姊', '侄':'姪', '祖父':'王父', '祖母':'王母', '孙女婿':'孙婿', '甥女婿':'甥婿', '侄女婿':'侄婿', '弟媳':'弟妇', '孙媳妇':'孙妇', '甥媳妇':'甥妇', '侄媳妇':'侄妇', }; // 含义扩展 var replaceFilter = { '^从表':['从父姑表','从父舅表','从父姨表','从母姑表','从母舅表','从母叔表'], '^表表':['姑表叔表','姑表姑表','姑表舅表','姑表姨表','舅表叔表','舅表姑表','舅表舅表','舅表姨表'], '^表':['姑表','舅表','姑表伯','姑表叔','舅表伯','舅表叔'], '^姑表(?=[^伯叔])':['姑表伯','姑表叔'], '^舅表(?=[^伯叔])':['舅表伯','舅表叔'], '^姻':['姑姻','姨姻','姊妹姻','女姻'], '^眷':['叔眷','舅眷','兄弟眷','男眷'], '^亲家':['姊妹姻','兄弟眷'], '^曾([伯叔姑舅姨侄甥])':['$1曾'], '^玄([侄甥])':['$1玄'], '^外表([伯叔姑舅姨])':['姑表$1外','舅表$1外'], '^外甥':['甥'], '([孙甥侄])$':['$1男','$1女'], '祖$':['祖父','祖母'], '嫂$':['兄妇'], '女儿$':['女'], '外甥$':['甥'], }; while(lists.length){ var name = lists.shift(); //当前匹配词 var items = []; //当前匹配词可能性 var x_items = []; var r_items = []; var keywords = [name]; var getList = function(name){ for(var filter in replaceFilter){ var word_list = replaceFilter[filter]; word_list.forEach(function(word){ var name1 = name.replace(new RegExp(filter),word); if(name1!=name){ keywords.push(name1); getList(name1); } }); } for(var word in replaceMap){ var name1 = name.replace(word,replaceMap[word]); var name2 = name.replace(replaceMap[word],word); if(name1!=name){ keywords.push(name1); } if(name2!=name){ keywords.push(name2); } } }; getList(name); // 通过关键词找关系 keywords.forEach(function(name){ var x_name = name.replace(/^[大|小|老]|^[一|二|三|四|五|六|七|八|九|十]{1,2}/,'x'); var r_name = name.replace(/^[大|小|老]|^[一|二|三|四|五|六|七|八|九|十]{1,2}/,''); for(var i in _data){ if(_data[i].indexOf(name)>-1){ items.push(i); } if(name!=x_name&&_data[i].indexOf(x_name)>-1){ x_items.push(i); } if(name!=r_name&&_data[i].indexOf(r_name)>-1){ if(!i.match(/^[mf,]+$/)&&!r_name.match(/^[从世]/)){ // 直系祖辈不参与排序 r_items.push(i); } } } }); // console.log('[keywords]',keywords); // 如找不到结果,再是否存在称呼的排行问题(不直接判断,因存在"大舅""三从父兄""三世祖"这样特俗含义的情况) if(!items.length){ items = x_items; } if(!items.length){ items = r_items; } // 完全匹配不到结果 if(!items.length){ isMatch = false; } var res = []; if(!result.length){ result = ['']; } result.forEach(function(a){ items.forEach(function(b){ res.push(a+(b?','+b:'')); }); }); result = res; } return isMatch?result:[]; } // 选择器转ID function selector2id(selector,sex){ var result = []; var hash = {}; //性别判断 if(sex<0){ if(selector.match(/^,[w1]/)){ sex = 1; }else if(selector.match(/^,[h0]/)){ sex = 0; } }else if(sex==1&&selector.match(/^,[h0]/)){ return false; }else if(sex==0&&selector.match(/^,[w1]/)){ return false; } // console.log('[selector]',selector); var getId = function(selector,sex){ if(sex>-1&&selector.indexOf(',1')==-1&&selector.indexOf(',0')==-1){ selector = ','+sex+selector; } if(selector.match(/,[mwd0](&[ol])?,w|,[hfs1](&[ol])?,h/)){ //同志关系去除 return false; } var s=''; if(!hash[selector]){ hash[selector] = true; do{ s = selector; for(var i in _filter){ var item = _filter[i]; // console.log('[filter]',item['exp'],selector); selector = selector.replace(item['exp'],item['str']); if(selector.indexOf('#')>-1){ selector.split('#').forEach(getId); return false; } } }while(s!=selector); if(selector.match(/,[mwd0](&[ol])?,w|,[hfs1](&[ol])?,h/)){ //同志关系去除 return false; } selector = selector.replace(/,[01]/,'').substr(1); //去前面逗号和性别信息 result.push(selector); } } getId(selector,sex); return unique(result); } // 通过ID获取数据 function getDataById(id){ var items = []; var getData = function(d){ var res = []; if(_data[d]){ res.push(_data[d][0]); }else{ for(var i in _data){ if(i.replace(/&[ol]/g,'')==d){ res.push(_data[i][0]); }else{ var expr = d; while (expr.match(/[ol](b|s)/)){ expr = expr.replace(/[ol](b|s)/,'x$1'); if(expr==i){ res.push(_data[i][0]); break; } } } } } return res; }; if(_data[id]){ // 直接匹配称呼 items.push(_data[id][0]); }else{ items = getData(id); // 忽略年龄条件查找 if(!items.length){ id = id.replace(/&[ol]/g,''); items = getData(id); } // 忽略年龄条件查找 if(!items.length){ id = id.replace(/[ol](b|s)/g,'x$1'); items = getData(id); } // 缩小访问查找 if(!items.length){ var l = id.replace(/x/g,'l'); var o = id.replace(/x/g,'o'); items = items.concat(getData(o),getData(l)); } } return items; } // 逆转ID function reverseId(id,sex){ var hash = { 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'] }; var age = ''; if(id.match(/&o$/)){ age = '&l'; }else if(id.match(/&l$/)){ age = '&o'; } if(id){ id = id.replace(/&[ol]/g,''); //性别判断 if(sex<0){ if(id.match(/^w/)){ sex = 1; }else if(id.match(/^h/)){ sex = 0; } } var result = []; var doing = function(sex){ var sid = (','+sex+','+id).replace(/,[fhs]|,[olx]b/g,',1').replace(/,[mwd]|,[olx]s/g,',0'); sid = sid.substring(0,sid.length-2); var id_arr = id.split(',').reverse(); var sid_arr = sid.split(',').reverse(); var arr = id_arr.map((id,i)=>hash[id][sid_arr[i]]); var g = 0; var gMap = {'f':1,'m':1,'s':-1,'d':-1}; arr.forEach(function(r){ g += gMap[r]||0; }); return arr.join(',')+(g?'':age); }; if(sex<0){ result.push(doing(1)); result.push(doing(0)); }else{ result.push(doing(sex)); } return result; } return ['']; } // 通过ID获取关系链条 function getChainById(id){ var arr = id.split(','); return arr.map(function(sign){ var key = sign.replace(/&[ol]/,''); var data = Object.assign(_data,{ 'xb':['兄弟'], 'xs':['姐妹'], }); return data[key][0]; }).join('的'); } // 合并选择器,查找两个对象之间的关系 function mergeSelector(from,to,my_sex){ if(my_sex<0){ var to_sex = -1; var from_sex = -1; if(from.match(/^,[w1]/)){ from_sex = 1; }else if(from.match(/^,[h0]/)){ from_sex = 0; } if(to.match(/^,[w1]/)){ to_sex = 1; }else if(to.match(/^,[h0]/)){ to_sex = 0; } if(from_sex==-1&&to_sex>-1){ my_sex = to_sex; }else if(from_sex>-1&&to_sex==-1){ my_sex = from_sex; }else if(from_sex==to_sex){ my_sex = from_sex; }else{ return false; } } var sex = my_sex; var from_ids = selector2id(from,my_sex); var to_ids = selector2id(to,my_sex); var to_rids = []; if(!from_ids.length||!to_ids.length){ return false; } if(to){ var toIsMale = false; var toIsFemale = false; to_ids.forEach(function(id){ if(id.match(/([fhs1](&[ol])?|[olx]b)$/)){ toIsMale = true; } if(id.match(/([mwd0](&[ol])?|[olx]s)$/)){ toIsFemale = true; } to_rids = to_rids.concat(reverseId(id,my_sex)); }); to_rids = unique(to_rids); if(toIsMale&&toIsFemale){ sex = -1; }else if(toIsMale){ sex = 1; }else if(toIsFemale){ sex = 0; } }else{ to_rids = ['']; } // console.log('[from_ids]',from_ids,'to_rids',to_rids); var from_selector = from_ids.length>1?'['+from_ids.join('|')+']':from_ids[0]; var to_selector = to_rids.length>1?'['+to_rids.join('|')+']':to_rids[0]; return { 'selector':(to?','+to_selector:'')+(from?','+from_selector:''), 'sex':sex }; } // 数据初始化 // 分支关系 for(var key in _branch){ var tag = key.match(/\{.+?\}/)[0]; var nameList = _branch[key]; for(var k in _prefix[tag]){ var prefixList = _prefix[tag][k]; var newKey = key.replace(tag,k); var isFilter = ['h,h','w,w','w,h','h,w'].some(pair=>(newKey.indexOf(pair)>-1)); var newList = []; if(!isFilter){ prefixList.forEach(function(prefix){ nameList.forEach(function(name){ if(name.indexOf('?')>-1){ newList.push(name.replace('?',prefix)); }else{ newList.push(prefix+name); } }); }); _map[newKey] = [].concat(_map[newKey]||[],newList); } } } // 主要关系 for(var key in _main){ _map[key] = [].concat(_main[key],_map[key]||[]); } _map['o']=['passer-by.com','\u4f5c\u8005']; // 配偶关系 var branch = { 'w':['妻','内','岳','岳家','丈人'], 'h':['夫','外','婆家','婆婆'], }; var allName = {}; for(var key in _map){ _map[key].forEach(function(name){ allName[name]=true; }); } for(var key in _map){ if(key.match(/^[fm]/)||key.match(/^[olx][bs]$|^[olx][bs],[^mf]/)){ for(var k in branch){ var newKey = k+','+key; if(!_map[newKey]){ _map[newKey] = []; } var prefixList = branch[k]; var nameList = _map[key]; prefixList.forEach(function(prefix){ nameList.forEach(function(name){ var newName = prefix+name; if(!allName[newName]){ // 配偶组合的称呼不得已原有称呼冲突(如:妻舅!=妻子的舅舅;外舅公!=老公的舅公) _map[newKey].push(newName); } }); }); } } } _data = Object.assign({},_map); // 对外方法 var relationship = function (parameter){ var options = Object.assign({ text:'', target:'', sex:-1, type:'default', // 'chain'表示关系链 reverse:false, // true表示反向 mode:'default', // 用户自定义模式 },parameter); _data = Object.assign({},_map); if(_mode[options.mode]){ for(var key in _mode[options.mode]){ _data[key] = [].concat(_mode[options.mode][key],_map[key]||[]); } } var from_selectors = getSelectors(options.text); var to_selectors = getSelectors(options.target); if(!to_selectors.length){ to_selectors = ['']; } // console.log('[selectors]',from_selectors,to_selectors); var result = []; //匹配结果 from_selectors.forEach(function(from){ to_selectors.forEach(function(to){ var data = mergeSelector(from,to,options.sex); // console.log('[data]',from,to,data); var ids = data?selector2id(data['selector'],data['sex']):null; // console.log('[ids]',data['selector'],data['sex'],ids); if(ids){ ids.forEach(function(id){ var temps = [id]; if(options.reverse){ temps = reverseId(id,data['sex']); } if(options.type=='chain'){ temps.forEach(function(id){ var item = getChainById(id); if(item){ result.push(item); } }); }else{ temps.forEach(function(id){ var items = getDataById(id); if(!items.length){ items = getDataById(data['sex']+','+id); } if(items.length){ result = result.concat(items); } }); } }); } }); }); return unique(result); }; // 获取数据表 relationship.data = _data; // 获取数据量 relationship.dataCount = Object.keys(_data).length; // 设置语言模式 relationship.setMode = function(sign,data){ _mode[sign] = Object.assign(_mode[sign]||{},data); }; return relationship; });