Skip to main content

GNOLL

Build + Test Test: Perl Test: JavaScript Test: Go

CodeFactor Codacy Badge

status TTRPG compatibility rate GitHub license GitHub last commit Donate

An easy to integrate dice notation library for multiple programming languages. Use for instant support of common syntax and a library that can scale with your demands, rather than a sticky taped monstrousity of regular expressions and tears.

Here's an example of how you might use GNOLL:

**Grindon The Brave**: I want to steal from the goblin sitting at the bar.
**Dungeon Master**: Okay, give me a stealth check!
**Grindon The Brave**: Okay, that's a <1d20+5>
[GNOLL]: 21
**Dungeon Master**: Hurrah! You successfully pickpocket the goblin! However, all he had in there were some crummy dice...

You can follow Grindon's full adventure through the world of dice notation in our Documentation.

Many of our notation design decisions are explained in the documentation and compared to other dice notation parsers.

Current Status

🧑‍💻 Language Support

We wrote GNOLL to be the definitive solution to dice notation. We've written all the code in C, but fear not! You can use GNOLL in the following languages too:

  • C / C++
  • Python
  • Perl
  • Go
  • JavaScript (Node.js)

We have plans to add more example integrations of GNOLL's through different languages in the near future. Let us know if you have any particular wants!

Tested on Linux (Ubuntu) and Windows (10, WSL).

🎲 Dice Notation

  • XdY notation
  • Arithmetic
  • Fate Dice
  • Miscellaneous Symbolic Dice
  • Shorthands & Macros
  • Alternate Syntax
  • Explosions
  • Drop/Keep
  • Rerolling
  • Filtering

There's so many different things, we'd bore you to list them all here. For the specific details of supported notation, check out our documentation.

Getting Started

Usage from a package manager

Python

pip3 install GNOLL

Then, in your code:

from gnoll.parser import roll
roll("1d20")
>> 7

🛠️ Installing From Source

Basic Requirements

sudo apt-get install bison flex make python3-pip -y
pip install -r reqs/requirements.txt
make all

To verify your setup, try our tests:

make test

Or, just try some commands yourself!

$ ./dice 1d20
20

(Note that not all commands may not be able to be used this way as some symbols are reserved for use by different terminal interfaces (e.g. bash uses ! and #))

For languages other than Python/C/C++ call the corresponding make target after the commands above.

🐛 Issues / Bugs / FAQs / Feature Requests

If you encounter any issues or have any ideas, please file them in our Issue Tracker.

✋ Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

🔢 Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

🤹 Authors / Contributers / Attributions

See also the list of contributors who participated in this project.

📃 License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE.md file for details.

Individual licensing arrangements can be made if this is an issue for your project - Contact Me at LinkedIn to discuss.

👏 Acknowledgments

  • Billie Thompson - README & Contribution Templates - PurpleBooth

🏗️ Built With

  • Flex & Bison - Grammar Lexing & Parsing
  • uthash - C hashtable lib
  • PCG - Random Number Generation
  • Arc4Random - Random Number Generation (Cryptographically secure)
  • Love! 💖

💰 Donate

Keep this project alive

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gnoll-3.0.0.tar.gz (149.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gnoll-3.0.0-py3-none-any.whl (156.6 kB view details)

Uploaded Python 3

File details

Details for the file gnoll-3.0.0.tar.gz.

File metadata

  • Download URL: gnoll-3.0.0.tar.gz
  • Upload date:
  • Size: 149.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.15

File hashes

Hashes for gnoll-3.0.0.tar.gz
Algorithm Hash digest
SHA256 7cf625c2a1384be0279e70f6a31df4c346a5487ed4e42f2b7bc1c38a216de637
MD5 7d9bbbd06e5ee108e4bad120b2f3f6ad
BLAKE2b-256 0eacb35624ac08dea3c45bcd31f96f42d2bd98891d5442a004c18073e1993f58

See more details on using hashes here.

File details

Details for the file gnoll-3.0.0-py3-none-any.whl.

File metadata

  • Download URL: gnoll-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 156.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.15

File hashes

Hashes for gnoll-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a00fef89b22234559f967a67a0c3ef57664e7fff8c64f1047f63ab1c5bfd6327
MD5 120602194112f6c3c29751d43ce3b9fb
BLAKE2b-256 9711b2892dfa7f88efeced5ce09c99e049b180b29e0ccd433e895eff4f8a2f1a

See more details on using hashes here.

Release history Release notifications | RSS feed

4.5.5

2 files

4.5.3

1 file

4.5.2

1 file

4.4.0

3 files

4.3.4

5 files

4.3.0

3 files

4.2.7

2 files

4.2.5

2 files

4.2.0

2 files

4.1.0

2 files

4.0.1

2 files

3.2.0

2 files

3.1.0

2 files

This release

3.0.0 This release

2 files

2.12.0

2 files

2.11.1

2 files

2.11.0

2 files

2.10.0

2 files

2.9.0

2 files

2.8.9

2 files

2.8.8

2 files

2.8.7

2 files

2.8.5

2 files

2.8.4

2 files

2.8.3

2 files

2.8.2

2 files

2.8.1

2 files

2.7.2

2 files

2.7.0

2 files

2.6.0

2 files

2.5.0

2 files

2.4.2

2 files

2.4.1

2 files

2.4.0

2 files

2.3.7

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page