From 1107d16a6cfe58b162205d2ae27bc42e1e3d6352 Mon Sep 17 00:00:00 2001 From: Juuso Mikkonen Date: Tue, 5 Mar 2019 19:05:00 +0200 Subject: [PATCH] Address roll of only a constant in parser --- src/dice.ts | 1 + test/dice.test.ts | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) 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))