relationship/script/relationship.js
2022-03-16 08:43:26 +08:00

1674 lines
71 KiB
JavaScript

/*!
* 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();
}
}(typeof window !== 'undefined' ? window : 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:'$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:''
},
{//并列关系处理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,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,[f|m]':['祖父母','爷爷奶奶'],
'm,[f|m]':['外祖父母','外公外婆','姥姥姥爷'],
'[f|m]':['父母','爹娘','爹妈','爸妈','爸爸妈妈','父母亲','双亲','二亲','两亲','二老','高堂'],
'f,[f,xs|m,xb],s&o':['舅姑爸','姑舅爸'],
'f,[f,xs|m,xb],s&o,w':['舅姑姆','姑舅姆'],
'f,[f,xs|m,xb],s&l':['舅姑爸','姑舅爸'],
'f,[f,xs|m,xb],s&l,w':['舅姑婶','姑舅婶'],
'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]':['姨岳父母'],
'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]':['姨公婆'],
'[xb|xs]':['兄弟姐妹','同胞','同胞兄弟姐妹','手足'],
'[ob|os]':['哥哥姐姐'],
'[lb|ls]':['弟弟妹妹'],
'[ob|ob,w]':['哥哥嫂嫂'],
'[f,xb|m,xs],[s|d]':['从兄弟姐妹','从姐妹兄弟'],
'[f,xs|m,xb],[s|d]':['表兄弟姐妹','表姐妹兄弟','老表'],
'[f,xb|m,xs],s':['从兄弟'],
'[f,xb|m,xs],d':['从姐妹'],
'[f,xs|m,xb],s':['表兄弟'],
'[f,xs|m,xb],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':['姑舅妹','姑舅妹妹'],
'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],m':['亲家母','亲家婆','亲家姆','姻姆'],
'[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,xb':['族曾祖父'],
'f,f,f,xb,w':['族曾祖母'],
// 祖父辈
'f,f':['爷爷','祖父','奶爷','阿爷','阿公','二世祖'],
'f,m':['奶奶','祖母','阿嬷','阿嫲','嫲嫲'],
'm,f':['外公','外祖父','姥爷','阿公','客公','外爷','舅家爷','毑父','毑爷'],
'm,m':['外婆','外祖母','姥姥','姥娘','阿婆','阿嬷','阿嫲','嫲嫲','外奶','客婆','舅家婆','毑母','毑毑'],
'f,f,ob':['伯公','伯祖','伯翁','伯爷','伯祖父','伯老爷','大爷爷','大爷','大公','伯爷爷','大伯公','大阿爷','x伯公','x阿爷'],
'f,f,ob,w':['伯婆','伯祖母','伯奶奶','大奶奶','姆婆'],
'f,f,lb':['叔公','叔祖','叔翁','叔爷','叔祖父','叔老爷','小爷爷','叔爷爷','叔奶爷','x叔公'],
'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':['舅公','舅祖父','舅老爷','舅爷爷','舅爷','舅祖','舅奶爷','舅爹','太舅父','x舅老爷','x舅公'],
'f,m,xb,w':['舅婆','舅祖母','舅奶奶','舅奶','妗婆','妗奶','太舅母','x舅婆'],
'f,m,xs':['姨奶奶','祖姨母','姨祖母','姨婆','姨奶','x姨奶'],
'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':['外姑婆','姑姥姥','姑外祖母','外姑祖母','外祖姑母','外太姑母','x姑姥姥'],
'm,f,xs,h':['外姑公','姑姥爷','姑外祖父','外姑祖父','外祖姑父','外太姑父','外姑丈公','外丈公','x姑姥爷'],
'm,m,xb':['外舅公','外舅祖父','外太舅父','舅外祖父','外祖舅父','舅外公','舅外爷','舅姥爷','舅爹','舅公','x舅姥爷'],
'm,m,xb,w':['外舅婆','外舅祖母','外太舅母','舅外祖母','外祖舅母','舅外婆','舅外奶','舅姥姥','舅姥','舅婆','妗姥姥','妗姥娘','妗姥','外妗婆','x舅姥姥'],
'm,m,xs':['外姨婆','姨外祖母','姨外婆','姨外奶','姨姥姥','姨姥','外姨祖母','从母外祖母','x姨姥姥'],
'm,m,xs,h':['外姨公','姨外祖父','姨外公','姨外爷','姨姥爷','外姨祖父','从母外祖父','x姨姥爷'],
// 父辈
'f':['爸爸','父亲','老爸','阿爸','阿爹','老窦','老汉','老汉儿','老子','爸','父','爹','爹爹','爹地','爹啲','老爹','老爷子','一世祖'],
'm':['妈妈','母亲','阿妈','老母','老妈','老娘','老妈子','妈子','姆嬷','妈','母','娘','娘亲','妈咪'],
'f,ob':['伯父','伯伯','阿伯','大伯','大大','世父','大爹','大爸','x伯'],
'f,ob,w':['伯母','伯妈','伯娘','姆姆','姆','世母','大娘','大妈','x伯母','x妈'],
'f,lb':['叔叔','叔父','叔爸','叔爹','阿叔','仲父','季父','小叔','小爹','小爸','尕爸','幺爸','幺叔','细叔','满叔','叔','x叔'],
'f,lb,w':['婶婶','婶母','婶娘','婶妈','婶爹','阿婶','仲母','季母','小婶','小娘','小妈','尕婶','幺婶','细婶','满婶','小婶娘','婶子','婶儿','家婶','叔母','叔妈','叔娘','婶','x叔母','x婶'],
'f,os':['大姑','大姑妈','姑姊'],
'f,ls':['小姑','小姑妈','姑姐','姑妹','姑仔','尕娘','幺姑','老姑','细姑','满姑'],
'f,xs':['姑妈','姑母','姑姑','嬢嬢','娘娘','姑','x嬢嬢','x嬢','x姑妈','x姑'],
'f,xs,h':['姑丈','姑父','姑爸','姑爹','姑夫','姑婿','亘','x姑丈','x姑父'],
'm,ob':['大舅','舅父'],
'm,ob,w':['大舅妈','大妗'],
'm,lb':['小舅','舅仔','舅父仔','幺舅','老舅','细舅','满舅'],
'm,lb,w':['小舅妈','小妗','细妗'],
'm,xb':['舅舅','舅父','舅爸','舅爹','娘舅','母舅','舅','舅仔','阿舅','x舅'],
'm,xb,w':['舅妈','舅母','舅媳妇','妗','妗子','妗妗','妗妈','妗娘','妗母','阿妗','x舅妈'],
'm,os':['大姨','大姨妈'],
'm,os,h':['大姨父','大姨丈','大姨婿','大姨爸'],
'm,ls':['小姨','小姨妈','姨仔','幺姨','老姨','满姨','细姨'],
'm,ls,h':['小姨父','小姨丈','小姨婿','小姨爹'],
'm,xs':['姨妈','姨母','姨姨','姨娘','阿姨','姨','x姨','x姨妈'],
'm,xs,h':['姨丈','姨父','姨爸','姨爹','姨婿','姨郎','尹','x姨丈','x姨父'],
'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':['堂姨丈'],
// 同辈
'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,ob':['大伯子','大伯兄','夫兄','外兄'],
'h,ob,w':['大婶子','大伯兄姊','外兄嫂','伯嫂','大伯嫂','大伯妇','大伯娘','夫兄嫂'],
'h,lb':['小叔子','小叔弟','夫弟','外弟'],
'h,lb,w':['小婶子','小叔弟妹','外弟妇','叔妇','小叔妇','小婶','夫弟妇'],
'h,xb':['伯叔'],
'h,xb,w':['妯娌'],
'h,os':['大姑子','大姑姐','外姐','夫姐','大娘姑','婆姐','婆婆姐'],
'h,os,h':['大姑夫','外姐夫','大亘子','婆姐夫','婆婆姐夫'],
'h,ls':['小姑子','小姑妹','姑妹','外妹','夫妹','婆妹','婆婆妹'],
'h,ls,h':['小姑夫','外妹夫','小亘子','婆妹夫','婆婆妹夫'],
'h,xs':['夫姑'],
'h,xs,h':['姑夫'],
// 岳家
'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,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,os':['大姨子','大姨姐','妻姐','内姐'],
'w,os,h':['大姨夫','大姨姐夫','襟兄','大尹子'],
'w,ls':['小姨子','小姨妹','妻妹','内妹','小妹儿'],
'w,ls,h':['小姨夫','小姨妹夫','襟弟','小尹子'],
'w,xs':['妻姨'],
'w,xs,h':['连襟','连桥','姨夫','姨夫爷','一担挑','老挑','担儿挑','连襟儿','妻尹'],
// 兄弟
'ob':['哥哥','哥','兄','老哥','兄长','阿哥','大佬','胞哥','大哥','x哥'],
'ob,w':['嫂子','嫂','嫂嫂','哥嫂','兄嫂','兄妇','兄妻','大嫂','大嫂子','阿嫂','x嫂'],
'lb':['弟弟','弟','胞弟','老弟','阿弟','细佬','小弟','幺弟','细弟','满弟','x弟'],
'lb,w':['弟妹','弟媳','弟媳妇','弟妇','x弟妹'],
'xb':['兄弟','亲兄弟','同胞兄弟'],
'xb,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':['侄子','侄男','侄儿','阿侄','侄'],
// 姐妹
'os':['姐姐','姐','阿姊','胞姐','大姐','阿姐','家姐','x姐'],
'os,h':['姐夫','姐丈','姐婿','姐夫哥','胞姐夫','大姐夫','x姐夫'],
'ls':['妹妹','妹','胞妹','老妹','阿妹','小妹','幺妹','细妹','满妹','x妹'],
'ls,h':['妹夫','妹丈','妹婿','妹弟','胞妹夫','小妹夫','x妹夫'],
'xs':['姐妹','亲姐妹','同胞姐妹'],
'xs,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,d':['外甥女','外甥囡'],
// 堂表亲
'f,xb,s,s':['堂侄','堂侄子','堂侄儿','堂侄男','从父侄男','叔伯侄男','从父侄子','叔伯侄子','从子'],
'f,xb,s,s,w':['堂侄媳妇','堂侄妇','从父侄妇','叔伯侄妇'],
'f,xb,d,s':['堂外甥','堂甥男','从父甥男','叔伯甥男'],
'f,xb,d,s,w':['堂甥媳妇','堂甥妇','从父甥妇','叔伯甥妇'],
'm,xb,d,s':['姑舅儿子'],
'm,xb,d,d':['姑舅女儿'],
// 子辈
's':['儿子','男儿','息男','闺男','囝囝','囝男','小子','男亲','长子','次子','幼子','儿','仔','子','阿仔','仔仔','x儿子','一世孙'],
's,w':['儿媳','儿媳妇','新妇','心抱','息妇','x儿媳'],
's,s':['孙子','孙男','孙儿','大孙子','x孙子','二世孙'],
's,s,w':['孙媳妇','孙媳','孙妇','孙息妇','孙新妇','x孙媳'],
'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':['孙女','孙囡','大孙女','x孙女'],
's,d,h':['孙女婿','孙婿','孙息婿','x孙婿'],
'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':['女儿','千金','掌上明珠','息女','闺女','囡女','乖囡','囡囡','丫头','姑娘','女亲','长女','次女','幼女','女','阿女','女女','x女儿'],
'd,h':['女婿','姑爷','女婿子','女婿儿','儿婿','子婿','息婿','囝婿','x女婿'],
'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 = {
'{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,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':['侄'],
'h,xb':['叔侄','夫侄','外侄','婆家侄'],
'w,xb':['舅侄','妻侄','岳侄','岳家侄','丈人侄','内侄'],
'xs':['甥'],
'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,{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':['兄弟'],
'{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':['姐妹'],
'{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':['甥外孙婿'],
'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':['祖岳父',,'太?岳父','祖丈人','爷丈人','奶爷丈人'],
'm,f,{G1M}':['外祖岳父','太外?岳','外祖丈人','姥爷丈人'],
'm,f,{G1M},w':['外祖岳母','太外?岳母','外祖丈母','外祖丈母娘','姥丈母娘','姥丈母'],
'm,f,{G1W}':['外祖岳母',,'太外?岳母','外祖丈母','外祖丈母娘','姥丈母娘','姥丈母'],
'm,f,{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':['小姨夫','小姨妹夫','襟弟','姨弟','小姨弟','小尹子'],
'{X0},f,ob':['伯父','伯伯','伯'],
'{X0},f,ob,w':['伯母'],
'{X0},f,lb':['叔父','叔叔','叔'],
'{X0},f,lb,w':['叔母','婶'],
'{X0},f,xs':['姑母','姑姑','姑妈','姑'],
'{X0},f,xs,h':['姑父','姑爸','姑丈'],
'{X0},m,xb':['舅父','舅舅','舅爸','舅'],
'{X0},m,xb,w':['舅母','舅妈'],
'{X0},m,xs':['姨母','姨姨','姨妈','姨'],
'{X0},m,xs,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,w':['孙婿'],
'{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,w':['外孙婿'],
'{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},xb&o':['兄'],
'{M0},xb&o,w':['兄妇'],
'{M0},xb&l':['弟'],
'{M0},xb&l,w':['弟妇'],
'{M0},xb,s':['侄男'],
'{M0},xb,s,w':['侄妇'],
'{M0},xb,d':['侄女'],
'{M0},xb,d,h':['侄婿'],
'{M0},xs&o':['姊'],
'{M0},xs&o,h':['姊婿'],
'{M0},xs&l':['妹'],
'{M0},xs&l,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 result = [], hash = {};
var item;
for (var i = 0; (item = arr[i]) != null; i++) {
var temp = item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,''); //对特殊语法标识相互包含的行为去重
if (temp==item&&!hash[temp]){
hash[item] = true;
}
}
for (var i = 0; (item = arr[i]) != null; i++) {
var temp = item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,''); //对特殊语法标识相互包含的行为去重
if (temp!=item){
if(!hash[temp]){
if(result.indexOf(item)==-1){
result.push(item);
}
}
}else{
if(result.indexOf(item)==-1){
result.push(item);
}
}
}
return result;
}
// 中文获取选择器
function getSelectors(str){
str = str.replace(/[二|三|四|五|六|七|八|九|十]{1,2}/g,'x');
str = str.replace(/之/,'的').replace(/我的?(.+)/,'$1');
if(str.match(/[^娘婆岳亲]家的?/)){
str = str.replace(/家的?/,'的');
}
var lists = str.split('的');
var result = [];
var isMatch = true;
// 双向替换
var replaceMap = {
'哥':'兄',
'姐':'姊',
'侄':'姪',
'祖父':'王父',
'祖母':'王母',
'孙女婿':'孙婿',
'甥女婿':'甥婿',
'侄女婿':'侄婿',
'弟媳':'弟妇',
'孙媳妇':'孙妇',
'甥媳妇':'甥妇',
'侄媳妇':'侄妇',
};
// 含义扩展
var replaceFilter = {
'^表':['姑表','舅表'],
'^姻':['姑姻','姨姻','姊妹姻','女姻'],
'^眷':['叔眷','舅眷','兄弟眷','男眷'],
'^外甥':['甥'],
'^外表伯':['姑表伯外','舅表伯外'],
'^外表叔':['姑表叔外','舅表叔外'],
'^外表姑':['姑表姑外','舅表姑外'],
'^外表舅':['姑表舅外','舅表舅外'],
'^外表姨':['姑表姨外','舅表姨外'],
'祖$':['祖父','祖母'],
'孙$':['孙男','孙女'],
'甥$':['甥男','甥女'],
'侄$':['侄男','侄女'],
'外甥$':['甥'],
'嫂$':['兄妇'],
};
while(lists.length){
var name = lists.shift(); //当前匹配词
var items = []; //当前匹配词可能性
var keywords = [name];
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);
}
}
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);
}
});
}
};
getList(name);
// 是否存在该关系
keywords.forEach(function(name){
for(var i in _data){
if(_data[i].indexOf(name)>-1){
items.push(i);
}
}
});
// 同义词替换
if(!items.length){
for(var i in _data){
var value = _data[i];
keywords.forEach(function(r_name){
if(value.indexOf(r_name)>-1){
items.push(i);
}
});
}
}
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(/^,w/)){
sex = 1;
}else if(selector.match(/^,h/)){
sex = 0;
}
}
// console.log('[selector]',selector);
var getId = function(selector,sex){
if(selector.indexOf(',1')==-1&&selector.indexOf(',0')==-1){
selector = ','+sex+selector;
}
if(selector.match(/,[w0],w|,[h1],h/)){ //同志关系去除
return false;
}
var s='';
if(!hash[selector]){
hash[selector] = true;
var status = 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){
var arr = selector.split('#');
for(var j=0;j<arr.length;j++){
getId(arr[j]);
}
status=false;
break;
}
}
}while(s!=selector);
if(status){
if(selector.match(/,[w0],w|,[h1],h/)){ //同志关系去除
return false;
}
selector = selector.replace(/,[01]/,'').substr(1); //去前面逗号和性别信息
result.push(selector);
}
}
}
if(sex<0){
getId(selector,1);
getId(selector,0);
}else{
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');
items = getData(l);
var o = id.replace(/x/g,'o');
items = items.concat(getData(o));
}
}
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.lastIndexOf(','));
var id_arr = id.split(',').reverse();
var sid_arr = sid.split(',').reverse();
var arr = [];
for(var i=0;i<id_arr.length;i++){
arr.push(hash[id_arr[i]][sid_arr[i]]);
}
var g = 0;
var gMap = {'f':1,'m':1,'s':-1,'d':-1};
arr.forEach(function(r){
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]/,'');
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(/^,w/)||from.match(/^,1/)){
from_sex = 1;
}else if(from.match(/^,h/)||from.match(/^,0/)){
from_sex = 0;
}
if(to.match(/^,w/)||to.match(/^,1/)){
to_sex = 1;
}else if(to.match(/^,h/)||to.match(/^,0/)){
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 from_rids = [];
var to_rids = [];
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 = false;
['h,h','w,w','w,h','h,w'].forEach(function(pair){
if(newKey.indexOf(pair)>-1){
isFilter = true;
}
});
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]||[]);
}
// 配偶关系
var branch = {
'w':['内','岳','妻','丈人'],
'h':['外','夫'],
};
for(var key in _map){
if(key.indexOf('f')==0||key.indexOf('m')==0){
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){
_map[newKey].push(prefix+name);
});
});
}
}
}
_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);
for(var lang in _mode){
if(options.mode==lang){
for(var key in _mode[lang]){
_data[key] = [].concat(_mode[lang][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.type=='chain'){
if(options.reverse){
temps = reverseId(id,data['sex']);
}
temps.forEach(function(id){
var item = getChainById(id);
if(item){
result.push(item);
}
});
}else{
if(options.reverse){
temps = reverseId(id,data['sex']);
}
temps.forEach(function(id){
var items = getDataById(data['sex']+','+id);
if(!items.length){
items = getDataById(id);
}
if(items.length){
result = result.concat(items);
}
});
}
});
}
});
});
return unique(result);
};
// 获取数据量
relationship.dataCount = 0;
for(var i in _data){
relationship.dataCount++;
}
// 设置语言模式
relationship.setMode = function(sign,data){
if(typeof _mode[sign]=='undefined'){
_mode[sign] = {};
}
_mode[sign] = Object.assign(_mode[sign],data);
};
return relationship;
});