Skip to content

Commit 4bcadd0

Browse files
committed
Replaced argparse with docopt
1 parent dfb1ca9 commit 4bcadd0

File tree

4 files changed

+39
-37
lines changed

4 files changed

+39
-37
lines changed

dice/__init__.py

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,20 @@
22

33
from __future__ import absolute_import, print_function, unicode_literals
44

5-
import argparse
5+
from pyparsing import ParseException
66

7+
import dice.elements
78
import dice.grammar
89
import dice.utilities
910

10-
__all__ = ['roll', 'main', 'ParseException']
11+
__all__ = ['roll', 'ParseException']
1112
__author__ = "Sam Clements <[email protected]>"
12-
__version__ = "0.2.1"
13-
14-
from pyparsing import ParseException
15-
16-
parser = argparse.ArgumentParser()
17-
parser.add_argument(
18-
'-V', '--version', action='version',
19-
version='dice v{0} by {1}'.format(__version__, __author__))
20-
parser.add_argument(
21-
'-v', '--verbose', action='store_true',
22-
help="show additional output")
23-
parser.add_argument(
24-
'expression',
25-
help="the expression to parse and roll")
26-
13+
__version__ = '0.3.0'
2714

2815
def roll(string, single=True, verbose=False):
29-
"""Parses and evaluates an expression"""
16+
"""Parses and evaluates a dice expression"""
3017
ast = dice.grammar.expression.parseString(string, parseAll=True)
3118
result = [element.evaluate(verbose=verbose) for element in ast]
3219
if single:
3320
return dice.utilities.single(result)
3421
return result
35-
36-
37-
def main(argv=None):
38-
args = parser.parse_args(argv)
39-
result = roll(args.expression, verbose=args.verbose)
40-
if args.verbose:
41-
print("Result:", end=" ")
42-
return result

dice/command.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"""
2+
Usage:
3+
roll [--verbose] <expression>
4+
5+
Options:
6+
-h --help Show this help text
7+
-v --verbose Show additional output
8+
-V --version Show the package version
9+
"""
10+
11+
from __future__ import absolute_import, print_function, unicode_literals
12+
13+
import docopt
14+
15+
import dice
16+
17+
__version__ = "dice v{0} by {1}".format(dice.__version__, dice.__author__)
18+
19+
def main(argv=None):
20+
"""Run roll() from a command line interface"""
21+
args = docopt.docopt(__doc__, argv=argv, version=__version__)
22+
result = dice.roll(args['<expression>'], verbose=args['--verbose'])
23+
if args['--verbose']:
24+
print("Result:", end=" ")
25+
return result
Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
from __future__ import absolute_import
22

3-
from dice import roll, main
3+
from dice.command import main
44
from dice.elements import Integer, Roll
55

66

7-
def test_roll():
8-
assert isinstance(roll('2d6'), (Integer, Roll, list))
9-
10-
117
def test_main():
128
assert isinstance(main(['2d6']), (Integer, Roll, list))
9+
10+
def test_main_verbose():
11+
assert main(['1d6', '--verbose'])

setup.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
setup(
77
name = 'dice',
8-
version = '0.2.1',
8+
version = '0.3.0',
99

1010
author = "Sam Clements",
1111
author_email = "[email protected]",
@@ -16,15 +16,14 @@
1616

1717
packages = find_packages(),
1818
install_requires = [
19-
'argparse==1.2.1',
20-
'pyparsing==2.0.1',
21-
'six==1.3.0'
19+
'docopt==0.6.1',
20+
'pyparsing==2.0.1'
2221
],
2322

2423
entry_points = {
2524
'console_scripts': [
26-
'dice = dice:main',
27-
'roll = dice:main'
25+
'dice = dice.command:main',
26+
'roll = dice.command:main'
2827
]
2928
},
3029

0 commit comments

Comments
 (0)