https://github.com/ncdulo/pyroman
Yo dawg, I heard you like Roman numerals
https://github.com/ncdulo/pyroman
conversion gtk3-wrapper module python python3 roman-numeral terminal
Last synced: 20 days ago
JSON representation
Yo dawg, I heard you like Roman numerals
- Host: GitHub
- URL: https://github.com/ncdulo/pyroman
- Owner: ncdulo
- License: gpl-3.0
- Created: 2019-12-05T22:44:51.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-12-14T14:38:23.000Z (over 6 years ago)
- Last Synced: 2025-10-08T09:02:10.268Z (8 months ago)
- Topics: conversion, gtk3-wrapper, module, python, python3, roman-numeral, terminal
- Language: Python
- Homepage:
- Size: 43.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# pyroman
Pyroman is a Roman numeral conversion library written for Python 3.6. Provided are the main library, unit tests, and a command line wrapper for the library. It can convert any integer number between 1 and 4,999 to a Roman numeral, or the same in reverse. Featuring dynamically generated lookup tables for a very fast execution.
The idea and source code for this project originally came from Dive Into Python 3 by Mark Pilgrim.
### Basic Usage
#### Library
#### Command Line Wrapper
#### Gtk3 Wrapper
I have created a simple to use Gtk3 wrapper for use of the library without entering a Python shell or writing a script. Make sure `roman_gui.py` has execute permissions and run the executable directly.
The output mode setting controls the type of input accepted and the type returned. Numeral mode accepts an integer and returns a Roman numeral. Integer mode accepts a Roman numeral and returns an integer. Note that Roman numeral input must be uppercase. Integer input must be whole numbers, greater than 0 but less than 4,999.
#### TODO
##### Library
##### Command Line Wrapper
##### Gtk3 Wrapper
* Error checking for input
* Exception handling and error output
* Basic program description in the main window
* Visual tweaks and enhancements
#### Unit Tests
### Current unit test results: Pass
```
-> % python roman_test.py -v
test_blank (__main__.FromRomanBadInput)
from_roman should fail with blank string ... ok
test_malformed_antecedents (__main__.FromRomanBadInput)
from_roman should fail with malformed antecedents ... ok
test_repeated_pairs (__main__.FromRomanBadInput)
from_roman should fail with repeated pairs of numerals ... ok
test_too_many_repeated_numerals (__main__.FromRomanBadInput)
from_roman should fail with too many repeated numerals ... ok
test_roundtrip (__main__.RoundTripCheck)
from_roman(to_roman(n)) == n for all n ... ok
test_negative (__main__.ToRomanBadInput)
to_roman should fail with negative input ... ok
test_non_integer (__main__.ToRomanBadInput)
to_roman should fail with non-integer input ... ok
test_too_large (__main__.ToRomanBadInput)
to_roman should fail with large input ... ok
test_zero (__main__.ToRomanBadInput)
to_roman should fail with 0 input ... ok
test_from_roman_known_values (__main__.ToRomanGoodInput)
from_roman should give known result with known input ... ok
test_to_roman_known_values (__main__.ToRomanGoodInput)
to_roman should give known result with known input ... ok
----------------------------------------------------------------------
Ran 11 tests in 0.011s
OK
```