Browse Source

用上 URLSearchParams

tags/v5.4
枫谷剑仙 6 years ago
parent
commit
0330730438
4 changed files with 68 additions and 37 deletions
  1. +32
    -14
      monsters-info/extractByNode.js
  2. +3
    -1
      monsters-info/official-API/test-mon.html
  3. +19
    -15
      script.js
  4. +14
    -7
      universal_function.js

+ 32
- 14
monsters-info/extractByNode.js View File

@@ -4,15 +4,18 @@ const Skill = require('./official-API/parseSkill');
var officialAPI = [ //来源于官方API
{
code:"ja",
customName:["cht","chs"]
customName:["cht","chs"],
ckey:{card:null,skill:null}
},
{
code:"en",
customName:[]
customName:[],
ckey:{card:null,skill:null}
},
{
code:"ko",
customName:[]
customName:[],
ckey:{card:null,skill:null}
}
];
@@ -34,9 +37,12 @@ function sameCard(m1,m2)
* 正式流程
*/
officialAPI.forEach(function(lang){
lang.ckey = {card:null,skill:null};
console.log("正在读取官方 " + lang.code + " 信息");
const cardJson = fs.readFileSync("official-API/" + lang.code +".json", 'utf-8'); //使用同步读取怪物
const oCards = lang.cardOriginal = JSON.parse(cardJson).card;//将字符串转换为json对象
const cardJsonObj = JSON.parse(cardJson);
lang.ckey.card = cardJsonObj.ckey;
const oCards = lang.cardOriginal = cardJsonObj.card;//将字符串转换为json对象
let maxCardIndex = 0;
while (oCards[maxCardIndex][0] == maxCardIndex)
@@ -64,7 +70,9 @@ officialAPI.forEach(function(lang){
});
const skillJson = fs.readFileSync("official-API/" + lang.code +"-skill.json", 'utf-8'); //使用同步读取技能
const oSkills = lang.skillOriginal = JSON.parse(skillJson).skill;//将字符串转换为json对象
const skillJsonObj = JSON.parse(skillJson);
lang.ckey.skill = skillJsonObj.ckey;
const oSkills = lang.skillOriginal = skillJsonObj.skill;//将字符串转换为json对象
lang.skills = oSkills.map((oc,idx)=>{return new Skill(idx,oc);}); //每一项生成分析对象
});
@@ -127,25 +135,35 @@ for (let li = 0;li < officialAPI.length; li++)
if (_m && isSame) //如果有这个怪物,且与原语言怪物是同一只
{
const otName = _m.name;
if (!/^\*+/.test(name) && //名字不是星号开头
!/^\*+/.test(otName) && //另一个语言名字不是星号开头
!/^\?+/.test(name) && //名字不是问号开头
!/^\?+/.test(otName) && //另一个语言名字不是问号开头
!/^초월\s*\?+/.test(name) && //名字不是韩文的问号开头
!/^초월\s*\?+/.test(otName) //另一个语言名字不是韩文的问号开头
) //以上情况全符合才添加
const searchRegString = "^(?:\\?+|\\*+|초월\\s*\\?+)"; //名字以问号、星号、韩文的问号开头
if (!new RegExp(searchRegString,"i").test(name) &&
!new RegExp(searchRegString,"i").test(otName)
)
{
if (!m.otLangName) //如果没有其他语言名称属性,则添加一个对象属性
m.otLangName = {};
{m.otLangName = new Object();}
m.otLangName[otLang.code] = otName;
if (_m.otLangName)
m.otLangName = Object.assign(m.otLangName, _m.otLangName); //增加储存当前语言的全部其他语言
{m.otLangName = Object.assign(m.otLangName, _m.otLangName);} //增加储存当前语言的全部其他语言
}
}
});
}
}
var ckeyObj = officialAPI.map(lang=>{
const obj = {
code: lang.code,
ckey: lang.ckey,
};
return obj;
})
fs.writeFile('./ckey.json',JSON.stringify(ckeyObj),function(err){
if(err){
console.error(err);
}
console.log('ckey.json 导出成功');
});
//最后批量保存
officialAPI.forEach(function(lang){
let lcode = lang.code;


+ 3
- 1
monsters-info/official-API/test-mon.html View File

@@ -92,7 +92,9 @@ GM_xmlhttpRequest({
method: "GET",
url:"ja.json",
onload: function(response) {
cards = JSON.parse(response.response).card.filter((c,idx)=>{return c[0]==idx;});
const originalJSON = JSON.parse(response.response);
console.log(originalJSON)
cards = originalJSON.card.filter((c,idx)=>{return c[0]==idx;});
pcards = cards.map(c=>{
let card = new Card(c);
//将可能的flag显示为二进制


+ 19
- 15
script.js View File

@@ -451,21 +451,27 @@ window.onpopstate = reloadFormationData; //前进后退时修改页面
//创建新的分享地址
function creatNewUrl(arg){
if (arg == undefined) arg = {};
if (!!(window.history && history.pushState)) {
// 支持History API
let language_i18n = arg.language || getQueryString("l") || getQueryString("lang"); //获取参数指定的语言
let datasource = arg.datasource || getQueryString("s");
let outObj = formation.outObj();
if (!!(window.history && history.pushState))
{ // 支持History API
const language_i18n = arg.language || getQueryString("l") || getQueryString("lang"); //获取参数指定的语言
const datasource = arg.datasource || getQueryString("s");
const outObj = formation.outObj();
let newUrl = (arg.url?arg.url:"") +
'?' +
(language_i18n?'l=' + language_i18n + '&':'') +
(datasource&&datasource!="ja"?'s=' + datasource + '&':'') +
'd=' + encodeURIComponent(JSON.stringify(outObj));
const newSearch = new URLSearchParams();
if (language_i18n) newSearch.set("l",language_i18n);
if (datasource && datasource!="ja") newSearch.set("s",datasource);
if (outObj) newSearch.set("d", JSON.stringify(outObj));

if (!arg.notPushState) history.pushState(null, null, newUrl);
if (arg.returnObj) return outObj;
else return newUrl;
const newUrl = (arg.url || "") + '?' + newSearch.toString();

if (!arg.notPushState)
{
history.pushState(null, null, newUrl);
}
else
{
return newUrl;
}
}
}
//截图
@@ -1427,8 +1433,6 @@ function interchangeCard(formArr,toArr)
formation.teams[toArr[0]][toArr[1]][toArr[2]] = from;
if (!isCopy) formation.teams[formArr[0]][formArr[1]][formArr[2]] = to;

//const formationData = creatNewUrl({returnObj:true});
//formation.loadObj(formationData);
creatNewUrl(); //刷新URL
refreshAll(formation); //刷新全部
}


+ 14
- 7
universal_function.js View File

@@ -57,15 +57,22 @@ function PrefixInteger(num, length)
}
//获取URL参数
function getQueryString(name,url) {
const reg = new RegExp(`(?:^|&)${name}=([^&]*)(?:&|$)`, "i");
const searchStr = url || location.search.substr(1);
const r = searchStr.match(reg);
if (r != null)
{
return decodeURIComponent(r[1]);
if (!!(window.URL && window.URLSearchParams))
{ //浏览器原生支持的API
const urlObj = new URL(url || document.location);
return urlObj.searchParams.get(name);
}else
{
return null;
const reg = new RegExp(`(?:^|&)${name}=([^&]*)(?:&|$)`, "i");
const searchStr = url || location.search.substr(1);
const r = searchStr.match(reg);
if (r != null)
{
return decodeURIComponent(r[1]);
}else
{
return null;
}
}
}


Loading…
Cancel
Save