From b5cd4df7958b5484a56843b237154c845faa159d Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Mon, 16 Jan 2017 18:59:06 +0000 Subject: [PATCH 1/4] fix(vehicles): p/t ok on noncreature vehicles Fixes #14. --- lib/cardlib.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/cardlib.py b/lib/cardlib.py index a5df0e3..56fe6e4 100644 --- a/lib/cardlib.py +++ b/lib/cardlib.py @@ -166,11 +166,15 @@ def fields_check_valid(fields): return False if not field_types in fields: return False - # creatures have p/t, other things don't + # creatures and vehicles have p/t, other things don't iscreature = False for idx, value in fields[field_types]: if 'creature' in value: iscreature = True + if fields.get(field_subtypes): + for idx, value in fields[field_subtypes]: + if 'vehicle' in value: + iscreature = True if iscreature: return field_pt in fields else: From a961baf9ed6deda242549fe6c014ae22ff1ff8fc Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Mon, 16 Jan 2017 19:23:04 +0000 Subject: [PATCH 2/4] refactor(vehicles): speedup Don't check subtypes if we already know it's a creature. --- lib/cardlib.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/cardlib.py b/lib/cardlib.py index 56fe6e4..dbc7ca8 100644 --- a/lib/cardlib.py +++ b/lib/cardlib.py @@ -171,10 +171,10 @@ def fields_check_valid(fields): for idx, value in fields[field_types]: if 'creature' in value: iscreature = True - if fields.get(field_subtypes): - for idx, value in fields[field_subtypes]: - if 'vehicle' in value: - iscreature = True + elif fields.get(field_subtypes): + for idx, value in fields[field_subtypes]: + if 'vehicle' in value: + iscreature = True if iscreature: return field_pt in fields else: From 4a8f9db7b0f2fe8c8da47231648b212d3c584c8d Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Tue, 17 Jan 2017 19:54:29 +0000 Subject: [PATCH 3/4] test(vehicles): check p/t and crew --- scripts/mtg_validate.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/scripts/mtg_validate.py b/scripts/mtg_validate.py index 1329ebc..c11367b 100755 --- a/scripts/mtg_validate.py +++ b/scripts/mtg_validate.py @@ -63,8 +63,8 @@ def check_types(card): return list_only(card.types, ['tribal', 'artifact', 'land', 'enchantment']) def check_pt(card): - if 'creature' in card.types or card.pt: - return (('creature' in card.types and len(re.findall(re.escape('/'), card.pt)) == 1) + if ('creature' in card.types or 'vehicle' in card.subtypes) or card.pt: + return ((('creature' in card.types or 'vehicle' in card.subtypes) and len(re.findall(re.escape('/'), card.pt)) == 1) and not card.loyalty) if 'planeswalker' in card.types or card.loyalty: return (('planeswalker' in card.types and card.loyalty) @@ -202,6 +202,12 @@ def check_equipment(card): else: return None +def check_vehicles(card): + if 'vehicle' in card.subtypes: + return 'crew' in card.text.text + else: + return None + def check_planeswalkers(card): if 'planeswalker' in card.types: good_lines = 0 @@ -350,6 +356,7 @@ props = OrderedDict([ ('quotes', check_quotes), ('auras', check_auras), ('equipment', check_equipment), + ('vehicles', check_vehicles), ('planeswalkers', check_planeswalkers), ('levelup', check_levelup), ('chosen', check_chosen), From 50c903f349245d5d40560cd8217026657b05c133 Mon Sep 17 00:00:00 2001 From: Bill Zorn Date: Tue, 17 Jan 2017 15:57:15 -0800 Subject: [PATCH 4/4] minor cleanup --- lib/cardlib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cardlib.py b/lib/cardlib.py index dbc7ca8..fdf04ed 100644 --- a/lib/cardlib.py +++ b/lib/cardlib.py @@ -171,7 +171,7 @@ def fields_check_valid(fields): for idx, value in fields[field_types]: if 'creature' in value: iscreature = True - elif fields.get(field_subtypes): + elif field_subtypes in fields: for idx, value in fields[field_subtypes]: if 'vehicle' in value: iscreature = True