diff --git a/bin/mharmor.py b/bin/mharmor.py index 4684392..fc40f96 100755 --- a/bin/mharmor.py +++ b/bin/mharmor.py @@ -23,9 +23,13 @@ def parse_args(argv): parser.add_argument("-d", "--min-defense", type=int, help="Only include armors with min defense") parser.add_argument("-t", "--type", - help="Head, Body, Arms, Waist, or Legs") + help="Head, Body, Arms, Waist, or Legs", + type=str_title) parser.add_argument("-r", "--resist", - help="fire, water, thunder, ice, or dragon. Show and use as secondary sort key instead of defense") + help="fire, water, thunder, ice, or dragon." + " Show and use as secondary sort key instead of" + " defense", + type=str_lower) parser.add_argument("skills", nargs="+", help="One or more armor skills to search for") @@ -39,6 +43,10 @@ def find_armors(args): skill_ids = [] # preserve arg order decorations = {} for skill_name in args.skills: + # TODO: handle common mispellings. Some skills like FreeElemnt + # can't simply be title'd, but lower().title() could be a useful + # first pass. Another option would be to slirp in the full list + # and use difflib to search it. sid = db.get_skill_tree_id(skill_name) if sid is None: raise ValueError("Skill '%s' not found" % skill_name) @@ -100,6 +108,14 @@ def find_armors(args): print " ", a.one_line_skills_u(args.skills) +def str_lower(x): + return str(x).lower() + + +def str_title(x): + return str(x).title() + + if __name__ == '__main__': args = parse_args(None)