diff --git a/data/lib/index.ts b/data/lib/index.ts index 785c20fe..d46d411a 100644 --- a/data/lib/index.ts +++ b/data/lib/index.ts @@ -33,3 +33,28 @@ export function get(id : number) : Type { export function entries() : [number, Type][] { return Array.from(result.entries()); } + +// TODO Moved here from deploy/spritename.ts, better place to put these?? +export type SpriteFilename = {id : number | string, extra : Map}; + +export function parseFilename(s : string) : SpriteFilename { + const parts = s.split("-"); + const id = parts[0].match(/^[0-9]+$/) ? parseInt(parts[0], 10) : parts[0]; + const extra = new Map(); + for (const part of parts.slice(1)) { + if (part.length === 0) + throw new Error(`Can't parse ${s}`); + extra.set(part[0], part.slice(1)); + } + return {id, extra}; +} + +export function formatFilename(si : SpriteFilename) { + let s = si.id.toString(); + const extra = []; + for (const [k, v] of si.extra.entries()) { + extra.push(`-${k}${v}`); + } + extra.sort(); + return s + extra.join(''); +} diff --git a/ps.deploy.js b/ps.deploy.js index fc9a22fa..c213021c 100644 --- a/ps.deploy.js +++ b/ps.deploy.js @@ -4,7 +4,7 @@ function toID(name) { } function spritecopy(f, {dir, ext}) { - const sn = spritename.parse(f.name); + const sn = spritedata.parseFilename(f.name); let name; if (typeof sn.id === 'string') { name = toID(sn.id); diff --git a/smogon.deploy.js b/smogon.deploy.js index 7b931224..382dc7d5 100644 --- a/smogon.deploy.js +++ b/smogon.deploy.js @@ -6,7 +6,7 @@ function toSmogonAlias(name) { } function spritecopy(f, {dir, ext}) { - const sn = spritename.parse(f.name); + const sn = spritedata.parseFilename(f.name); let name; // Skip asymmetrical for now diff --git a/tools/deploy/script.ts b/tools/deploy/script.ts index 67cfdef1..5b0b8336 100644 --- a/tools/deploy/script.ts +++ b/tools/deploy/script.ts @@ -3,7 +3,6 @@ import fs from 'fs'; import nodePath from 'path'; import vm from 'vm'; import * as pathlib from './path.js'; -import * as spritename from './spritename.js'; import * as spritedata from '@smogon/sprite-data'; @@ -172,7 +171,6 @@ export class Script extends vm.Script { const SKIP = {}; const ENV0 = { - spritename, spritedata, SKIP, // Because throw SKIP isn't an expression diff --git a/tools/deploy/spritename.ts b/tools/deploy/spritename.ts deleted file mode 100644 index 936846bc..00000000 --- a/tools/deploy/spritename.ts +++ /dev/null @@ -1,24 +0,0 @@ - -export type SpriteName = {id : number | string, extra : Map}; - -export function parse(s : string) : SpriteName { - const parts = s.split("-"); - const id = parts[0].match(/^[0-9]+$/) ? parseInt(parts[0], 10) : parts[0]; - const extra = new Map(); - for (const part of parts.slice(1)) { - if (part.length === 0) - throw new Error(`Can't parse ${s}`); - extra.set(part[0], part.slice(1)); - } - return {id, extra}; -} - -export function format(si : SpriteName) { - let s = si.id.toString(); - const extra = []; - for (const [k, v] of si.extra.entries()) { - extra.push(`-${k}${v}`); - } - extra.sort(); - return s + extra.join(''); -}