@gobstones/gobstones-gbb-parser
Version:
A Parser/Stringifier for GBB (Gobstones Board) file format
101 lines (95 loc) • 3.85 kB
text/typescript
import { intl } from '../translations';
export namespace GBBStringifyingErrors {
export class GBBStringifyingError extends Error {
public isError: boolean;
public constructor(name: string, message: string) {
super(message);
this.name = name;
this.isError = true;
Object.setPrototypeOf(this, GBBStringifyingError.prototype);
}
}
export class HeadBoundaryExceeded extends GBBStringifyingError {
public constructor(coordinate: string, value: number, min: number, max: number) {
super(
'HeadBoundaryExceeded',
intl.translate('stringifier.errors.HeadBoundaryExceeded', {
coordinate: intl.translate(`keywords.${coordinate}`),
value: `${value}`,
min: `${min}`,
max: `${max}`
})
);
Object.setPrototypeOf(this, HeadBoundaryExceeded.prototype);
}
}
export class InvalidHeadDefinition extends GBBStringifyingError {
public constructor() {
super(
'InvalidHeadDefinition',
intl.translate('stringifier.errors.InvalidHeadDefinition')
);
Object.setPrototypeOf(this, InvalidHeadDefinition.prototype);
}
}
export class InvalidSizeDefinition extends GBBStringifyingError {
public constructor(dimension: string, value: number) {
super(
'InvalidSizeDefinition',
intl.translate('stringifier.errors.InvalidSizeDefinition', {
dimension: intl.translate(`keywords.${dimension}`),
value: `${value}`
})
);
Object.setPrototypeOf(this, InvalidSizeDefinition.prototype);
}
}
export class InvalidCellDefinition extends GBBStringifyingError {
public constructor(x: number, y: number, key?: string) {
const values: any = {
x,
y
};
const secondaryMessageKey =
'stringifier.errors.InvalidCellDefinition.' + (key ? 'missing' : 'added');
if (key) {
values.key = key;
}
const secondaryMessage = intl.translate(secondaryMessageKey, values);
super(
'InvalidCellDefinition',
intl.translate('stringifier.errors.InvalidCellDefinition') + secondaryMessage
);
Object.setPrototypeOf(this, InvalidCellDefinition.prototype);
}
}
/* istanbul ignore next */
export class InvalidBoardDefinition extends GBBStringifyingError {
public constructor(encountered: number, declared: number, position?: number) {
const values: any = {
encountered,
declared
};
const secondaryMessageKey =
'stringifier.errors.InvalidBoardDefinition.' + (position ? 'height' : 'width');
if (position) {
values.position = position;
}
const secondaryMessage = intl.translate(secondaryMessageKey, values);
super(
'InvalidBoardDefinition',
intl.translate('stringifier.errors.InvalidBoardDefinition.main') + secondaryMessage
);
Object.setPrototypeOf(this, InvalidBoardDefinition.prototype);
}
}
export class InvalidBoardDataDefinition extends GBBStringifyingError {
public constructor() {
super(
'InvalidBoardDataDefinition',
intl.translate('stringifier.errors.InvalidBoardDataDefinition')
);
Object.setPrototypeOf(this, InvalidBoardDataDefinition.prototype);
}
}
}