updated bue修复及功能添加
修复两者称谓性别判断s和xs逻辑问题,及关系链输出性别参数带出等问题; 添加合称功能
This commit is contained in:
parent
0a707df25b
commit
72d0eef45d
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
17
readme.md
17
readme.md
@ -35,7 +35,7 @@ var options = {
|
|||||||
text:'', //目标对象:目标对象的称谓汉字表达,称谓间用‘的’字分隔
|
text:'', //目标对象:目标对象的称谓汉字表达,称谓间用‘的’字分隔
|
||||||
target:'', //相对对象:相对对象的称谓汉字表达,称谓间用‘的’字分隔,空表示自己
|
target:'', //相对对象:相对对象的称谓汉字表达,称谓间用‘的’字分隔,空表示自己
|
||||||
sex:-1, //本人性别:0表示女性,1表示男性
|
sex:-1, //本人性别:0表示女性,1表示男性
|
||||||
type:'default', //转换类型:'default'计算称谓,'chain'计算关系
|
type:'default', //转换类型:'default'计算称谓,'chain'计算关系链,'pair'计算关系合称
|
||||||
reverse:false, //称呼方式:true对方称呼我,false我称呼对方
|
reverse:false, //称呼方式:true对方称呼我,false我称呼对方
|
||||||
mode:'default' //模式选择:使用setMode方法定制不同地区模式,在此选择自定义模式
|
mode:'default' //模式选择:使用setMode方法定制不同地区模式,在此选择自定义模式
|
||||||
};
|
};
|
||||||
@ -46,15 +46,24 @@ var options = {
|
|||||||
```js
|
```js
|
||||||
// 如:我应该叫外婆的哥哥什么?
|
// 如:我应该叫外婆的哥哥什么?
|
||||||
relationship({text:'妈妈的妈妈的哥哥'});
|
relationship({text:'妈妈的妈妈的哥哥'});
|
||||||
|
// => ['舅外公']
|
||||||
|
|
||||||
// 如:七舅姥爷应该叫我什么?
|
// 如:七舅姥爷应该叫我什么?
|
||||||
relationship({text:'七舅姥爷','reverse':true,'sex':1});
|
relationship({text:'七舅姥爷',reverse:true,sex:1});
|
||||||
|
// => ['甥外孙']
|
||||||
|
|
||||||
// 如:舅公和我是什么关系?
|
// 如:舅公和我具体是什么关系?
|
||||||
relationship({text:'舅公',sex:0,type:'chain'});
|
relationship({text:'舅公',type:'chain'});
|
||||||
|
// => ['爸爸的妈妈的兄弟', '妈妈的妈妈的兄弟', '老公的妈妈的兄弟']
|
||||||
|
|
||||||
// 如:舅妈如何称呼外婆?
|
// 如:舅妈如何称呼外婆?
|
||||||
relationship({text:'外婆',target:'舅妈',sex:1});
|
relationship({text:'外婆',target:'舅妈',sex:1});
|
||||||
|
// => ['婆婆']
|
||||||
|
|
||||||
|
// 如:外婆和奶奶之间是什么关系?
|
||||||
|
relationship({text:'外婆',target:'奶奶',type:'pair'});
|
||||||
|
// => ['儿女亲家']
|
||||||
|
|
||||||
```
|
```
|
||||||
2. 内部属性:获取当前数据表 `relationship.data`.
|
2. 内部属性:获取当前数据表 `relationship.data`.
|
||||||
|
|
||||||
|
@ -227,7 +227,7 @@ export default {
|
|||||||
'm,m,xs':['姨外婆','姨婆'],
|
'm,m,xs':['姨外婆','姨婆'],
|
||||||
'm,m,xs,h':['姨外公','姨公','外姨丈公','外丈公'],
|
'm,m,xs,h':['姨外公','姨公','外姨丈公','外丈公'],
|
||||||
// 父系
|
// 父系
|
||||||
'f':['爸爸','父亲','老爸','阿爸','阿父','阿爹','老窦','爹地','依爹','老爹','老汉','老爷子','老子','牙老子','爸','父','爹','老汉儿','牙老倌','爸比','爹爹','爹啲','一世祖'],
|
'f':['爸爸','父亲','老父亲','老爸','阿爸','阿父','阿爹','老窦','爹地','依爹','老爹','老汉','老爷子','老子','牙老子','爸','父','爹','老汉儿','牙老倌','爸比','爹爹','爹啲','一世祖'],
|
||||||
'f,ob':['伯父','伯伯','伯爸','伯爷','依伯','世父','大爷','大爸','大爸爸','大爹','伯儿','大伯','大大','阿伯','伯'],
|
'f,ob':['伯父','伯伯','伯爸','伯爷','依伯','世父','大爷','大爸','大爸爸','大爹','伯儿','大伯','大大','阿伯','伯'],
|
||||||
'f,ob,w':['伯母','伯妈','伯娘','依姆','世母','大娘','大妈','大妈妈','大嬷','伯妇','大嬷','大姆妈','伯姐','姆'],
|
'f,ob,w':['伯母','伯妈','伯娘','依姆','世母','大娘','大妈','大妈妈','大嬷','伯妇','大嬷','大姆妈','伯姐','姆'],
|
||||||
'f,lb':['叔叔','叔父','叔爸','叔爹','阿叔','叔儿','仲父','季父','叔仔','依叔','小叔','小爹','小爸','尕爸','幺爸','幺爹','幺叔','细叔','满叔','晚叔','叔'],
|
'f,lb':['叔叔','叔父','叔爸','叔爹','阿叔','叔儿','仲父','季父','叔仔','依叔','小叔','小爹','小爸','尕爸','幺爸','幺爹','幺叔','细叔','满叔','晚叔','叔'],
|
||||||
@ -304,7 +304,7 @@ export default {
|
|||||||
'f,f,f,f,xb,s,s,[s&o|s&l]':['族伯叔父','三从父','族父'],
|
'f,f,f,f,xb,s,s,[s&o|s&l]':['族伯叔父','三从父','族父'],
|
||||||
'f,f,f,f,xb,s,s,[s&o|s&l],w':['族伯叔母','三从母','族母'],
|
'f,f,f,f,xb,s,s,[s&o|s&l],w':['族伯叔母','三从母','族母'],
|
||||||
// 母系
|
// 母系
|
||||||
'm':['妈妈','母亲','老妈','阿妈','阿母','阿娘','老母','妈咪','依妈','老娘','老乸','老妈子','妈子','娘老子','妈','母','娘','阿毑','姆嬷','姆妈','娘亲'],
|
'm':['妈妈','母亲','老母亲','老妈','阿妈','阿母','阿娘','老母','妈咪','依妈','老娘','老乸','老妈子','妈子','娘老子','妈','母','娘','阿毑','姆嬷','姆妈','娘亲'],
|
||||||
'm,ob':['大舅','大舅舅','舅伯','元舅'],
|
'm,ob':['大舅','大舅舅','舅伯','元舅'],
|
||||||
'm,ob,w':['大舅妈','大妗','舅嫲'],
|
'm,ob,w':['大舅妈','大妗','舅嫲'],
|
||||||
'm,lb':['小舅','小舅舅','舅仔','舅父仔','幺舅','老舅','细舅','满舅','尕阿舅'],
|
'm,lb':['小舅','小舅舅','舅仔','舅父仔','幺舅','老舅','细舅','满舅','尕阿舅'],
|
||||||
|
256
src/method.js
256
src/method.js
@ -1,6 +1,7 @@
|
|||||||
// 通用方法
|
// 通用方法
|
||||||
import _filter from './filter';
|
import _filter from './filter';
|
||||||
import _map from './map';
|
import _map from './map';
|
||||||
|
import _pair from './pair';
|
||||||
|
|
||||||
var _mode = {}; // 模式数据
|
var _mode = {}; // 模式数据
|
||||||
var _data = Object.assign({},_map); // 最终数据
|
var _data = Object.assign({},_map); // 最终数据
|
||||||
@ -137,6 +138,71 @@ export function getSelectors(str){
|
|||||||
return isMatch?result:[];
|
return isMatch?result:[];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 合并选择器,查找两个对象之间的关系
|
||||||
|
export 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){
|
||||||
|
var selector = ','+id;
|
||||||
|
if(selector.match(/,([fhs1](&[ol])?|[olx]b)$/)){
|
||||||
|
toIsMale = true;
|
||||||
|
}
|
||||||
|
if(selector.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
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
// 选择器转ID
|
// 选择器转ID
|
||||||
export function selector2id(selector,sex){
|
export function selector2id(selector,sex){
|
||||||
var result = [];
|
var result = [];
|
||||||
@ -158,6 +224,9 @@ export function selector2id(selector,sex){
|
|||||||
}
|
}
|
||||||
// console.log('[selector]',selector);
|
// console.log('[selector]',selector);
|
||||||
var getId = function(selector,sex){
|
var getId = function(selector,sex){
|
||||||
|
if(!selector.match(/^,/)){
|
||||||
|
selector = ','+selector;
|
||||||
|
}
|
||||||
if(sex>-1&&selector.indexOf(',1')==-1&&selector.indexOf(',0')==-1){
|
if(sex>-1&&selector.indexOf(',1')==-1&&selector.indexOf(',0')==-1){
|
||||||
selector = ','+sex+selector;
|
selector = ','+sex+selector;
|
||||||
}
|
}
|
||||||
@ -190,55 +259,6 @@ export function selector2id(selector,sex){
|
|||||||
return unique(result);
|
return unique(result);
|
||||||
};
|
};
|
||||||
|
|
||||||
// 通过ID获取数据
|
|
||||||
export function getItemsById(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
|
// 逆转ID
|
||||||
export function reverseId(id,sex){
|
export function reverseId(id,sex){
|
||||||
var hash = {
|
var hash = {
|
||||||
@ -296,89 +316,103 @@ export function reverseId(id,sex){
|
|||||||
return [''];
|
return [''];
|
||||||
};
|
};
|
||||||
|
|
||||||
// 通过ID获取关系链条
|
// 通过ID获取关系称呼
|
||||||
|
export function getItemsById(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获取关系链
|
||||||
export function getChainById(id){
|
export function getChainById(id){
|
||||||
var arr = id.split(',');
|
var arr = id.split(',');
|
||||||
return arr.map(function(sign){
|
return arr.map(function(sign){
|
||||||
var key = sign.replace(/&[ol]/,'');
|
var key = sign.replace(/&[ol]/,'');
|
||||||
var data = Object.assign({},_data,{
|
var data = Object.assign({},_data,{
|
||||||
'xb':['兄弟'],
|
'xb':['兄弟'],
|
||||||
'xs':['姐妹'],
|
'xs':['姐妹']
|
||||||
});
|
});
|
||||||
return data[key][0];
|
return data[key][0];
|
||||||
}).join('的');
|
}).join('的');
|
||||||
};
|
};
|
||||||
|
|
||||||
// 合并选择器,查找两个对象之间的关系
|
// 通过ID获取关系合称
|
||||||
export function mergeSelector(from,to,my_sex){
|
export function getPairsByIds(id1,id2){
|
||||||
if(my_sex<0){
|
var result = [];
|
||||||
var to_sex = -1;
|
var result_r = [];
|
||||||
var from_sex = -1;
|
for(var key in _pair){
|
||||||
if(from.match(/^,[w1]/)){
|
var selectors = key.split('#');
|
||||||
from_sex = 1;
|
if(selectors.length>1){
|
||||||
}else if(from.match(/^,[h0]/)){
|
var list1 = selector2id(selectors[0]);
|
||||||
from_sex = 0;
|
var list2 = selector2id(selectors[1]);
|
||||||
}
|
var list1_r = list1.map(function(selector){
|
||||||
if(to.match(/^,[w1]/)){
|
return selector.replace(/&[o|l]/,'').replace(/[o|l]b/,'xb').replace(/[o|l]s/,'xs');
|
||||||
to_sex = 1;
|
});
|
||||||
}else if(to.match(/^,[h0]/)){
|
var list2_r = list2.map(function(selector){
|
||||||
to_sex = 0;
|
return selector.replace(/&[o|l]/,'').replace(/[o|l]b/,'xb').replace(/[o|l]s/,'xs');
|
||||||
}
|
});
|
||||||
if(from_sex==-1&&to_sex>-1){
|
if(list1.indexOf(id1)>-1&&list2.indexOf(id2)>-1||list1.indexOf(id2)>-1&&list2.indexOf(id1)>-1){
|
||||||
my_sex = to_sex;
|
result.push(_pair[key][0]);
|
||||||
}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)$/)){
|
if(list1_r.indexOf(id1)>-1&&list2_r.indexOf(id2)>-1||list1_r.indexOf(id2)>-1&&list2_r.indexOf(id1)>-1){
|
||||||
toIsFemale = true;
|
result_r.push(_pair[key][0]);
|
||||||
}
|
}
|
||||||
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);
|
if(!result.length){
|
||||||
var from_selector = from_ids.length>1?'['+from_ids.join('|')+']':from_ids[0];
|
result = result_r;
|
||||||
var to_selector = to_rids.length>1?'['+to_rids.join('|')+']':to_rids[0];
|
}
|
||||||
return {
|
return result;
|
||||||
'selector':(to?','+to_selector:'')+(from?','+from_selector:''),
|
|
||||||
'sex':sex
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// 设置模式
|
// 设置模式数据
|
||||||
export function setMode(sign,data){
|
export function setMode(sign,data){
|
||||||
_mode[sign] = Object.assign(_mode[sign]||{},data);
|
_mode[sign] = Object.assign(_mode[sign]||{},data);
|
||||||
};
|
};
|
||||||
|
|
||||||
// 获取指定模式数据
|
// 获取模式数据
|
||||||
export function getDataByMode(sign){
|
export function getDataByMode(sign){
|
||||||
var data = Object.assign({},_map);
|
var data = Object.assign({},_map);
|
||||||
if(sign&&_mode[sign]){
|
if(sign&&_mode[sign]){
|
||||||
|
49
src/pair.js
Normal file
49
src/pair.js
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
// 关系合称
|
||||||
|
export default {
|
||||||
|
'f#s':['父子'],
|
||||||
|
'm#s':['母子'],
|
||||||
|
'f#d':['父女'],
|
||||||
|
'm#d':['母女'],
|
||||||
|
'h#w':['夫妻'],
|
||||||
|
'ob#lb':['兄弟'],
|
||||||
|
'ob#ls':['兄妹'],
|
||||||
|
'os#ls':['姐妹'],
|
||||||
|
'os#lb':['姐弟'],
|
||||||
|
'w,f#d,h':['翁婿'],
|
||||||
|
'w,m#d,h':['母婿'],
|
||||||
|
'h,f#s,w':['翁媳'],
|
||||||
|
'h,m#s,w':['婆媳'],
|
||||||
|
'f,f#s,[s|d]':['公孙'],
|
||||||
|
'[f|m],[f|m]#[s|d],[s|d]':['祖孙'],
|
||||||
|
'f,xb#xb,[s|d]':['叔侄'],
|
||||||
|
'f,xb,w#h,xb,[s|d]':['叔侄'],
|
||||||
|
'f,xs#xb,[s|d]':['姑侄'],
|
||||||
|
'f,xs,h#w,xb,[s|d]':['姑侄'],
|
||||||
|
'm,xb#xs,[s|d]':['舅甥'],
|
||||||
|
'm,xb,w#h,xs,[s|d]':['舅甥'],
|
||||||
|
'm,xs#xs,[s|d]':['姨甥'],
|
||||||
|
'm,xs,h#w,xs,[s|d]':['姨甥'],
|
||||||
|
'f,xb,s&o#f,xb,s&l':['堂兄弟'],
|
||||||
|
'f,xb,s&o#f,xb,d&l':['堂兄妹'],
|
||||||
|
'f,xb,d&o#f,xb,s&l':['堂姐弟'],
|
||||||
|
'f,xb,d&o#f,xb,d&l':['堂姐妹'],
|
||||||
|
'f,xs,s&o#m,xb,s&l':['表兄弟'],
|
||||||
|
'm,xb,s&o#f,xs,s&l':['表兄弟'],
|
||||||
|
'f,xs,s&o#m,xb,d&l':['表兄妹'],
|
||||||
|
'm,xb,s&o#f,xs,d&l':['表兄妹'],
|
||||||
|
'f,xs,d&o#m,xb,d&l':['表姐妹'],
|
||||||
|
'm,xb,d&o#f,xs,d&l':['表姐妹'],
|
||||||
|
'f,xs,d&o#m,xb,s&l':['表姐弟'],
|
||||||
|
'm,xb,d&o#f,xs,s&l':['表姐弟'],
|
||||||
|
'm,xs,s&o#m,xs,s&l':['姨兄弟'],
|
||||||
|
'm,xs,s&o#m,xs,d&l':['姨兄妹'],
|
||||||
|
'm,xs,d&o#m,xs,s&l':['姨姐弟'],
|
||||||
|
'm,xs,d&o#m,xs,d&l':['姨姐妹'],
|
||||||
|
'h,ob,w#h,lb,w':['妯娌'],
|
||||||
|
'w,os,h#w,ob,h':['连襟','连桥'],
|
||||||
|
'xs,h#w,xb':['郎舅'],
|
||||||
|
'xs,h#w,xs':['郎姨'],
|
||||||
|
'xb,w#h,xb':['叔嫂'],
|
||||||
|
'xb,w#h,xs':['姑嫂'],
|
||||||
|
'd,h,[f|m]#s,w,[f|m]':['儿女亲家'],
|
||||||
|
}
|
@ -1,15 +1,15 @@
|
|||||||
import {
|
import {
|
||||||
unique,
|
unique,
|
||||||
getSelectors,
|
getSelectors,
|
||||||
selector2id,
|
|
||||||
getItemsById,
|
|
||||||
reverseId,
|
|
||||||
getChainById,
|
|
||||||
mergeSelector,
|
mergeSelector,
|
||||||
|
selector2id,
|
||||||
|
reverseId,
|
||||||
|
getItemsById,
|
||||||
|
getChainById,
|
||||||
|
getPairsByIds,
|
||||||
setMode,
|
setMode,
|
||||||
getDataByMode
|
getDataByMode
|
||||||
} from './method';
|
} from './method';
|
||||||
|
|
||||||
var _data = getDataByMode(); // 最终数据
|
var _data = getDataByMode(); // 最终数据
|
||||||
|
|
||||||
// 对外方法
|
// 对外方法
|
||||||
@ -51,17 +51,25 @@ var relationship = function (parameter){
|
|||||||
if(options.type=='chain'){
|
if(options.type=='chain'){
|
||||||
temps.forEach(function(id){
|
temps.forEach(function(id){
|
||||||
var item = getChainById(id);
|
var item = getChainById(id);
|
||||||
if(item){
|
if(data['sex']>-1&&_data[data['sex']+','+id]){
|
||||||
if(id.match(/^[^hw]/)){
|
if(data['sex']==0){
|
||||||
if(data['sex']==0){
|
item = '(女性)'+item;
|
||||||
item = '(女性)'+item;
|
}else if(data['sex']==1){
|
||||||
}else if(data['sex']==1){
|
item = '(男性)'+item;
|
||||||
item = '(男性)'+item;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if(item){
|
||||||
result.push(item);
|
result.push(item);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}else if(options.type=='pair'){
|
||||||
|
temps = reverseId(id,data['sex']);
|
||||||
|
temps.forEach(function(r_id){
|
||||||
|
var pairs = getPairsByIds(id,r_id);
|
||||||
|
if(pairs.length){
|
||||||
|
result = result.concat(pairs);
|
||||||
|
}
|
||||||
|
});
|
||||||
}else{
|
}else{
|
||||||
temps.forEach(function(id){
|
temps.forEach(function(id){
|
||||||
var items = getItemsById(id);
|
var items = getItemsById(id);
|
||||||
|
@ -27,5 +27,6 @@ test('relationship.js show to be tested', function (t) {
|
|||||||
t.deepEqual(relationship({text:'我',target:'爸爸'}),['儿子','女儿']);
|
t.deepEqual(relationship({text:'我',target:'爸爸'}),['儿子','女儿']);
|
||||||
t.deepEqual(relationship({text:'爱人',target:'娘家侄子'}),['姑丈']);
|
t.deepEqual(relationship({text:'爱人',target:'娘家侄子'}),['姑丈']);
|
||||||
t.deepEqual(relationship({text:'岳母的配偶的孩子的爸爸'}),['岳父']);
|
t.deepEqual(relationship({text:'岳母的配偶的孩子的爸爸'}),['岳父']);
|
||||||
|
t.deepEqual(relationship({text:'舅妈',target:'外婆',type:'pair'}),['婆媳']);
|
||||||
t.end();
|
t.end();
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user