diff --git a/src/dice.ts b/src/dice.ts index 09941e2..a3bc429 100644 --- a/src/dice.ts +++ b/src/dice.ts @@ -33,6 +33,7 @@ export function parseDice(inputStr: string): Dice[] | null { const constStrs = (inputStr.match(/([\+|-]\d+)[+|-]/g) || []).map(x => x.slice(0, -1)) .concat((inputStr.match(/([\+|-]\d+)$/) || []).slice(1)) // trailing .concat((inputStr.match(/(^\d+)[+|-]/) || []).slice(1)) // leading + .concat((inputStr.match(/^(^\d+)$/) || []).slice(1)) // lone const dice = diceStrs.map(ds => { const [amount, sides] = ds.split('d').map(d => parseInt(d, 10)) return { amount: Number.isNaN(amount) ? 1 : amount, sides } diff --git a/test/dice.test.ts b/test/dice.test.ts index f4b9808..7e57313 100644 --- a/test/dice.test.ts +++ b/test/dice.test.ts @@ -9,7 +9,9 @@ test('Parser', () => { { string: '3d8-10', result: [{ amount: 3, sides: 8}, { amount: -10, sides: 1 }] }, { string: '3dd', result: null }, { string: '1d6+-1', result: null }, - { string: 'd6', result: [{ amount: 1, sides: 6 }]} + { string: 'd6', result: [{ amount: 1, sides: 6 }]}, + { string: '10', result: [{ amount: 10, sides: 1}]}, + { string: '-10', result: [{ amount: -10, sides: 1}]}, ] cases.forEach(({ string, result }) => expect(dice.parseDice(string)).toEqual(result))