Merge branch 'master' of github.com:mumuy/relationship

# Conflicts:
#	dist/relationship.min.js
#	dist/relationship.zh-HK.min.js
This commit is contained in:
mumuy
2022-03-18 10:04:55 +08:00
5 changed files with 26 additions and 68 deletions
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -10,7 +10,7 @@ gulp.task('mini', () => {
// .pipe(rename("zh-HK.html")) // .pipe(rename("zh-HK.html"))
// .pipe(gulp.dest("./")); // .pipe(gulp.dest("./"));
gulp.src('script/relationship.js') return gulp.src('script/relationship.js')
.pipe(uglify({ .pipe(uglify({
output:{ output:{
comments: function(node, comment){ comments: function(node, comment){
+1 -1
View File
@@ -257,7 +257,7 @@
</div> </div>
</div> </div>
</div> </div>
<script type="text/javascript" src="dist/relationship.min.js"></script> <script type="text/javascript" src="script/relationship.js"></script>
<script type="text/javascript"> <script type="text/javascript">
// 获取数量 // 获取数量
document.getElementById('count').innerText = relationship.dataCount; document.getElementById('count').innerText = relationship.dataCount;
+16 -58
View File
@@ -12,7 +12,7 @@
}else{ }else{
root.relationship = factory(); root.relationship = factory();
} }
}(typeof window !== 'undefined' ? window : this,function (){ }(this,function (){
/* /*
* 关系数据语法说明: * 关系数据语法说明:
* 【关系符】 f:父; m:母; h:夫; w:妻; s:子; d:女; xb:兄弟; ob:兄; lb:弟; xs:姐妹; os:姐; ls:妹 * 【关系符】 f:父; m:母; h:夫; w:妻; s:子; d:女; xb:兄弟; ob:兄; lb:弟; xs:姐妹; os:姐; ls:妹
@@ -272,6 +272,8 @@
'[f,xs|m,xb],d':['姑舅姊妹','舅姑姊妹'], '[f,xs|m,xb],d':['姑舅姊妹','舅姑姊妹'],
'[f,xs|m,xb],d&o':['姑舅姐','姑舅姐姐'], '[f,xs|m,xb],d&o':['姑舅姐','姑舅姐姐'],
'[f,xs|m,xb],d&l':['姑舅妹','姑舅妹妹'], '[f,xs|m,xb],d&l':['姑舅妹','姑舅妹妹'],
'[f,xs|m,xb],s,s':['姑舅儿子'],
'[f,xs|m,xb],s,d':['姑舅女儿'],
'xb,[s|d]':['侄子女','侄子侄女'], 'xb,[s|d]':['侄子女','侄子侄女'],
'xs,[s|d]':['甥子女','外甥子女'], 'xs,[s|d]':['甥子女','外甥子女'],
'[w|s|d]':['妻儿'], '[w|s|d]':['妻儿'],
@@ -509,8 +511,6 @@
'f,xb,s,s,w':['堂侄媳妇','堂侄妇','从父侄妇','叔伯侄妇'], 'f,xb,s,s,w':['堂侄媳妇','堂侄妇','从父侄妇','叔伯侄妇'],
'f,xb,d,s':['堂外甥','堂甥男','从父甥男','叔伯甥男'], 'f,xb,d,s':['堂外甥','堂甥男','从父甥男','叔伯甥男'],
'f,xb,d,s,w':['堂甥媳妇','堂甥妇','从父甥妇','叔伯甥妇'], 'f,xb,d,s,w':['堂甥媳妇','堂甥妇','从父甥妇','叔伯甥妇'],
'm,xb,d,s':['姑舅儿子'],
'm,xb,d,d':['姑舅女儿'],
// 子辈 // 子辈
's':['儿子','男儿','息男','闺男','囝囝','囝男','小子','男亲','长子','次子','幼子','儿','仔','子','阿仔','仔仔','x儿子','一世孙'], 's':['儿子','男儿','息男','闺男','囝囝','囝男','小子','男亲','长子','次子','幼子','儿','仔','子','阿仔','仔仔','x儿子','一世孙'],
's,w':['儿媳','儿媳妇','新妇','心抱','息妇','x儿媳'], 's,w':['儿媳','儿媳妇','新妇','心抱','息妇','x儿媳'],
@@ -1171,29 +1171,11 @@
// 数组去重 // 数组去重
function unique(arr){ function unique(arr){
var result = [], hash = {}; var sameList = arr.filter(item=>item==item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,''));
var item; return arr.filter(item=>{
for (var i = 0; (item = arr[i]) != null; i++) { var temp = item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,'');
var temp = item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,''); //对特殊语法标识相互包含的行为去重 return sameList.indexOf(item)>-1||item!=temp&&sameList.indexOf(temp)==-1;
if (temp==item&&!hash[temp]){ }).filter((item,idx,arr) => arr.indexOf(item) === idx);
hash[item] = true;
}
}
for (var i = 0; (item = arr[i]) != null; i++) {
var temp = item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,''); //对特殊语法标识相互包含的行为去重
if (temp!=item){
if(!hash[temp]){
if(result.indexOf(item)==-1){
result.push(item);
}
}
}else{
if(result.indexOf(item)==-1){
result.push(item);
}
}
}
return result;
} }
// 中文获取选择器 // 中文获取选择器
@@ -1274,17 +1256,6 @@
} }
} }
}); });
// 同义词替换
if(!items.length){
for(var i in _data){
var value = _data[i];
keywords.forEach(function(r_name){
if(value.indexOf(r_name)>-1){
items.push(i);
}
});
}
}
if(!items.length){ if(!items.length){
isMatch = false; isMatch = false;
} }
@@ -1316,7 +1287,7 @@
} }
// console.log('[selector]',selector); // console.log('[selector]',selector);
var getId = function(selector,sex){ var getId = function(selector,sex){
if(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;
} }
if(selector.match(/,[w0],w|,[h1],h/)){ //同志关系去除 if(selector.match(/,[w0],w|,[h1],h/)){ //同志关系去除
@@ -1325,7 +1296,6 @@
var s=''; var s='';
if(!hash[selector]){ if(!hash[selector]){
hash[selector] = true; hash[selector] = true;
var status = true;
do{ do{
s = selector; s = selector;
for(var i in _filter){ for(var i in _filter){
@@ -1333,16 +1303,11 @@
// console.log('[filter]',item['exp'],selector); // console.log('[filter]',item['exp'],selector);
selector = selector.replace(item['exp'],item['str']); selector = selector.replace(item['exp'],item['str']);
if(selector.indexOf('#')>-1){ if(selector.indexOf('#')>-1){
var arr = selector.split('#'); selector.split('#').forEach(getId);
for(var j=0;j<arr.length;j++){ return false;
getId(arr[j]);
}
status=false;
break;
} }
} }
}while(s!=selector); }while(s!=selector);
if(status){
if(selector.match(/,[w0],w|,[h1],h/)){ //同志关系去除 if(selector.match(/,[w0],w|,[h1],h/)){ //同志关系去除
return false; return false;
} }
@@ -1350,13 +1315,7 @@
result.push(selector); result.push(selector);
} }
} }
}
if(sex<0){
getId(selector,1);
getId(selector,0);
}else{
getId(selector,sex); getId(selector,sex);
}
return unique(result); return unique(result);
} }
@@ -1402,9 +1361,8 @@
// 缩小访问查找 // 缩小访问查找
if(!items.length){ if(!items.length){
var l = id.replace(/x/g,'l'); var l = id.replace(/x/g,'l');
items = getData(l);
var o = id.replace(/x/g,'o'); var o = id.replace(/x/g,'o');
items = items.concat(getData(o)); items = items.concat(getData(l),getData(o));
} }
} }
return items; return items;
@@ -1484,14 +1442,14 @@
if(my_sex<0){ if(my_sex<0){
var to_sex = -1; var to_sex = -1;
var from_sex = -1; var from_sex = -1;
if(from.match(/^,w/)||from.match(/^,1/)){ if(from.match(/^,[w1]/)){
from_sex = 1; from_sex = 1;
}else if(from.match(/^,h/)||from.match(/^,0/)){ }else if(from.match(/^,[h0]/)){
from_sex = 0; from_sex = 0;
} }
if(to.match(/^,w/)||to.match(/^,1/)){ if(to.match(/^,[w1]/)){
to_sex = 1; to_sex = 1;
}else if(to.match(/^,h/)||to.match(/^,0/)){ }else if(to.match(/^,[h0]/)){
to_sex = 0; to_sex = 0;
} }
if(from_sex==-1&&to_sex>-1){ if(from_sex==-1&&to_sex>-1){