@logic-pad/core
Version:
33 lines (32 loc) • 1.64 kB
TypeScript
import GridData from '../grid.js';
import GridConnections from '../gridConnections.js';
import Rule from '../rules/rule.js';
import TileData from '../tile.js';
import Symbol from '../symbols/symbol.js';
import { Puzzle, PuzzleData } from '../puzzle.js';
import GridZones from '../gridZones.js';
export default abstract class SerializerBase {
abstract get version(): number;
abstract stringifyTile(tile: TileData): string;
abstract parseTile(str: string): TileData;
abstract stringifyRule(rule: Rule): string;
abstract stringifySymbol(symbol: Symbol): string;
abstract parseRule(str: string): Rule;
abstract parseSymbol(str: string): Symbol;
abstract stringifyConnections(connections: GridConnections): string;
abstract parseConnections(input: string): GridConnections;
abstract stringifyZones(zones: GridZones): string;
abstract parseZones(input: string): GridZones;
abstract stringifyTiles(tiles: readonly (readonly TileData[])[]): string;
abstract parseTiles(input: string): TileData[][];
abstract stringifyRules(rules: readonly Rule[]): string;
abstract parseRules(input: string): Rule[];
abstract stringifySymbols(symbols: ReadonlyMap<string, readonly Symbol[]>): string;
abstract parseSymbols(input: string): Map<string, Symbol[]>;
abstract stringifyGrid(grid: GridData): string;
abstract parseGrid(input: string): GridData;
abstract stringifyGridWithSolution(puzzle: PuzzleData): string;
abstract parseGridWithSolution(input: string): PuzzleData;
abstract stringifyPuzzle(puzzle: Puzzle): string;
abstract parsePuzzle(input: string): Puzzle;
}