updated 调整关系替换顺序,避免数据冗余
This commit is contained in:
parent
06669774b2
commit
0e2e7502ba
80
dist/relationship.js
vendored
80
dist/relationship.js
vendored
@ -24,6 +24,43 @@
|
|||||||
exp:/(,[ds],(.+),[ds])&[ol]/g,
|
exp:/(,[ds],(.+),[ds])&[ol]/g,
|
||||||
str:'$1'
|
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,
|
exp:/m,h/g,
|
||||||
@ -70,43 +107,6 @@
|
|||||||
exp:/^,[mf],d(.+)?$/,
|
exp:/^,[mf],d(.+)?$/,
|
||||||
str:',0$1#,xs$1'
|
str:',0$1#,xs$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:/,[ds]&o,ob/g,
|
exp:/,[ds]&o,ob/g,
|
||||||
@ -947,12 +947,12 @@
|
|||||||
s = selector;
|
s = selector;
|
||||||
for(var i in _filter){
|
for(var i in _filter){
|
||||||
var item = _filter[i];
|
var item = _filter[i];
|
||||||
selector = selector.replace(item['exp'],item['str']);
|
|
||||||
// console.log('filter#',item['exp'],selector);
|
// console.log('filter#',item['exp'],selector);
|
||||||
|
selector = selector.replace(item['exp'],item['str']);
|
||||||
if(selector.indexOf('#')>-1){
|
if(selector.indexOf('#')>-1){
|
||||||
var arr = selector.split('#');
|
var arr = selector.split('#');
|
||||||
for(var i=0;i<arr.length;i++){
|
for(var j=0;j<arr.length;j++){
|
||||||
getId(arr[i]);
|
getId(arr[j]);
|
||||||
}
|
}
|
||||||
status=false;
|
status=false;
|
||||||
break;
|
break;
|
||||||
|
2
dist/relationship.min.js
vendored
2
dist/relationship.min.js
vendored
File diff suppressed because one or more lines are too long
@ -81,7 +81,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script src="script/common.js"></script>
|
<script src="script/common.js"></script>
|
||||||
<script src="dist/relationship.min.js"></script>
|
<script src="script/relationship.js"></script>
|
||||||
<script>
|
<script>
|
||||||
(function(){
|
(function(){
|
||||||
var $type = document.getElementsByName('type');
|
var $type = document.getElementsByName('type');
|
||||||
|
@ -24,6 +24,43 @@
|
|||||||
exp:/(,[ds],(.+),[ds])&[ol]/g,
|
exp:/(,[ds],(.+),[ds])&[ol]/g,
|
||||||
str:'$1'
|
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,
|
exp:/m,h/g,
|
||||||
@ -70,43 +107,6 @@
|
|||||||
exp:/^,[mf],d(.+)?$/,
|
exp:/^,[mf],d(.+)?$/,
|
||||||
str:',0$1#,xs$1'
|
str:',0$1#,xs$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:/,[ds]&o,ob/g,
|
exp:/,[ds]&o,ob/g,
|
||||||
@ -947,12 +947,12 @@
|
|||||||
s = selector;
|
s = selector;
|
||||||
for(var i in _filter){
|
for(var i in _filter){
|
||||||
var item = _filter[i];
|
var item = _filter[i];
|
||||||
selector = selector.replace(item['exp'],item['str']);
|
|
||||||
// console.log('filter#',item['exp'],selector);
|
// console.log('filter#',item['exp'],selector);
|
||||||
|
selector = selector.replace(item['exp'],item['str']);
|
||||||
if(selector.indexOf('#')>-1){
|
if(selector.indexOf('#')>-1){
|
||||||
var arr = selector.split('#');
|
var arr = selector.split('#');
|
||||||
for(var i=0;i<arr.length;i++){
|
for(var j=0;j<arr.length;j++){
|
||||||
getId(arr[i]);
|
getId(arr[j]);
|
||||||
}
|
}
|
||||||
status=false;
|
status=false;
|
||||||
break;
|
break;
|
||||||
|
@ -13,6 +13,7 @@ test('relationship.js show to be tested', function (t) {
|
|||||||
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:0}),['老公']);
|
t.deepEqual(relationship({text:'老公的老婆的儿子的爸爸',sex:0}),['老公']);
|
||||||
|
t.deepEqual(relationship({text:'哥哥的弟弟的爸爸的儿子',sex:1}),['兄弟','自己']);
|
||||||
t.deepEqual(relationship({text:'爸爸的舅舅',sex:0,reverse:true}),['外甥孙女']);
|
t.deepEqual(relationship({text:'爸爸的舅舅',sex:0,reverse:true}),['外甥孙女']);
|
||||||
t.deepEqual(relationship({text:'舅爷爷',type:'chain'}),['爸爸的妈妈的兄弟']);
|
t.deepEqual(relationship({text:'舅爷爷',type:'chain'}),['爸爸的妈妈的兄弟']);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user