mirror of
https://github.com/yoimiya-kokomi/miao-plugin.git
synced 2024-11-16 04:35:42 +00:00
99 lines
2.2 KiB
JavaScript
99 lines
2.2 KiB
JavaScript
import lodash from 'lodash'
|
||
|
||
const Store = {}
|
||
|
||
const Meta = {
|
||
|
||
// 获取存储
|
||
getStore (game, dataType) {
|
||
Store[game] = Store[game] || {}
|
||
Store[game][dataType] = Store[game][dataType] || {
|
||
meta: {},
|
||
alias: {},
|
||
abbr: {}
|
||
}
|
||
return Store[game][dataType]
|
||
},
|
||
|
||
// 添加数据
|
||
addMeta (game, dataType, data, pk = 'id') {
|
||
let { meta, alias } = Meta.getStore(game, dataType)
|
||
|
||
lodash.forEach(data, (ds, id) => {
|
||
id = ds[pk] || id
|
||
meta[id] = ds
|
||
alias[id] = id
|
||
if (ds.name) {
|
||
alias[ds.name] = id
|
||
}
|
||
})
|
||
},
|
||
|
||
// 添加简写
|
||
addAbbr (game, dataType, data) {
|
||
let { abbr, alias } = Meta.getStore(game, dataType)
|
||
lodash.forEach(data, (abbr, id) => {
|
||
abbr[id] = abbr
|
||
alias[abbr] = alias[id] || id
|
||
})
|
||
},
|
||
|
||
// 添加别名
|
||
addAlias (game, dataType, data) {
|
||
let { alias } = Meta.getStore(game, dataType)
|
||
lodash.forEach(data, (txt, id) => {
|
||
lodash.forEach(txt.split(','), (t) => {
|
||
alias[lodash.trim(t.toLowerCase())] = alias[id] || id
|
||
})
|
||
})
|
||
},
|
||
|
||
// 注册别名Fn
|
||
addAliasFn (game, dataType, fn) {
|
||
let store = Meta.getStore(game, dataType)
|
||
if (fn) {
|
||
store.aliasFn = fn
|
||
}
|
||
},
|
||
|
||
// 根据别名获取数据ID
|
||
getId (game, dataType, txt) {
|
||
txt = lodash.trim(txt.toLowerCase())
|
||
let { alias, aliasFn } = Meta.getStore(game, dataType)
|
||
if (alias[txt]) {
|
||
return alias[txt]
|
||
}
|
||
if (aliasFn) {
|
||
let id = aliasFn(txt)
|
||
if (alias[id]) {
|
||
return alias
|
||
}
|
||
}
|
||
return false
|
||
},
|
||
|
||
// 在各个游戏内匹配,以传入的game优先
|
||
matchGame (game = 'gs', dataType, txt) {
|
||
txt = lodash.trim(txt.toLowerCase())
|
||
let games = game === 'gs' ? ['gs', 'sr'] : ['sr', 'gs']
|
||
for (let currGame of games) {
|
||
let id = Meta.getId(currGame, dataType, txt)
|
||
if (id) {
|
||
let meta = Meta.getMeta(currGame, dataType, id)
|
||
return { game, id, meta }
|
||
}
|
||
}
|
||
return false
|
||
},
|
||
|
||
// 根据别名获取数据
|
||
getMeta (game, dataType, txt) {
|
||
txt = lodash.trim(txt.toLowerCase())
|
||
let id = Meta.getId(game, dataType, txt)
|
||
let { meta } = Meta.getStore(game, dataType)
|
||
return meta[id]
|
||
}
|
||
|
||
}
|
||
export default Meta
|