//class helper { // Revive(t:string, _type:string):string { // return t // } // Revive(t:string, _type:string[]):string[]{ // return t.split(",") // } // Revive(t:string, _type:number):number { // return Number(t) // } // Revive(t:string, _type:number[]):number[]{ // return t.split(",").map(Number) // } //} import { ColumnSet } from "./table" import { TricksterAccount, TricksterCharacter, TricksterInventory } from "./trickster" export const ARRAY_SEPERATOR = "," let as = ARRAY_SEPERATOR export interface Reviver { Murder(t:T):string Revive(s:string):T } export const StoreStr= { Murder: (s:string):string=>s, Revive: (s:string):string=>s } export const StoreNum = { Murder: (s:number):string=>s.toString(), Revive: (s:string):number=>Number(s) } export const StoreStrSet = { Murder: (s:Set):string=>Array.from(s).join(as), Revive: (s:string):Set=>new Set(s.split(as)) } export const StoreColSet = { Murder: (s:ColumnSet):string=>Array.from(s.s.values()).join(as), Revive: (s:string):ColumnSet=>new ColumnSet(s.split(as) as any) } export const StoreChars = { Murder: (s:Map):string=>{ let o = JSON.stringify(Array.from(s.entries())) return o }, Revive: (s:string):Map=>new Map(JSON.parse(s)), } export const StoreAccounts = { Murder: (s:Map):string=>{ let o = JSON.stringify(Array.from(s.entries())) return o }, Revive: (s:string):Map=>new Map(JSON.parse(s)), } export const StoreJsonable = { Murder: (s:T):string=>JSON.stringify(Object.entries(s)), Revive: (s:string):T=>JSON.parse(s), } export interface Serializable { parse(s:any):T } export const StoreSerializable = >(n:(new ()=>T))=>{ return { Murder: (s:T):string=>JSON.stringify(s), Revive: (s:string):T=>new n().parse(JSON.parse(s)) } }