Bump version
[munter.git] / munter / munter.py
index 7179e5272ebcef59572a1d5317d6297375567822..98669c56516c60228640881b321efb7d8700e010 100644 (file)
@@ -22,10 +22,18 @@ rates = {
     'bushwhacking': { 'rate': 2, 'direction': '↹' },
 }
 
+fitnesses = {
+    'slow': 1.2,
+    'average': 1,
+    'fast': .7,
+}
+
 unit_choices = ['metric', 'imperial']
 travel_mode_choices = rates.keys()
+fitness_choices = fitnesses.keys()
 
-def time_calc(distance, elevation, rate, units):
+def time_calc(distance, elevation, fitness='average', rate='uphill',
+    units='imperial'):
     retval = {}
 
     if units not in unit_choices:
@@ -41,6 +49,8 @@ def time_calc(distance, elevation, rate, units):
     unit_count = distance + (elevation / 100.0)
 
     retval['time'] = (distance + (elevation / 100.0)) / rates[rate]['rate']
+    retval['time'] = retval['time'] * fitnesses[fitness]
+
     retval['unit_count'] = unit_count
     retval['direction'] = rates[rate]['direction']
     retval['pace'] = rates[rate]['rate']
@@ -80,7 +90,8 @@ def print_pretty_estimate(est):
     print("\t └───────────────────────────────┘\n")
 
 def get_parser():
-    parser = argparse.ArgumentParser(description='Munter Time Calculation')
+    parser = argparse.ArgumentParser(description='Implementation of '
+        'the Munter time calculation')
 
     parser.add_argument('--distance',
         '-d',
@@ -99,7 +110,14 @@ def get_parser():
         type=str,
         default='uphill',
         choices=travel_mode_choices, required=False,
-        help='Travel mode (flat, by default)')
+        help='Travel mode (uphill, by default)')
+
+    parser.add_argument('--fitness',
+        '-f',
+        type=str,
+        default='average',
+        choices=fitness_choices, required=False,
+        help='Fitness modifier (average, by default)')
 
     parser.add_argument('--units',
         '-u',
@@ -113,7 +131,8 @@ def get_parser():
         '-p',
         action='store_true',
         default=False,
-        required=False);
+        required=False,
+        help="Make output pretty");
 
     return parser
 
@@ -123,10 +142,12 @@ def main():
 
     distance = opts.distance
     elevation = opts.elevation
+    fitness = opts.fitness
     units = opts.units
     travel_mode = opts.travel_mode
 
-    time_estimate = time_calc(distance, elevation, travel_mode, units=units)
+    time_estimate = time_calc(distance=distance, elevation=elevation,
+        fitness=fitness, rate=travel_mode, units=units)
 
     if opts.pretty:
         print_pretty_estimate(time_estimate)