diff --git a/dist/relationship.js b/dist/relationship.js index 4317b25..8a318bb 100644 --- a/dist/relationship.js +++ b/dist/relationship.js @@ -11,16 +11,24 @@ }(typeof window !== 'undefined' ? window : this,function (){ //简写 var _filter = [ - /* 表亲 */ - {//表亲的关系 + /* 年龄 */ + {//有大有小,增加不确定性 exp:/^(.+)&o([^#]+)&l/g, str:'$1$2' }, - {//表亲的关系 + {//有大有小,增加不确定性 exp:/^(.+)&l([^#]+)&o/g, str:'$1$2' }, - {//表亲的关系 + {//有大有小,增加不确定性 + exp:/^(.+)?,o([sb])([^#]+)&l/g, + str:'$1,x$2$3' + }, + {//有大有小,增加不确定性 + exp:/^(.+)?,l([sb])([^#]+)&o/g, + str:'$1,x$2$3' + }, + {//隔代跨越,增加不确定性 exp:/(,[ds],(.+),[ds])&[ol]/g, str:'$1' }, @@ -2515,7 +2523,7 @@ }); return unique(result); }; - + relationship({'text':'弟弟的表哥'}); // 数据量 relationship.dataCount = 0; for(var i in _data){ diff --git a/dist/relationship.min.js b/dist/relationship.min.js index 4a99d4a..3cb3518 100644 --- a/dist/relationship.min.js +++ b/dist/relationship.min.js @@ -1,2 +1 @@ -!function(s,f){"object"==typeof module&&module.exports?module.exports=f():s.relationship=f()}("undefined"!=typeof window?window:this,function(){function s(s){s=s.replace(/[二|三|四|五|六|七|八|九|十]{1,2}/g,"x");for(var f=s.replace(/我的?/,"").replace(/家的?/,"的").split("的"),x=[""],d=!0,m={"哥":"兄","姐":"姊","媳妇":"妇","女婿":"婿","媳":"妇","夫":"婿","姊妹姻":"姻","女姻":"姻","兄弟眷":"眷","男眷":"眷"};f.length;){var b=f.shift(),w=[];for(var l in h){var o=h[l];if(o.indexOf(b)>-1)w.push(l);else{var e=b;for(var r in m)e=e.replace(r,m[r]);var t=o.map(function(s){for(var f in m)s=s.replace(f,m[f]);return s});t.indexOf(e)>-1&&w.push(l)}}w.length||(d=!1);var n=[];x.forEach(function(s){w.forEach(function(f){n.push(s+","+f)})}),x=n}return d?x:[]}function f(s,f){var x=[],d={};if(f<0?0==s.indexOf(",w")?s=",1"+s:0==s.indexOf(",h")&&(s=",0"+s):0==s.indexOf(",1")||0==s.indexOf(",0")||f>-1&&(s=","+f+s),s.match(/,[w0],w|,[h1],h/))return!1;var m=function(s){var f="";if(!d[s]){d[s]=!0;var b=!0;do{f=s;for(var h in w){var l=w[h];if(s=s.replace(l.exp,l.str),s.indexOf("#")>-1){for(var o=s.split("#"),e=0;e-1?o++:["s","d"].indexOf(s)>-1&&o--}),h.join(",")+(o?"":d)}return""}function m(s){for(var f=s.split(","),x=[],d=0;d-1?l.sex:h.sex;for(var e=f(l.selector,o),r=0;r儿子的大舅的二姑妈的七舅姥爷

4. 不限制方向祖辈孙辈跨度,反复查询:

舅妈的婆婆的外甥的姨妈的侄子的爷爷

+

5. 年龄推导:

+

哥哥的表哥 = 姑表哥、舅表哥

+

弟弟的表哥 = 姑表哥、姑表弟、舅表哥、舅表弟

diff --git a/script/relationship.js b/script/relationship.js index 4317b25..8a318bb 100644 --- a/script/relationship.js +++ b/script/relationship.js @@ -11,16 +11,24 @@ }(typeof window !== 'undefined' ? window : this,function (){ //简写 var _filter = [ - /* 表亲 */ - {//表亲的关系 + /* 年龄 */ + {//有大有小,增加不确定性 exp:/^(.+)&o([^#]+)&l/g, str:'$1$2' }, - {//表亲的关系 + {//有大有小,增加不确定性 exp:/^(.+)&l([^#]+)&o/g, str:'$1$2' }, - {//表亲的关系 + {//有大有小,增加不确定性 + exp:/^(.+)?,o([sb])([^#]+)&l/g, + str:'$1,x$2$3' + }, + {//有大有小,增加不确定性 + exp:/^(.+)?,l([sb])([^#]+)&o/g, + str:'$1,x$2$3' + }, + {//隔代跨越,增加不确定性 exp:/(,[ds],(.+),[ds])&[ol]/g, str:'$1' }, @@ -2515,7 +2523,7 @@ }); return unique(result); }; - + relationship({'text':'弟弟的表哥'}); // 数据量 relationship.dataCount = 0; for(var i in _data){ diff --git a/style/index.css b/style/index.css index 7016d24..35b22d2 100644 --- a/style/index.css +++ b/style/index.css @@ -258,10 +258,10 @@ a:hover{ line-height: 22px; } .mod-panel .intro p.q{ + margin-top: 10px; font-weight: bold; } .mod-panel .intro p.a{ - margin-bottom: 10px; color: #666; } diff --git a/tests/test.js b/tests/test.js index 939829f..07cb510 100644 --- a/tests/test.js +++ b/tests/test.js @@ -12,6 +12,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:1}),['兄弟','自己']); t.deepEqual(relationship({text:'爸爸的舅舅',sex:0,reverse:true}),['甥孙女']);