updated 条件判断更加严谨

This commit is contained in:
PASSER-BY
2022-09-07 21:02:06 +08:00
parent 03062069ce
commit 97aa5f4384
7 changed files with 35 additions and 24 deletions
+2 -2
View File
File diff suppressed because one or more lines are too long
+2 -2
View File
File diff suppressed because one or more lines are too long
+6 -2
View File
@@ -670,8 +670,12 @@
var person = $person.value.trim(); var person = $person.value.trim();
var target = $target.value.trim(); var target = $target.value.trim();
if(person){ if(person){
var reverse = !$reverse[1].checked; if($reverse[0].checked){
var result = relationship({text:person,reverse:reverse,target:target,optimal:$optimal[0].checked}); var temp = target;
target = person;
person = temp;
}
var result = relationship({text:person,target:target,optimal:$optimal[0].checked});
if(result.length){ if(result.length){
$result.value = result.join('\n'); $result.value = result.join('\n');
}else{ }else{
+3 -3
View File
@@ -351,11 +351,11 @@ export default {
'h,m,xs':['姨婆母','姨婆','姨婆婆'], 'h,m,xs':['姨婆母','姨婆','姨婆婆'],
'h,m,xs,h':['姨公父','姨公','姨公公'], 'h,m,xs,h':['姨公父','姨公','姨公公'],
'h':['老公','丈夫','先生','夫','男人','新郎','爱爷','夫亲','夫君','官人','汉子','老头子','郎君','相公','夫婿','良人','老公仔','爱人','老伴','那口子','配偶','伴侣','伉俪','卿卿'], 'h':['老公','丈夫','先生','夫','男人','新郎','爱爷','夫亲','夫君','官人','汉子','老头子','郎君','相公','夫婿','良人','老公仔','爱人','老伴','那口子','配偶','伴侣','伉俪','卿卿'],
'h,ob':['大伯子','大伯儿','大伯兄','伯子','伯','大伯爷','伯爷子','婿伯'], 'h,ob':['大伯子','大伯儿','大伯兄','伯子','伯仔','伯兄','阿伯','大伯爷','伯爷子','婿伯'],
'h,ob,w':['大婶子','大婶儿','大叔兄妇','伯兄妇','伯嫂','伯妇','伯姆','姒妇','姒姆','大伯嫂','姆姆','大姆','大伯妇','大伯娘','姐妇','阿姆'], 'h,ob,w':['大婶子','大婶儿','大叔兄妇','伯兄妇','伯嫂','伯妇','伯姆','姒妇','姒姆','大伯嫂','姆姆','大姆','大伯妇','大伯娘','姐妇','阿姆'],
'h,lb':['小叔子','小叔儿','小叔弟','叔子','叔'], 'h,lb':['小叔子','小叔儿','小叔弟','叔子','叔仔','叔弟','阿叔'],
'h,lb,w':['小婶子','小婶儿','小叔弟妇','叔弟妇','叔嫂','叔妇','叔姆','娣妇','娣姆','小叔妇','婶婶','小婶','小叔妇','小婶婶'], 'h,lb,w':['小婶子','小婶儿','小叔弟妇','叔弟妇','叔嫂','叔妇','叔姆','娣妇','娣姆','小叔妇','婶婶','小婶','小叔妇','小婶婶'],
'h,xb':['伯叔'], 'h,[ob|lb]':['伯叔'],
'h,xb,w':['妯娌','娣姒','娣姒姊妹','婶子'], 'h,xb,w':['妯娌','娣姒','娣姒姊妹','婶子'],
'h,xb,s':['叔侄','叔侄男','叔男'], 'h,xb,s':['叔侄','叔侄男','叔男'],
'h,xb,d':['叔侄女','叔女'], 'h,xb,d':['叔侄女','叔女'],
+14 -12
View File
@@ -82,27 +82,29 @@ var getOptimal = function(options){
var from_match = from_chain[i].match(/&([ol\d]+)/); var from_match = from_chain[i].match(/&([ol\d]+)/);
var to_match = to_chain[i].match(/&([ol\d]+)/); var to_match = to_chain[i].match(/&([ol\d]+)/);
if(!from_match){ if(!from_match){
from_match = from_chain[i].match(/([xol])[bs]/); from_match = from_chain[i].match(/([ol])[bs]/);
} }
if(!to_match){ if(!to_match){
to_match = to_chain[i].match(/([xol])[bs]/); to_match = to_chain[i].match(/([ol])[bs]/);
} }
var from_attr = from_match?from_match[1]:''; var from_attr = from_match?from_match[1]:'';
var to_attr = to_match?to_match[1]:''; var to_attr = to_match?to_match[1]:'';
if(!isNaN(from_attr)&&!isNaN(to_attr)){ if(from_attr&&to_attr){
if(from_attr>to_attr){ 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');
}else if(+from_attr<+to_attr){
from_chain[i] = from_chain[i].replace(/^[xol]b|^s/,'ob').replace(/^[xol]s|^d/,'os');
}
}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_chain[i] = from_chain[i].replace(/^[xol]b|^s/,'lb').replace(/^[xol]s|^d/,'ls');
}else if(from_attr<to_attr){ }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_chain[i] = from_chain[i].replace(/^[xol]b|^s/,'ob').replace(/^[xol]s|^d/,'os');
} }
}else if(!isNaN(from_attr)&&to_attr=='o'||from_attr=='l'&&!isNaN(to_attr)){ from = from_chain.slice(i).join(',');
from_chain[i] = from_chain[i].replace(/^[xol]b|^s/,'lb').replace(/^[xol]s|^d/,'ls'); to = to_chain.slice(i+1).join(',');
}else if(!isNaN(from_attr)&&to_attr=='l'||from_attr=='o'&&!isNaN(to_attr)){ sex = to_chain[i].match(/^([fhs1](&[ol\d]+)?|[olx]b)(&[ol\d]+)?/)?1:0;
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(',');
sex = to_chain[i].match(/^([fhs1](&[ol\d]+)?|[olx]b)(&[ol\d]+)?/)?1:0;
} }
break; break;
} }
+2 -1
View File
@@ -3,7 +3,7 @@ var test = require('tape');
var relationship = require('..'); var relationship = require('..');
test('relationship.js show to be tested', function (t) { test('relationship.js show to be tested', function (t) {
// console.log('[test]',relationship({text:'舅',target:'二舅的儿子'})); // console.log('[test]',relationship({text:'舅',target:'二舅',type:'pair'}));
t.deepEqual(relationship({text:'儿子的爸爸的妈妈',sex:1}),['妈妈']); t.deepEqual(relationship({text:'儿子的爸爸的妈妈',sex:1}),['妈妈']);
t.deepEqual(relationship({text:'爱人',sex:1}),['老婆']); t.deepEqual(relationship({text:'爱人',sex:1}),['老婆']);
t.deepEqual(relationship({text:'爱人的爱人',sex:1}),['自己']); t.deepEqual(relationship({text:'爱人的爱人',sex:1}),['自己']);
@@ -32,6 +32,7 @@ test('relationship.js show to be tested', function (t) {
t.deepEqual(relationship({text:'爸爸的二哥'}),['二伯']); t.deepEqual(relationship({text:'爸爸的二哥'}),['二伯']);
t.deepEqual(relationship({text:'二舅妈',target:'二舅',type:'pair'}),['夫妻']); t.deepEqual(relationship({text:'二舅妈',target:'二舅',type:'pair'}),['夫妻']);
t.deepEqual(relationship({text:'二舅妈',target:'大舅',type:'pair'}),['叔嫂']); t.deepEqual(relationship({text:'二舅妈',target:'大舅',type:'pair'}),['叔嫂']);
t.deepEqual(relationship({text:'舅妈',target:'二舅',type:'pair'}),['叔嫂','夫妻']);
t.deepEqual(relationship({text:'二舅妈',target:'三舅'}),['二嫂']); t.deepEqual(relationship({text:'二舅妈',target:'三舅'}),['二嫂']);
t.deepEqual(relationship({text:'爸爸的二爸'}),['二爷爷']); t.deepEqual(relationship({text:'爸爸的二爸'}),['二爷爷']);
t.deepEqual(relationship({text:'大舅',target:'二舅的儿子'}),['大伯']); t.deepEqual(relationship({text:'大舅',target:'二舅的儿子'}),['大伯']);
+6 -2
View File
@@ -670,8 +670,12 @@
var person = $person.value.trim(); var person = $person.value.trim();
var target = $target.value.trim(); var target = $target.value.trim();
if(person){ if(person){
var reverse = !$reverse[1].checked; if($reverse[0].checked){
var result = relationship({text:person,reverse:reverse,target:target,optimal:$optimal[0].checked}); var temp = target;
target = person;
person = temp;
}
var result = relationship({text:person,target:target,optimal:$optimal[0].checked});
if(result.length){ if(result.length){
$result.value = result.join('\n'); $result.value = result.join('\n');
}else{ }else{