UNPKG

@randsum/notation

Version:

A flexible, type-safe dice notation parser and validator

30 lines 1.3 kB
import { CapModifier, DropModifier, ExplodeModifier, MinusModifier, PlusModifier, ReplaceModifier, RerollModifier, UniqueModifier } from '@randsum/core'; import { coreNotationPattern } from '../patterns'; export function notationToOptions(notationString) { const coreNotationMatch = notationString.match(coreNotationPattern)?.at(0) ?? ''; const modifiersString = notationString.replace(coreNotationMatch, ''); const [quantity, sides = ''] = coreNotationMatch.split(/[Dd]/); if (sides.includes('{')) { return { quantity: Number(quantity), sides: [...sides.replaceAll(/{|}/g, '')] }; } return { quantity: Number(quantity), sides: Number(sides), ...{ modifiers: { ...DropModifier.parse(modifiersString), ...ExplodeModifier.parse(modifiersString), ...UniqueModifier.parse(modifiersString), ...ReplaceModifier.parse(modifiersString), ...RerollModifier.parse(modifiersString), ...CapModifier.parse(modifiersString), ...PlusModifier.parse(modifiersString), ...MinusModifier.parse(modifiersString) } } }; } //# sourceMappingURL=notationToOptions.js.map