UNPKG

@randsum/roller

Version:

A flexible, type-safe dice roller for tabletop RPGs, game development, and probability simulations

23 lines (18 loc) 776 B
import type { ModifierOptions } from '../../../types' import { minusPattern, plusPattern } from '../../patterns/modifierPatterns' export function parseArithmeticModifiers( notation: string ): Pick<ModifierOptions, 'plus' | 'minus'> { const result: { plus?: number; minus?: number } = {} const plusMatches = Array.from(notation.matchAll(new RegExp(plusPattern.source, 'g'))) if (plusMatches.length > 0) { const total = plusMatches.reduce((sum, match) => sum + Number(match[1]), 0) result.plus = total } const minusMatches = Array.from(notation.matchAll(new RegExp(minusPattern.source, 'g'))) if (minusMatches.length > 0) { const total = minusMatches.reduce((sum, match) => sum + Number(match[1]), 0) result.minus = total } return result }