Files
Epicnabbo-Catalogus-Updated…/src/lib/furni/classname.ts
T

43 lines
1.3 KiB
TypeScript

const CLASSNAME_CHAR_RE = /^[a-z0-9_*\-.]+$/
export function getBaseClassname(classname: string): string {
const star = classname.indexOf('*')
return star >= 0 ? classname.substring(0, star) : classname
}
export function getSafeClassnameStem(classname: string): string {
return classname.replace(/\*/g, '_')
}
export function getIconFileName(classname: string): string {
return `${getSafeClassnameStem(classname)}_icon.png`
}
export function getSwfFileName(classname: string): string {
return `${getBaseClassname(classname)}.swf`
}
export function getNitroFileName(classname: string): string {
return `${getBaseClassname(classname)}.nitro`
}
export function normalizeClassname(raw: string): string {
return raw.trim().toLowerCase()
}
export function isValidClassname(classname: string): boolean {
if (!classname) return false
return CLASSNAME_CHAR_RE.test(classname)
}
export const LOCAL_ICON_URL_PREFIX = '/swf/dcr/hof_furni/icons/'
export function getLocalIconUrl(classname: string): string {
return `${LOCAL_ICON_URL_PREFIX}${encodeURIComponent(getIconFileName(classname))}`
}
export function getHabboCdnIconUrl(classname: string, revision: number): string {
const base = getBaseClassname(classname)
return `https://images.habbo.com/dcr/hof_furni/${revision}/${encodeURIComponent(base)}_icon.png`
}