Files
dungeon-sheets/dungeonsheets/dice.py
T
Mark Wolfman 30369ce1d4 Ran flake8 and black linters, and other cleanup-related fixes.
Project now passes flake8 and black linter (also including more rst
cleanup). Moved latex related things to dedicated ``latex.py`` module,
and removed the ``makesheets -dF`` call from travis.
2021-04-16 11:10:17 -05:00

25 lines
616 B
Python

import re
from collections import namedtuple
from dungeonsheets.exceptions import DiceError
dice_re = re.compile(r"(\d+)d(\d+)", flags=re.I)
Dice = namedtuple("Dice", ("num", "faces"))
def read_dice_str(dice_str):
"""Interpret a D&D dice string, eg. 3d10.
Returns
-------
dice : tuple
A named tuple with the scheme (num, faces), so '3d10' return
(num=3, faces=10)
"""
match = dice_re.match(dice_str)
if match is None:
raise DiceError(f"Cannot interpret dice string {dice_str}")
dice = Dice(num=int(match.group(1)), faces=int(match.group(2)))
return dice