WIP parse advanced mod desc

This commit is contained in:
Alexander Drozdov
2021-06-09 00:23:17 +03:00
parent a09033ff33
commit e9c8fbb114
3 changed files with 54 additions and 2 deletions
+6 -1
View File
@@ -71,7 +71,12 @@ const dict = {
'Trap Disarmament': 'Trap Disarmament',
'Demolition': 'Demolition',
'Brute Force': 'Brute Force',
'Mirrored': 'Mirrored'
'Mirrored': 'Mirrored',
'MODIFIER_LINE': /^(?<type>[^"]+)(?:\s+"(?<name>[^"]+)")?(?:\s+\(Tier: (?<tier>\d+)\))?(?:\s+\(Rank: (?<rank>\d+)\))?$/,
'PREFIX_MODIFIER': 'Prefix Modifier',
'SUFFIX_MODIFIER': 'Suffix Modifier',
'CRAFTED_PREFIX': 'Master Crafted Prefix Modifier',
'CRAFTED_SUFFIX': 'Master Crafted Suffix Modifier'
}
export default dict
+6 -1
View File
@@ -73,7 +73,12 @@ const dict: TranslationDict = {
'Trap Disarmament': 'разминирование',
'Demolition': 'взрывное дело',
'Brute Force': 'грубая сила',
'Mirrored': 'Отражено'
'Mirrored': 'Отражено',
'MODIFIER_LINE': /^(?<type>[^"]+)(?:\s+"(?<name>[^"]+)")?(?:\s+\(Уровень: (?<tier>\d+)\))?(?:\s+\(Ранг: (?<rank>\d+)\))?$/,
'PREFIX_MODIFIER': 'Префикс',
'SUFFIX_MODIFIER': 'Суффикс',
'CRAFTED_PREFIX': 'Мастерский префикс',
'CRAFTED_SUFFIX': 'Мастерский суффикс'
}
export default dict
+42
View File
@@ -0,0 +1,42 @@
import { CLIENT_STRINGS as _$ } from '@/assets/data'
// TODO "— Unscalable Value"
interface ModifierInfo {
generation?: 'suffix' | 'prefix'
name?: string
tier?: number
rank?: number
tags?: string[]
catalystIncr?: number
}
export function parseModInfoLine (line: string): ModifierInfo {
const [modText, tagsText, catalystText] = line
.slice(1, -1)
.split('\u2014')
.map(_ => _.trim())
const match = modText.match(_$.MODIFIER_LINE)
if (!match) {
throw new Error('Invalid regex for mod info line')
}
let generation: ModifierInfo['generation']
switch (match.groups!.type) {
case _$.PREFIX_MODIFIER:
case _$.CRAFTED_PREFIX:
generation = 'prefix'; break
case _$.SUFFIX_MODIFIER:
case _$.CRAFTED_SUFFIX:
generation = 'suffix'; break
}
const name = match.groups!.name || undefined
const tier = Number(match.groups!.tier) || undefined
const rank = Number(match.groups!.rank) || undefined
const tags = tagsText ? tagsText.split(', ') : []
const catalystIncr = parseInt(catalystText, 10) || undefined
return { generation, name, tier, rank, tags, catalystIncr }
}