updated bug修复

This commit is contained in:
PASSER-BY 2022-09-06 22:00:35 +08:00
parent cd19e1888a
commit 59fd3eb5c4
8 changed files with 26 additions and 21 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -246,7 +246,7 @@ export default {
'w,{G1},d':['姨子'],
'w,{G1},d,h':['连襟','连桥'],
// 子辈及以下
'{G0},s':['男','男儿','儿','子'],
'{G0},s':['男','男儿','儿','子','儿子'],
'{G0},s,w':['媳妇','媳','妇'],
'{G0},s,s':['孙','孙男','孙子'],
'{G0},s,s,w':['孙妇'],

View File

@ -426,8 +426,12 @@ export default {
// 兄弟姐妹系
'ob':['哥哥','哥','胞兄','亲哥','老哥','依哥','阿哥','家兄','兄长','大佬','元兄','长兄','几哥'],
'ob,w':['嫂子','嫂','嫂嫂','阿嫂','家嫂','兄姊','兄嫂','兄妇','兄妻','几嫂'],
'ob,s':['侄子','兄子'],
'ob,d':['侄女','兄女'],
'lb':['弟弟','弟','胞弟','亲弟','老弟','阿弟','细佬','依弟','小弟','幺弟','细弟','满弟','幼弟','几弟'],
'lb,w':['弟妹','弟媳','弟媳妇','弟媳妇子','弟新妇','老弟嫂'],
'lb,s':['侄子','弟子'],
'lb,d':['侄女','弟女'],
'xb,s':['侄子','侄男','侄儿','侄儿子','侄','侄仔','阿侄'],
'xb,s,w':['侄媳妇','侄媳','侄嫂','侄妇'],
'xb,d':['侄女','侄囡','侄女儿','侄闺女'],

View File

@ -14,8 +14,8 @@ for(var key in _branch){
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){
if(!isFilter){
prefixList.forEach(function(prefix){
nameList.forEach(function(name){
if(name.indexOf('?')>-1){
newList.push(name.replace('?',prefix));
@ -32,6 +32,7 @@ for(var key in _branch){
for(var key in _main){
_map[key] = [].concat(_main[key],_map[key]||[]);
}
// 版权彩蛋
_map['o']=['passer-by.com','\u4f5c\u8005'];
// 配偶关系
var branch = {

View File

@ -68,12 +68,14 @@ var getGen = function(id){
var getOptimal = function(options){
var from = options['from'];
var to = options['to']
var sex = options['sex'];
var from_chain = options['from'].split(',');
var to_chain = options['to'].split(',');
for(var i=0;i<from_chain.length&&i<to_chain.length;i++){
if(from_chain[i]==to_chain[i]){
from = from_chain.slice(i+1).join(',');
to = to_chain.slice(i+1).join(',');
sex = from_chain[i].match(/^([fhs1](&[ol\d]+)?|[olx]b)(&[ol\d]+)?/)?1:0;
continue;
}else{
if(getGen(from_chain[i])==getGen(to_chain[i])&&from_chain[i].match(/^[xol][bs]|^[sd]/)){
@ -90,29 +92,25 @@ var getOptimal = function(options){
if(!isNaN(from_attr)&&!isNaN(to_attr)){
if(from_attr>to_attr){
from_chain[i] = from_chain[i].replace(/^[xol]b|^s/,'lb').replace(/^[xol]s|^d/,'ls');
from = from_chain.slice(i).join(',');
to = to_chain.slice(i+1).join(',');
}else if(from_attr<to_attr){
from_chain[i] = from_chain[i].replace(/^[xol]b|^s/,'ob').replace(/^[xol]s|^d/,'os');
from = from_chain.slice(i).join(',');
to = to_chain.slice(i+1).join(',');
}
}else if(!isNaN(from_attr)&&to_attr=='o'||from_attr=='l'&&!isNaN(to_attr)){
from_chain[i] = from_chain[i].replace(/^[xol]b|^s/,'lb').replace(/^[xol]s|^d/,'ls');
from = from_chain.slice(i).join(',');
to = to_chain.slice(i+1).join(',');
}else if(!isNaN(from_attr)&&to_attr=='l'||from_attr=='o'&&!isNaN(to_attr)){
from_chain[i] = from_chain[i].replace(/^[xol]b|^s/,'ob').replace(/^[xol]s|^d/,'os');
from = from_chain.slice(i).join(',');
to = to_chain.slice(i+1).join(',');
}
from = from_chain.slice(i).join(',');
to = to_chain.slice(i+1).join(',');
sex = to_chain[i].match(/^([fhs1](&[ol\d]+)?|[olx]b)(&[ol\d]+)?/)?1:0;
}
break;
}
}
return {
'from':from,
'to':to
'to':to,
'sex':sex
};
};
@ -173,7 +171,6 @@ export function getSelectors(str){
'祖$':['祖父'],
'嫂$':['兄妇'],
'女儿$':['女'],
'外甥$':['甥'],
};
while(lists.length){
var name = lists.shift(); //当前匹配词
@ -310,10 +307,12 @@ export function mergeSelector(param){
if(isOptimal){
var ops = getOptimal({
'from':from,
'to':to
'to':to,
'sex':my_sex
});
from = ops['from'];
to = ops['to'];
my_sex = ops['sex'];
}
}
var to_rids = to?reverseId(to,my_sex):[''];
@ -472,7 +471,7 @@ export function getItemsById(id){
if(_data[id]){
var item = '';
var gen = getGen(id);
if(gen<3){
if(gen<3&&!id.match(/[hw],/)){
_data[id].forEach(function(name){
if(!item&&name.indexOf('几')>-1){
item = name.replace('几',zh);

View File

@ -83,7 +83,7 @@ var prefix = {
'1,f,f,xb,s,s':['三从'],
'h,xb':['叔侄','叔伯'],
'w,xb':['舅侄'],
'xs':['甥'],
'xs':['甥','外甥'],
'0,xs':['从'],
'0,m,xs,d':['再从'],
'0,m,m,xs,d,d':['三从'],

View File

@ -3,7 +3,7 @@ var test = require('tape');
var relationship = require('..');
test('relationship.js show to be tested', function (t) {
// console.log('[test]',relationship({text:'大舅',target:'二舅的儿子'}));
t.deepEqual(relationship({text:'儿子的爸爸的妈妈',sex:1}),['妈妈']);
t.deepEqual(relationship({text:'爱人',sex:1}),['老婆']);
t.deepEqual(relationship({text:'爱人的爱人',sex:1}),['自己']);
@ -34,5 +34,6 @@ test('relationship.js show to be tested', function (t) {
t.deepEqual(relationship({text:'二舅妈',target:'大舅',type:'pair'}),['叔嫂']);
t.deepEqual(relationship({text:'二舅妈',target:'三舅'}),['二嫂']);
t.deepEqual(relationship({text:'爸爸的二爸'}),['二爷爷']);
t.deepEqual(relationship({text:'大舅',target:'二舅的儿子'}),['大伯']);
t.end();
});