@randsum/notation
Version:
Dice notation parser and types for the @randsum ecosystem
36 lines (33 loc) • 1.1 kB
text/typescript
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
}