@randsum/notation
Version:
A flexible, type-safe dice notation parser and validator
30 lines • 1.3 kB
JavaScript
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