updated 重写称呼中排序判断规则及修复“两姨爸”无法显示bug
This commit is contained in:
parent
2712db1301
commit
0d2702e6ab
2
dist/relationship.min.js
vendored
2
dist/relationship.min.js
vendored
File diff suppressed because one or more lines are too long
2
dist/relationship.zh-HK.min.js
vendored
2
dist/relationship.zh-HK.min.js
vendored
File diff suppressed because one or more lines are too long
@ -234,7 +234,7 @@
|
||||
<p class="q">3. 大小数字混合查询:</p>
|
||||
<p class="a">大哥的二姑妈的七舅姥爷 = 舅曾外祖父</p>
|
||||
<p class="a">二女婿的小姨 = 女姻姨妹</p>
|
||||
<p class="a">大佬的三舅公的次子 = 舅表伯父 / 舅表叔父</p>
|
||||
<p class="a">大佬的三叔的次子 = 堂哥 / 堂弟</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
|
41
readme.md
41
readme.md
@ -30,26 +30,7 @@ var relationship = require("relationship.js");
|
||||
|
||||
|
||||
## 二、使用
|
||||
|
||||
1. 内部属性:获取当前数据量 `relationship.dataCount`.
|
||||
|
||||
2. 内部方法:用户自定义模式 `relationship.setMode(mode_name,mode_data)`.
|
||||
|
||||
代码示例:
|
||||
|
||||
```js
|
||||
// 关系解析语法
|
||||
// 【关系链】f:父,m:母,h:夫,w:妻,s:子,d:女,xb:兄弟,ob:兄,lb:弟,xs:姐妹,os:姐,ls:妹
|
||||
// 【修饰符】 1:男性,0:女性,&o:年长,&l:年幼,#:隔断,[a|b]:并列
|
||||
relationship.setMode('northern',{
|
||||
'm,f':['姥爷'],
|
||||
'm,m':['姥姥'],
|
||||
'm,xb,s&o':['表哥'],
|
||||
'm,xb,s&l':['表弟'],
|
||||
});
|
||||
```
|
||||
|
||||
3. 通用方法: 唯一的计算方法 `relationship(options)`.
|
||||
1. 通用方法: 唯一的计算方法 `relationship(options)`.
|
||||
|
||||
参数`options`结构为:
|
||||
|
||||
@ -79,13 +60,31 @@ relationship({text:'舅公',sex:0,type:'chain'});
|
||||
// 如:舅妈如何称呼外婆?
|
||||
relationship({text:'外婆',target:'舅妈',sex:1});
|
||||
```
|
||||
2. 内部属性:获取当前数据表 `relationship.data`.
|
||||
|
||||
3. 内部属性:获取当前数据量 `relationship.dataCount`.
|
||||
|
||||
4. 内部方法:用户自定义模式 `relationship.setMode(mode_name,mode_data)`.
|
||||
|
||||
代码示例(可参考数据表格式对数据进行覆盖):
|
||||
|
||||
```js
|
||||
// 关系解析语法
|
||||
// 【关系链】f:父,m:母,h:夫,w:妻,s:子,d:女,xb:兄弟,ob:兄,lb:弟,xs:姐妹,os:姐,ls:妹
|
||||
// 【修饰符】 1:男性,0:女性,&o:年长,&l:年幼,#:隔断,[a|b]:并列
|
||||
relationship.setMode('northern',{
|
||||
'm,f':['姥爷'],
|
||||
'm,m':['姥姥'],
|
||||
'm,xb,s&o':['表哥'],
|
||||
'm,xb,s&l':['表弟'],
|
||||
});
|
||||
```
|
||||
|
||||
## 三、开发 & 贡献
|
||||
|
||||
```sh
|
||||
# 安装开发依赖
|
||||
npm install
|
||||
npm install
|
||||
|
||||
# build 模块: 将 relationship 打包压缩
|
||||
npm run build
|
||||
|
@ -255,10 +255,10 @@
|
||||
'[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|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]':['姑父母'],
|
||||
@ -377,53 +377,49 @@
|
||||
'f,m':['奶奶','祖母','阿奶','阿嬷','阿嫲','嫲嫲','婻婻','娭毑','嗯奶'],
|
||||
'm,f':['外公','外祖父','姥爷','阿公','客公','外爷','舅家爷','姥公','毑父','毑爹','毑公','毑爷','嘎公'],
|
||||
'm,m':['外婆','外祖母','姥姥','姥娘','姥婆','阿婆','阿嬷','阿嫲','嫲嫲','外奶','客婆','舅家婆','姥婆','毑母','毑婆','毑毑','嘎嘎'],
|
||||
'f,f,ob':['伯公','伯祖','伯翁','大爷爷','大爷','大公','大伯公','大阿爷','x伯公','x阿爷'],
|
||||
'f,f,ob':['伯公','伯祖','伯翁','大爷爷','大爷','大公','大伯公','大阿爷'],
|
||||
'f,f,ob,w':['伯婆','大奶奶','姆婆'],
|
||||
'f,f,lb':['叔公','叔祖','叔翁','小爷爷','晚公','x叔公'],
|
||||
'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':['舅爷爷','舅祖','舅爹','太舅父','x舅老爷','x舅公'],
|
||||
'f,m,xb,w':['舅奶奶','妗婆','妗奶','太舅母','x舅婆'],
|
||||
'f,m,xs':['姨奶奶','姨奶','x姨奶'],
|
||||
'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':['姑外婆','姑婆','x姑姥姥'],
|
||||
'm,f,xs,h':['姑外公','姑公','外姑丈公','外丈公','x姑姥爷'],
|
||||
'm,m,xb':['舅外公','舅公','x舅姥爷'],
|
||||
'm,m,xb,w':['舅外婆','舅婆','妗姥姥','妗姥娘','妗姥','外妗婆','x舅姥姥'],
|
||||
'm,m,xs':['姨外婆','姨婆','x姨姥姥'],
|
||||
'm,m,xs,h':['姨外公','姨公','外姨丈公','外丈公','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':['伯父','伯伯','阿伯','大伯','大伯爷','大伯伯','大大','世父','大爹','大爸','x伯'],
|
||||
'f,ob,w':['伯母','伯妈','伯娘','阿娘','姆姆','姆','世母','大娘','大妈','大妈妈','大姆妈','x伯母','x妈'],
|
||||
'f,lb':['叔叔','叔父','叔爸','叔爹','阿叔','叔儿','仲父','季父','叔仔','小叔','小爹','小爸','尕爸','幺爸','幺爹','幺叔','细叔','满叔','晚叔','叔','x叔'],
|
||||
'f,lb,w':['婶婶','婶母','婶娘','婶妈','婶爹','阿婶','仲母','季母','小婶','小娘','小妈','尕婶','幺婶','细婶','满婶','晚婆','小婶娘','婶子','婶儿','家婶','叔母','叔妈','叔娘','婶','x叔母','x婶'],
|
||||
'f,ob':['伯父','伯伯','阿伯','大伯','大伯爷','大伯伯','大大','世父','大爹','大爸'],
|
||||
'f,ob,w':['伯母','伯妈','伯娘','阿娘','姆姆','姆','世母','大娘','大妈','大妈妈','大姆妈'],
|
||||
'f,lb':['叔叔','叔父','叔爸','叔爹','阿叔','叔儿','仲父','季父','叔仔','小叔','小爹','小爸','尕爸','幺爸','幺爹','幺叔','细叔','满叔','晚叔','叔'],
|
||||
'f,lb,w':['婶婶','婶母','婶娘','婶妈','婶爹','阿婶','仲母','季母','小婶','小娘','小妈','尕婶','幺婶','细婶','满婶','晚婆','小婶娘','婶子','婶儿','家婶','叔母','叔妈','叔娘','婶'],
|
||||
'f,os':['大姑','大姑妈','姑姊'],
|
||||
'f,ls':['小姑','小姑妈','姑姐','姑妹','姑仔','尕娘','幺姑','幺姑姐','老姑','细姑','满姑'],
|
||||
'f,xs':['姑妈','姑母','姑姑','嬢嬢','娘娘','姑','阿姑','x嬢嬢','x嬢','x姑妈','x姑'],
|
||||
'f,xs,h':['姑丈','姑父','姑爸','姑爹','姑夫','姑婿','亘','x姑丈','x姑父'],
|
||||
'f,xs':['姑妈','姑母','姑姑','嬢嬢','娘娘','姑','阿姑'],
|
||||
'f,xs,h':['姑丈','姑父','姑爸','姑爹','姑夫','姑婿','亘'],
|
||||
'm,ob':['大舅','大舅舅','舅父'],
|
||||
'm,ob,w':['大舅妈','大妗'],
|
||||
'm,lb':['小舅','小舅舅','舅仔','舅父仔','幺舅','老舅','细舅','满舅','尕阿舅'],
|
||||
'm,lb,w':['小舅妈','小妗','细妗'],
|
||||
'm,xb':['舅舅','舅父','舅爸','舅爹','娘舅','母舅','舅','阿舅','x舅'],
|
||||
'm,xb,w':['舅妈','舅母','舅媳妇','妗','妗子','妗妗','妗妈','妗娘','妗母','阿妗','x舅妈'],
|
||||
'm,xb':['舅舅','舅父','舅爸','舅爹','娘舅','母舅','舅','阿舅'],
|
||||
'm,xb,w':['舅妈','舅母','舅媳妇','妗','妗子','妗妗','妗妈','妗娘','妗母','阿妗'],
|
||||
'm,os':['大姨','大姨妈'],
|
||||
'm,os,h':['大姨父','大姨丈','大姨婿','大姨爸'],
|
||||
'm,ls':['小姨','小姨妈','姨仔','幺姨','老姨','满姨','细姨','尕姨娘'],
|
||||
'm,ls,h':['小姨父','小姨丈','小姨婿','小姨爹'],
|
||||
'm,xs':['姨妈','姨母','姨姨','姨娘','阿姨','姨','x姨','x姨妈'],
|
||||
'm,xs,h':['姨丈','姨父','姨爸','姨爹','姨夫','姨婿','姨郎','尹','x姨丈','x姨父'],
|
||||
'm,xs':['姨妈','姨母','姨姨','姨娘','阿姨','姨'],
|
||||
'm,xs,h':['姨丈','姨父','姨爸','姨爹','姨夫','姨婿','姨郎','尹'],
|
||||
'f,f,xb,s&o':['堂伯'],
|
||||
'f,f,xb,s&o,w':['堂伯母'],
|
||||
'f,f,xb,s&l':['堂叔'],
|
||||
@ -527,10 +523,10 @@
|
||||
'w,xs,s':['姨甥','姨甥男','姨男','从男'],
|
||||
'w,xs,d':['姨甥女','姨女','从女'],
|
||||
// 兄弟
|
||||
'ob':['哥哥','哥','兄','老哥','兄长','阿哥','大佬','胞哥','大哥','x哥'],
|
||||
'ob,w':['嫂子','嫂','嫂嫂','哥嫂','兄姊','兄嫂','兄妇','兄妻','大嫂','大嫂子','阿嫂','x嫂'],
|
||||
'lb':['弟弟','弟','胞弟','老弟','阿弟','细佬','小弟','幺弟','细弟','满弟','x弟'],
|
||||
'lb,w':['弟妹','弟媳','弟媳妇','弟新妇','弟妇','x弟妹'],
|
||||
'ob':['哥哥','哥','兄','老哥','兄长','阿哥','大佬','胞哥'],
|
||||
'ob,w':['嫂子','嫂','嫂嫂','哥嫂','兄姊','兄嫂','兄妇','兄妻','阿嫂'],
|
||||
'lb':['弟弟','弟','胞弟','老弟','阿弟','细佬','小弟','幺弟','细弟','满弟'],
|
||||
'lb,w':['弟妹','弟媳','弟媳妇','弟新妇','弟妇'],
|
||||
'0,xb,w,xb,s':['舅眷舅男'],
|
||||
'1,xb,w,xb,s':['叔眷舅男'],
|
||||
'0,xb,w,xb,d':['舅眷舅女'],
|
||||
@ -544,10 +540,10 @@
|
||||
'xb,s,s':['侄孙'],
|
||||
'xb,d':['侄女','侄囡'],
|
||||
// 姐妹
|
||||
'os':['姐姐','姐','阿姊','胞姐','大姐','阿姐','家姐','x姐'],
|
||||
'os,h':['姐夫','姐丈','姐婿','姊兄','姐夫哥','胞姐夫','大姐夫','x姐夫'],
|
||||
'ls':['妹妹','妹','胞妹','老妹','阿妹','小妹','幺妹','细妹','满妹','x妹'],
|
||||
'ls,h':['妹夫','妹丈','妹婿','妹弟','妹夫子','胞妹夫','小妹夫','x妹夫'],
|
||||
'os':['姐姐','姐','阿姊','胞姐','阿姐','家姐'],
|
||||
'os,h':['姐夫','姐丈','姐婿','姊兄','姐夫哥','胞姐夫'],
|
||||
'ls':['妹妹','妹','胞妹','老妹','阿妹','小妹','幺妹','细妹','满妹'],
|
||||
'ls,h':['妹夫','妹丈','妹婿','妹弟','妹夫子','胞妹夫','小妹夫'],
|
||||
'0,xs,h,xb,s':['姨姻叔男'],
|
||||
'1,xs,h,xb,s':['姑姻叔男'],
|
||||
'0,xs,h,xb,d':['姨姻叔女'],
|
||||
@ -568,12 +564,12 @@
|
||||
'f,xb,d,s':['堂外甥','堂甥男','从父甥男','叔伯甥男'],
|
||||
'f,xb,d,s,w':['堂甥媳妇','堂甥妇','从父甥妇','叔伯甥妇'],
|
||||
// 子辈
|
||||
's':['儿子','男儿','息男','闺男','囝囝','囝男','小子','娃子','男亲','长子','次子','幼子','儿','仔','子','阿仔','仔仔','x儿子','一世孙'],
|
||||
's,w':['儿媳','儿媳妇','儿媳妇儿','新妇','心抱','子妇','息妇','息妇儿','x儿媳'],
|
||||
's':['儿子','男儿','息男','闺男','囝囝','囝男','小子','娃子','男亲','长子','次子','幼子','儿','仔','子','阿仔','仔仔','一世孙'],
|
||||
's,w':['儿媳','儿媳妇','儿媳妇儿','新妇','心抱','子妇','息妇','息妇儿'],
|
||||
's,w,f':['亲家公'],
|
||||
's,w,m':['亲家母'],
|
||||
's,s':['孙子','孙男','孙男儿','孙儿','大孙子','x孙子','二世孙'],
|
||||
's,s,w':['孙媳妇','孙媳','孙妇','孙息妇','孙新妇','x孙媳'],
|
||||
's,s':['孙子','孙男','孙男儿','孙儿','二世孙'],
|
||||
's,s,w':['孙媳妇','孙媳','孙妇','孙息妇','孙新妇'],
|
||||
's,s,s':['曾孙','曾孙男','重孙','重孙子','息仔','三世孙'],
|
||||
's,s,s,w':['曾孙妇','重孙媳妇'],
|
||||
's,s,s,s':['玄孙','元孙','膀孙','四世孙'],
|
||||
@ -625,8 +621,8 @@
|
||||
's,s,d,s,w':['玄外孙媳妇'],
|
||||
's,s,d,d':['玄外孙女'],
|
||||
's,s,d,d,h':['玄外孙女婿'],
|
||||
's,d':['孙女','孙女儿','孙囡','大孙女','x孙女'],
|
||||
's,d,h':['孙女婿','孙婿','孙息婿','x孙婿'],
|
||||
's,d':['孙女','孙女儿','孙囡'],
|
||||
's,d,h':['孙女婿','孙婿','孙息婿'],
|
||||
's,d,s':['曾外孙','外息仔'],
|
||||
's,d,s,w':['曾外孙媳妇'],
|
||||
's,d,s,s':['曾外曾孙'],
|
||||
@ -639,8 +635,8 @@
|
||||
's,d,d,s,w':['曾外曾外孙媳妇'],
|
||||
's,d,d,d':['曾外曾外孙女'],
|
||||
's,d,d,d,h':['曾外曾外孙女婿'],
|
||||
'd':['女儿','千金','掌上明珠','息女','闺女','囡女','乖囡','囡囡','囡嗯','丫头','姑娘','妮子','女亲','长女','次女','幼女','女','阿女','女女','x女儿'],
|
||||
'd,h':['女婿','姑爷','女婿子','女婿儿','儿婿','子婿','息婿','郎婿','息婿儿','囝婿','x女婿'],
|
||||
'd':['女儿','千金','掌上明珠','息女','闺女','囡女','乖囡','囡囡','囡嗯','丫头','姑娘','妮子','女亲','长女','次女','幼女','女','阿女','女女'],
|
||||
'd,h':['女婿','姑爷','女婿子','女婿儿','儿婿','子婿','息婿','郎婿','息婿儿','囝婿'],
|
||||
'd,h,f':['亲家公'],
|
||||
'd,h,m':['亲家母'],
|
||||
'd,s':['外孙','外孙子','外孙儿'],
|
||||
@ -1269,9 +1265,6 @@
|
||||
|
||||
// 中文获取选择器
|
||||
function getSelectors(str){
|
||||
if(!str.match(/^[三|四|五]从/)){
|
||||
str = str.replace(/[二|三|四|五|六|七|八|九|十]{1,2}/g,'x');
|
||||
}
|
||||
str = str.replace(/之/,'的').replace(/我的?(.+)/,'$1');
|
||||
if(str.match(/[^娘婆岳亲]家的?/)){
|
||||
str = str.replace(/家的?/,'的');
|
||||
@ -1318,6 +1311,7 @@
|
||||
while(lists.length){
|
||||
var name = lists.shift(); //当前匹配词
|
||||
var items = []; //当前匹配词可能性
|
||||
var r_items = [];
|
||||
var keywords = [name];
|
||||
var getList = function(name){
|
||||
for(var filter in replaceFilter){
|
||||
@ -1342,15 +1336,24 @@
|
||||
}
|
||||
};
|
||||
getList(name);
|
||||
// 是否存在该关系
|
||||
// 通过关键词找关系
|
||||
keywords.forEach(function(name){
|
||||
var r_name = name.replace(/^[大|小|二|三|四|五|六|七|八|九|十]/,'');
|
||||
for(var i in _data){
|
||||
if(_data[i].indexOf(name)>-1){
|
||||
items.push(i);
|
||||
}
|
||||
if(name!=r_name&&_data[i].indexOf(r_name)>-1){
|
||||
r_items.push(i);
|
||||
}
|
||||
}
|
||||
});
|
||||
// console.log('[keywords]',keywords);
|
||||
// 如找不到结果,再是否存在称呼的排行问题(不直接判断,因存在"大舅""三从父兄""三世祖"这样特俗含义的情况)
|
||||
if(!items.length){
|
||||
items = r_items;
|
||||
}
|
||||
// 完全匹配不到结果
|
||||
if(!items.length){
|
||||
isMatch = false;
|
||||
}
|
||||
@ -1637,8 +1640,8 @@
|
||||
}
|
||||
// 配偶关系
|
||||
var branch = {
|
||||
'w':['内','妻','岳','岳家','丈人'],
|
||||
'h':['外','夫','婆家'],
|
||||
'w':['妻','内','岳','岳家','丈人'],
|
||||
'h':['夫','外','婆家'],
|
||||
};
|
||||
var allName = [];
|
||||
for(var key in _map){
|
||||
@ -1665,7 +1668,6 @@
|
||||
}
|
||||
}
|
||||
_data = Object.assign({},_map);
|
||||
// console.log('[data]',_data);
|
||||
// 对外方法
|
||||
var relationship = function (parameter){
|
||||
var options = Object.assign({
|
||||
@ -1730,6 +1732,8 @@
|
||||
});
|
||||
return unique(result);
|
||||
};
|
||||
// 获取数据表
|
||||
relationship.data = _data;
|
||||
// 获取数据量
|
||||
relationship.dataCount = Object.keys(_data).length;
|
||||
// 设置语言模式
|
||||
|
@ -234,7 +234,7 @@
|
||||
<p class="q">3. 大小數字混合查詢:</p>
|
||||
<p class="a">大哥的二姑媽的七舅姥爺 = 舅曾外祖父</p>
|
||||
<p class="a">二女婿的小姨 = 女姻姨妹</p>
|
||||
<p class="a">大佬的三舅公的次子 = 舅表伯父 / 舅表叔父</p>
|
||||
<p class="a">大佬的三叔的次子 = 堂哥 / 堂弟</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
|
Loading…
x
Reference in New Issue
Block a user