UNPKG

@randsum/notation

Version:

Dice notation parser and types for the @randsum ecosystem

36 lines (33 loc) 1.1 kB
import { isDiceNotation } from './isDiceNotation' import { notationToOptions } from './parse/notationToOptions' import type { InvalidValidationResult, ValidValidationResult, ValidationResult } from './types' import { optionsToDescription, optionsToNotation } from './transformers' /** * Validates dice notation and returns parsed information. * * @param notation - String to validate as dice notation * @returns ValidationResult with valid flag and error (if invalid) */ export function validateNotation(notation: string): ValidationResult { if (!isDiceNotation(notation)) { const result: InvalidValidationResult = { valid: false, argument: notation, error: { message: `Invalid dice notation: "${notation}"`, argument: notation } } return result } const options = notationToOptions(notation) const result: ValidValidationResult = { valid: true, argument: notation, options, notation: options.map(o => optionsToNotation(o)), description: options.map(o => optionsToDescription(o)), error: null } return result }