updated 变量声明修改

This commit is contained in:
PASSER-BY
2023-01-13 23:04:03 +08:00
parent 15bcd4ebca
commit 8ef4c3eb88
9 changed files with 141 additions and 141 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
+2 -2
View File
@@ -3,8 +3,8 @@
*/ */
import {modeData as _data} from './mode'; import {modeData as _data} from './mode';
var _cache = {}; let _cache = {};
for(var key in _data){ for(let key in _data){
_data[key].forEach(function(name){ _data[key].forEach(function(name){
if(typeof _cache[name]=='undefined'){ if(typeof _cache[name]=='undefined'){
_cache[name] = []; _cache[name] = [];
+44 -44
View File
@@ -9,7 +9,7 @@ import {modeData as _data} from './mode';
// 逆转ID // 逆转ID
export function reverseId(id,sex){ export function reverseId(id,sex){
var hash = { let hash = {
f:['d','s'], f:['d','s'],
m:['d','s'], m:['d','s'],
h:['w',''], h:['w',''],
@@ -23,7 +23,7 @@ export function reverseId(id,sex){
os:['ls','lb'], os:['ls','lb'],
xs:['xs','xb'] xs:['xs','xb']
}; };
var age = ''; let age = '';
if(id.match(/&o$/)){ if(id.match(/&o$/)){
age = '&l'; age = '&l';
}else if(id.match(/&l$/)){ }else if(id.match(/&l$/)){
@@ -39,15 +39,15 @@ export function reverseId(id,sex){
sex = 0; sex = 0;
} }
} }
var result = []; let result = [];
var doing = function(sex){ let doing = function(sex){
var sid = (','+sex+','+id).replace(/,[fhs]|,[olx]b/g,',1').replace(/,[mwd]|,[olx]s/g,',0'); let sid = (','+sex+','+id).replace(/,[fhs]|,[olx]b/g,',1').replace(/,[mwd]|,[olx]s/g,',0');
sid = sid.substring(0,sid.length-2); sid = sid.substring(0,sid.length-2);
var id_arr = id.split(',').reverse(); let id_arr = id.split(',').reverse();
var sid_arr = sid.split(',').reverse(); let sid_arr = sid.split(',').reverse();
var arr = id_arr.map((id,i)=>hash[id][sid_arr[i]]); let arr = id_arr.map((id,i)=>hash[id][sid_arr[i]]);
var r_id = arr.join(','); let r_id = arr.join(',');
var gen = getGenById(r_id); let gen = getGenById(r_id);
return r_id +(gen?'':age); return r_id +(gen?'':age);
}; };
if(sex<0){ if(sex<0){
@@ -63,20 +63,20 @@ export function reverseId(id,sex){
// ID列表去重 // ID列表去重
export function filterId(arr){ export function filterId(arr){
var sameList = arr.filter(item=>item==item.replace(/[ol](?=[s|b])/g,'x').replace(/&[ol]/,'')); let sameList = arr.filter(item=>item==item.replace(/[ol](?=[s|b])/g,'x').replace(/&[ol]/,''));
return arr.filter(item=>{ return arr.filter(item=>{
var temp = item.replace(/[ol](?=[s|b])/g,'x').replace(/&[ol]/,''); let temp = item.replace(/[ol](?=[s|b])/g,'x').replace(/&[ol]/,'');
return sameList.includes(item)||item!=temp&&!sameList.includes(temp); return sameList.includes(item)||item!=temp&&!sameList.includes(temp);
}).filter((item,idx,arr) => arr.indexOf(item) === idx); }).filter((item,idx,arr) => arr.indexOf(item) === idx);
}; };
// 通过ID获取世代数 // 通过ID获取世代数
export function getGenById(id){ export function getGenById(id){
var gMap = {'f':1,'m':1,'s':-1,'d':-1}; let gMap = {'f':1,'m':1,'s':-1,'d':-1};
var arr = id.split(','); let arr = id.split(',');
var gen = 0; let gen = 0;
arr.forEach(function(sub){ arr.forEach(function(sub){
var s = sub.replace(/&[ol\d]+/,''); let s = sub.replace(/&[ol\d]+/,'');
gen += gMap[s]||0; gen += gMap[s]||0;
}); });
return gen; return gen;
@@ -84,14 +84,14 @@ export function getGenById(id){
// 通过ID获取关系称呼 // 通过ID获取关系称呼
export function getItemsById(id){ export function getItemsById(id){
var items = []; let items = [];
var getData = function(key){ let getData = function(key){
var res = []; let res = [];
if(_data[key]){ if(_data[key]){
res.push(_data[key][0]); res.push(_data[key][0]);
}else{ }else{
var ids = []; let ids = [];
var k = key.replace(/[ol](b|s)/,'x$1'); let k = key.replace(/[ol](b|s)/,'x$1');
if(_data[k]){ if(_data[k]){
ids.push(k); ids.push(k);
} }
@@ -111,12 +111,12 @@ export function getItemsById(id){
}; };
// 对排序进行处理 // 对排序进行处理
if(id.match(/&([\d]+)(,[hw])?$/)){ if(id.match(/&([\d]+)(,[hw])?$/)){
var num = id.match(/&([\d]+)(,[hw])?$/)[1]; let num = id.match(/&([\d]+)(,[hw])?$/)[1];
var zh = number2zh(num); let zh = number2zh(num);
id = id.replace(/&\d+/g,''); id = id.replace(/&\d+/g,'');
if(_data[id]){ if(_data[id]){
var item = ''; let item = '';
var gen = getGenById(id); let gen = getGenById(id);
if(gen<3&&!id.match(/[hw],/)){ if(gen<3&&!id.match(/[hw],/)){
_data[id].forEach(function(name){ _data[id].forEach(function(name){
if(!item&&name.includes('几')){ if(!item&&name.includes('几')){
@@ -150,22 +150,22 @@ export function getItemsById(id){
} }
// 缩小访问查找 // 缩小访问查找
if(!items.length){ if(!items.length){
var l = id.replace(/x/g,'l'); let l = id.replace(/x/g,'l');
var o = id.replace(/x/g,'o'); let o = id.replace(/x/g,'o');
items = items.concat(getData(o),getData(l)); items = items.concat(getData(o),getData(l));
} }
return items; return items;
}; };
// 通过ID获取关系链 // 通过ID获取关系链
var data = Object.assign({},_data,{ let data = Object.assign({},_data,{
'xb':['兄弟'], 'xb':['兄弟'],
'xs':['姐妹'] 'xs':['姐妹']
}); });
export function getChainById(id,sex){ export function getChainById(id,sex){
var arr = id.split(','); let arr = id.split(',');
var item = arr.map(function(sign){ let item = arr.map(function(sign){
var key = sign.replace(/&[ol\d]+/,''); let key = sign.replace(/&[ol\d]+/,'');
return data[key][0]; return data[key][0];
}).join('的'); }).join('的');
if(sex&&sex>-1&&data[sex+','+id]){ if(sex&&sex>-1&&data[sex+','+id]){
@@ -180,24 +180,24 @@ export function getChainById(id,sex){
// 通过ID获取关系合称 // 通过ID获取关系合称
export function getPairsById(id1,id2){ export function getPairsById(id1,id2){
var result = []; let result = [];
var result_x = []; let result_x = [];
var result_r = []; let result_r = [];
id1 = id1.replace(/&\d+/,''); id1 = id1.replace(/&\d+/,'');
id2 = id2.replace(/&\d+/,''); id2 = id2.replace(/&\d+/,'');
var id1_x = id1.replace(/([ol])([bs])/,'x$2'); let id1_x = id1.replace(/([ol])([bs])/,'x$2');
var id2_x = id2.replace(/([ol])([bs])/,'x$2'); let id2_x = id2.replace(/([ol])([bs])/,'x$2');
var id1_r = id1.replace(/&[ol]/,''); let id1_r = id1.replace(/&[ol]/,'');
var id2_r = id2.replace(/&[ol]/,''); let id2_r = id2.replace(/&[ol]/,'');
for(var key in _pair){ for(let key in _pair){
var selectors = key.split('#'); let selectors = key.split('#');
if(selectors.length>1){ if(selectors.length>1){
var list1 = selector2id(selectors[0]); let list1 = selector2id(selectors[0]);
var list2 = selector2id(selectors[1]); let list2 = selector2id(selectors[1]);
var list1_r = list1.map(function(selector){ let list1_r = list1.map(function(selector){
return selector.replace(/&[ol\d]+/,'').replace(/([ol])([bs])/,'x$2'); return selector.replace(/&[ol\d]+/,'').replace(/([ol])([bs])/,'x$2');
}); });
var list2_r = list2.map(function(selector){ let list2_r = list2.map(function(selector){
return selector.replace(/&[ol\d]+/,'').replace(/([ol])([bs])/,'x$2'); return selector.replace(/&[ol\d]+/,'').replace(/([ol])([bs])/,'x$2');
}); });
if(list1.includes(id1)&&list2.includes(id2)||list1.includes(id2)&&list2.includes(id1)){ if(list1.includes(id1)&&list2.includes(id2)||list1.includes(id2)&&list2.includes(id1)){
+26 -26
View File
@@ -10,17 +10,17 @@ import {
expandSelector expandSelector
} from './selector'; } from './selector';
var _map = Object.assign({},_multipie); let _map = Object.assign({},_multipie);
var getMap = function(prefixMap,branch){ let getMap = function(prefixMap,branch){
var map = {}; let map = {};
for(var key in branch){ for(let key in branch){
var tag = key.match(/\{.+?\}/)[0]; let tag = key.match(/\{.+?\}/)[0];
var nameList = branch[key]; let nameList = branch[key];
for(var k in prefixMap[tag]){ for(let k in prefixMap[tag]){
var prefixList = prefixMap[tag][k]; let prefixList = prefixMap[tag][k];
var newKey = key.replace(tag,k); let newKey = key.replace(tag,k);
var isFilter = ['h,h','w,w','w,h','h,w'].some(pair=>(newKey.includes(pair))); let isFilter = ['h,h','w,w','w,h','h,w'].some(pair=>(newKey.includes(pair)));
var newList = []; let newList = [];
if(!isFilter){ if(!isFilter){
prefixList.forEach(function(prefix){ prefixList.forEach(function(prefix){
nameList.forEach(function(name){ nameList.forEach(function(name){
@@ -38,19 +38,19 @@ var getMap = function(prefixMap,branch){
return map; return map;
}; };
// 分支前缀处理 // 分支前缀处理
var prefixMap1 = {}; let prefixMap1 = {};
for(var key in _prefix){ for(let key in _prefix){
prefixMap1[key] = {}; prefixMap1[key] = {};
for(var selector in _prefix[key]){ for(let selector in _prefix[key]){
if(selector.indexOf(']')==-1){ if(selector.indexOf(']')==-1){
prefixMap1[key][selector] = _prefix[key][selector]; prefixMap1[key][selector] = _prefix[key][selector];
} }
} }
} }
var prefixMap2 = {}; let prefixMap2 = {};
for(var key in _prefix){ for(let key in _prefix){
prefixMap2[key] = {}; prefixMap2[key] = {};
for(var selector in _prefix[key]){ for(let selector in _prefix[key]){
if(selector.indexOf(']')>-1){ if(selector.indexOf(']')>-1){
expandSelector(selector).forEach(function(s){ expandSelector(selector).forEach(function(s){
prefixMap2[key][s] = _prefix[key][selector]; prefixMap2[key][s] = _prefix[key][selector];
@@ -60,7 +60,7 @@ for(var key in _prefix){
} }
_map = Object.assign({},_map,getMap(prefixMap1,_branch),getMap(prefixMap2,_branch)); _map = Object.assign({},_map,getMap(prefixMap1,_branch),getMap(prefixMap2,_branch));
// 主要关系 // 主要关系
for(var key in _main){ for(let key in _main){
_map[key] = [].concat(_main[key],_map[key]||[]); _map[key] = [].concat(_main[key],_map[key]||[]);
} }
@@ -68,26 +68,26 @@ for(var key in _main){
_map['o']=['passer-by.com','\u4f5c\u8005']; _map['o']=['passer-by.com','\u4f5c\u8005'];
// 配偶关系 // 配偶关系
var branch = { const branch = {
'w':['妻','内','岳','岳家','丈人'], 'w':['妻','内','岳','岳家','丈人'],
'h':['夫','外','公','婆家','婆婆'], 'h':['夫','外','公','婆家','婆婆'],
}; };
var nameSet = new Set(Object.values(_map).flat()); let nameSet = new Set(Object.values(_map).flat());
for(var key in _map){ for(let key in _map){
if(key.match(/^[fm]/)||key.match(/^[olx][bs]$|^[olx][bs],[^mf]/)){ // 只对长辈或者兄弟辈匹配 if(key.match(/^[fm]/)||key.match(/^[olx][bs]$|^[olx][bs],[^mf]/)){ // 只对长辈或者兄弟辈匹配
for(var k in branch){ for(let k in branch){
var newKey = k+','+key; let newKey = k+','+key;
if(_map[newKey.replace(/,[ol]([sb])(,[wh])?$/,',x$1$2').replace(/(,[sd])&[ol](,[wh])?$/,'$1$2')]){ // 不扩大解释年龄 if(_map[newKey.replace(/,[ol]([sb])(,[wh])?$/,',x$1$2').replace(/(,[sd])&[ol](,[wh])?$/,'$1$2')]){ // 不扩大解释年龄
continue; continue;
} }
if(!_map[newKey]){ if(!_map[newKey]){
_map[newKey] = []; _map[newKey] = [];
} }
var prefixList = branch[k]; let prefixList = branch[k];
var nameList = _map[key]; let nameList = _map[key];
prefixList.forEach(function(prefix){ prefixList.forEach(function(prefix){
nameList.forEach(function(name){ nameList.forEach(function(name){
var newName = prefix+name; let newName = prefix+name;
if(!nameSet.has(newName)){ // 配偶组合的称呼不得已原有称呼冲突(如:妻舅!=妻子的舅舅;外舅公!=老公的舅公) if(!nameSet.has(newName)){ // 配偶组合的称呼不得已原有称呼冲突(如:妻舅!=妻子的舅舅;外舅公!=老公的舅公)
_map[newKey].push(newName); _map[newKey].push(newName);
} }
+3 -3
View File
@@ -3,8 +3,8 @@
*/ */
import _map from './map'; import _map from './map';
var _mode = {}; // 模式缓存 let _mode = {}; // 模式缓存
var _data = Object.assign({},_map); // 最终数据 let _data = Object.assign({},_map); // 最终数据
// 设置模式数据 // 设置模式数据
export function setModeData(sign,data){ export function setModeData(sign,data){
@@ -15,7 +15,7 @@ export function setModeData(sign,data){
export function getModeData(sign){ export function getModeData(sign){
_data = Object.assign({},_map); _data = Object.assign({},_map);
if(sign&&_mode[sign]){ if(sign&&_mode[sign]){
for(var key in _mode[sign]){ for(let key in _mode[sign]){
_data[key] = [].concat(_mode[sign][key],_map[key]||[]); _data[key] = [].concat(_mode[sign][key],_map[key]||[]);
} }
} }
+2 -2
View File
@@ -4,8 +4,8 @@
import _expression from './rule/expression'; import _expression from './rule/expression';
export function getOptions(text){ export function getOptions(text){
for(var item of _expression){ for(let item of _expression){
var match = text.match(item['exp']); let match = text.match(item['exp']);
if(match){ if(match){
return item['opt'](match); return item['opt'](match);
} }
+54 -54
View File
@@ -10,11 +10,11 @@ import {reverseId,filterId,getGenById} from './id';
import _cache from './cache'; import _cache from './cache';
// 获得最简 // 获得最简
var getOptimal = function(options){ let getOptimal = function(options){
var {from,to,sex} = options; let {from,to,sex} = options;
var from_chain = options['from'].split(','); let from_chain = options['from'].split(',');
var to_chain = options['to'].split(','); let to_chain = options['to'].split(',');
for(var i=0;i<from_chain.length&&i<to_chain.length;i++){ for(let i=0;i<from_chain.length&&i<to_chain.length;i++){
if(from_chain[i]==to_chain[i]){ if(from_chain[i]==to_chain[i]){
from = from_chain.slice(i+1).join(','); from = from_chain.slice(i+1).join(',');
to = to_chain.slice(i+1).join(','); to = to_chain.slice(i+1).join(',');
@@ -22,21 +22,21 @@ var getOptimal = function(options){
continue; continue;
}else{ }else{
if(getGenById(from_chain[i])==getGenById(to_chain[i])&&from_chain[i].match(/^[xol][bs]|^[sd]/)&&to_chain[i].match(/^[xol][bs]|^[sd]/)){ if(getGenById(from_chain[i])==getGenById(to_chain[i])&&from_chain[i].match(/^[xol][bs]|^[sd]/)&&to_chain[i].match(/^[xol][bs]|^[sd]/)){
var form_type = from_chain[i].replace(/&([ol\d]+)/,'').replace(/^[xol]([bs])/,'$1'); let form_type = from_chain[i].replace(/&([ol\d]+)/,'').replace(/^[xol]([bs])/,'$1');
var to_type = to_chain[i].replace(/&([ol\d]+)/,'').replace(/^[xol]([bs])/,'$1'); let to_type = to_chain[i].replace(/&([ol\d]+)/,'').replace(/^[xol]([bs])/,'$1');
if(form_type!=to_type){ if(form_type!=to_type){
break; break;
} }
var from_match = from_chain[i].match(/&([ol\d]+)/); let from_match = from_chain[i].match(/&([ol\d]+)/);
var to_match = to_chain[i].match(/&([ol\d]+)/); let to_match = to_chain[i].match(/&([ol\d]+)/);
if(!from_match){ if(!from_match){
from_match = from_chain[i].match(/([ol])[bs]/); from_match = from_chain[i].match(/([ol])[bs]/);
} }
if(!to_match){ if(!to_match){
to_match = to_chain[i].match(/([ol])[bs]/); to_match = to_chain[i].match(/([ol])[bs]/);
} }
var from_attr = from_match?from_match[1]:''; let from_attr = from_match?from_match[1]:'';
var to_attr = to_match?to_match[1]:''; let to_attr = to_match?to_match[1]:'';
if(from_attr&&to_attr){ if(from_attr&&to_attr){
if(!isNaN(from_attr)&&!isNaN(to_attr)){ if(!isNaN(from_attr)&&!isNaN(to_attr)){
if(+from_attr>+to_attr){ if(+from_attr>+to_attr){
@@ -87,21 +87,21 @@ export function getSelectors(str){
str = str.replace(/(伯|叔)+(父|母)?家的?(哥|姐|弟|妹)+/,'堂$3').replace(/(伯|叔)+(父|母)?家的?/,'堂'); str = str.replace(/(伯|叔)+(父|母)?家的?(哥|姐|弟|妹)+/,'堂$3').replace(/(伯|叔)+(父|母)?家的?/,'堂');
str = str.replace(/姨+(爸|父|丈|妈|母)?家的?(哥|姐|弟|妹)+/,'姨$2').replace(/姨+(爸|父|丈|妈|母)?家的?/,'姨'); str = str.replace(/姨+(爸|父|丈|妈|母)?家的?(哥|姐|弟|妹)+/,'姨$2').replace(/姨+(爸|父|丈|妈|母)?家的?/,'姨');
var lists = str.split('的'); let lists = str.split('的');
var result = []; let result = [];
var isMatch = true; let isMatch = true;
while(lists.length){ while(lists.length){
var name = lists.shift(); //当前匹配词 let name = lists.shift(); //当前匹配词
var items = []; //当前匹配词可能性 let items = []; //当前匹配词可能性
var x_items = []; let x_items = [];
var r_items = []; let r_items = [];
var i_items = []; let i_items = [];
var keywords = [name]; let keywords = [name];
var getList = function(name){ let getList = function(name){
// 词义扩展 // 词义扩展
_replace.forEach(item => { _replace.forEach(item => {
item['arr'].forEach(word =>{ item['arr'].forEach(word =>{
var name1 = name.replace(item['exp'],word); let name1 = name.replace(item['exp'],word);
if(name1!=name){ if(name1!=name){
keywords.push(name1); keywords.push(name1);
getList(name1); getList(name1);
@@ -109,9 +109,9 @@ export function getSelectors(str){
}); });
}); });
// 同义词替换 // 同义词替换
for(var word in _similar){ for(let word in _similar){
var name1 = name.replace(word,_similar[word]); let name1 = name.replace(word,_similar[word]);
var name2 = name.replace(_similar[word],word); let name2 = name.replace(_similar[word],word);
if(name1!=name){ if(name1!=name){
keywords.push(name1); keywords.push(name1);
} }
@@ -123,29 +123,29 @@ export function getSelectors(str){
getList(name); getList(name);
// 通过关键词找关系 // 通过关键词找关系
keywords.forEach(function(name){ keywords.forEach(function(name){
var match = name.match(/^[大|小]|^[一|二|三|四|五|六|七|八|九|十]+/); let match = name.match(/^[大|小]|^[一|二|三|四|五|六|七|八|九|十]+/);
if(match){ if(match){
var x_name = name.replace(match[0],'几'); let x_name = name.replace(match[0],'几');
var r_name = name.replace(match[0],''); let r_name = name.replace(match[0],'');
var num = zh2number(match[0]); let num = zh2number(match[0]);
var x_ids = _cache[x_name]||[]; let x_ids = _cache[x_name]||[];
var r_ids = _cache[r_name]||[]; let r_ids = _cache[r_name]||[];
var i_ids = _cache[name]||[]; let i_ids = _cache[name]||[];
if(x_ids.length){ if(x_ids.length){
x_ids.forEach(function(i){ x_ids.forEach(function(i){
var r_i = i.replace(/(,[hw])$/,'&'+num+'$1').replace(/([^hw]+)$/,'$1&'+num); let r_i = i.replace(/(,[hw])$/,'&'+num+'$1').replace(/([^hw]+)$/,'$1&'+num);
x_items.push(r_i); x_items.push(r_i);
}); });
}else if(r_ids.length){ }else if(r_ids.length){
r_ids.forEach(function(i){ r_ids.forEach(function(i){
var r_i = i.replace(/(,[hw])$/,'&'+num+'$1').replace(/([^hw]+)$/,'$1&'+num); let r_i = i.replace(/(,[hw])$/,'&'+num+'$1').replace(/([^hw]+)$/,'$1&'+num);
if(!i.match(/^[mf,]+$/)&&!r_name.match(/^[从世]/)){ // 直系祖辈不参与排序 if(!i.match(/^[mf,]+$/)&&!r_name.match(/^[从世]/)){ // 直系祖辈不参与排序
r_items.push(r_i); r_items.push(r_i);
} }
}); });
}else{ }else{
i_ids.forEach(function(i){ i_ids.forEach(function(i){
var r_i = i.replace(/(,[hw])$/,'&'+num+'$1').replace(/([^hw]+)$/,'$1&'+num); let r_i = i.replace(/(,[hw])$/,'&'+num+'$1').replace(/([^hw]+)$/,'$1&'+num);
i_items.push(r_i); i_items.push(r_i);
}); });
} }
@@ -167,7 +167,7 @@ export function getSelectors(str){
if(!items.length){ if(!items.length){
isMatch = false; isMatch = false;
} }
var res = []; let res = [];
if(!result.length){ if(!result.length){
result = ['']; result = [''];
} }
@@ -183,10 +183,10 @@ export function getSelectors(str){
// 合并选择器,查找两个对象之间的关系 // 合并选择器,查找两个对象之间的关系
export function mergeSelector(param){ export function mergeSelector(param){
var {from:from_selector,to:to_selector,sex:my_sex} = param; let {from:from_selector,to:to_selector,sex:my_sex} = param;
if(my_sex<0){ if(my_sex<0){
var to_sex = -1; let to_sex = -1;
var from_sex = -1; let from_sex = -1;
if(from_selector.match(/^,[w1]/)){ if(from_selector.match(/^,[w1]/)){
from_sex = 1; from_sex = 1;
}else if(from_selector.match(/^,[h0]/)){ }else if(from_selector.match(/^,[h0]/)){
@@ -207,16 +207,16 @@ export function mergeSelector(param){
return []; return [];
} }
} }
var from_ids = selector2id(param['from'],my_sex); let from_ids = selector2id(param['from'],my_sex);
var to_ids = selector2id(param['to'],my_sex); let to_ids = selector2id(param['to'],my_sex);
if(!from_ids.length||!to_ids.length){ if(!from_ids.length||!to_ids.length){
return []; return [];
} }
var result = []; let result = [];
from_ids.forEach(function(from){ from_ids.forEach(function(from){
to_ids.forEach(function(to){ to_ids.forEach(function(to){
var sex = my_sex; let sex = my_sex;
var selector = ','+to; let selector = ','+to;
if(selector.match(/,([fhs1](&[ol\d]+)?|[olx]b)(&[ol\d]+)?$/)){ if(selector.match(/,([fhs1](&[ol\d]+)?|[olx]b)(&[ol\d]+)?$/)){
sex = 1; sex = 1;
} }
@@ -224,12 +224,12 @@ export function mergeSelector(param){
sex = 0; sex = 0;
} }
if(from&&to){ if(from&&to){
var isOptimal = param.optimal; let isOptimal = param.optimal;
if(from.match(/&\d+/)||to.match(/&\d+/)){ if(from.match(/&\d+/)||to.match(/&\d+/)){
isOptimal = true; isOptimal = true;
} }
if(isOptimal){ if(isOptimal){
var ops = getOptimal({ let ops = getOptimal({
'from':from, 'from':from,
'to':to, 'to':to,
'sex':my_sex, 'sex':my_sex,
@@ -240,9 +240,9 @@ export function mergeSelector(param){
my_sex = ops['sex']; my_sex = ops['sex'];
} }
} }
var to_rids = to?reverseId(to,my_sex):['']; let to_rids = to?reverseId(to,my_sex):[''];
to_rids.forEach(function(to_r){ to_rids.forEach(function(to_r){
var selector = (to_r?','+to_r:'')+(from?','+from:''); let selector = (to_r?','+to_r:'')+(from?','+from:'');
result.push({ result.push({
'selector':selector, 'selector':selector,
'sex':sex 'sex':sex
@@ -255,15 +255,15 @@ export function mergeSelector(param){
// 扩展选择器 // 扩展选择器
export function expandSelector(selector){ export function expandSelector(selector){
var result = []; let result = [];
var hash = {}; let hash = {};
var getSelector = function(selector){ let getSelector = function(selector){
var s=''; let s='';
if(!hash[selector]){ if(!hash[selector]){
hash[selector] = true; hash[selector] = true;
do{ do{
s = selector; s = selector;
for(var item of _filter){ for(let item of _filter){
// 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.includes('#')){ if(selector.includes('#')){
@@ -305,7 +305,7 @@ export function selector2id(selector,sex){
if(selector.match(/,[mwd0](&[ol\d]+)?,w|,[hfs1](&[ol\d]+)?,h/)){ //同志关系去除 if(selector.match(/,[mwd0](&[ol\d]+)?,w|,[hfs1](&[ol\d]+)?,h/)){ //同志关系去除
return []; return [];
} }
var result = expandSelector(selector).map(function(selector){ let result = expandSelector(selector).map(function(selector){
return selector.replace(/,[01]/,'').substr(1); //去前面逗号和性别信息 return selector.replace(/,[01]/,'').substr(1); //去前面逗号和性别信息
}); });
return filterId(result); return filterId(result);
+8 -8
View File
@@ -2,16 +2,16 @@
* 数值转换 * 数值转换
*/ */
var textAttr = ['','一','二','三','四','五','六','七','八','九','十']; const textAttr = ['','一','二','三','四','五','六','七','八','九','十'];
// 中文数字转阿拉伯数字 // 中文数字转阿拉伯数字
export function zh2number(text){ export function zh2number(text){
var num = 0; let num = 0;
var map = {'大':1,'小':99}; const map = {'大':1,'小':99};
if(map[text]){ if(map[text]){
num = map[text]; num = map[text];
}else{ }else{
var [unit,dec=0] = text.replace(/^十/,'一十').split('十').map(word=> textAttr.indexOf(word)).reverse(); let [unit,dec=0] = text.replace(/^十/,'一十').split('十').map(word=> textAttr.indexOf(word)).reverse();
num = dec*10+unit; num = dec*10+unit;
} }
return num; return num;
@@ -19,13 +19,13 @@ export function zh2number(text){
// 阿拉伯数字转中文数字 // 阿拉伯数字转中文数字
export function number2zh(num){ export function number2zh(num){
var text = ''; let text = '';
var map = {1:'大',99:'小'}; const map = {1:'大',99:'小'};
if(map[num]){ if(map[num]){
text = map[num]; text = map[num];
}else{ }else{
var dec = ~~(num/10); let dec = ~~(num/10);
var unit = num%10; let unit = num%10;
text = (dec?(textAttr[dec]+'十').replace('一十','十'):'')+textAttr[unit]; text = (dec?(textAttr[dec]+'十').replace('一十','十'):'')+textAttr[unit];
} }
return text; return text;