def name_from_colors(colors: List[str]) -> str: ordered = mana.order(colors) for name, symbols in COLOR_COMBINATIONS.items(): if mana.order(symbols) == ordered: if len(symbols) == 1: return 'mono {name}'.format(name=name) return name return 'colorless'
def name_from_colors(colors, s=''): ordered = mana.order(colors) for name, symbols in COLOR_COMBINATIONS.items(): if mana.order(symbols) == ordered: if len(symbols) == 1: if s.startswith('deck wins') or s.startswith('weenie') or s.startswith('suicide'): return name return 'mono {name}'.format(name=name) return name return 'colorless'
def canonicalize_colors(colors: List[str]) -> List[str]: color_words = [] for color in colors: color_words.append(standardize_color_string(color)) canonical_colors: Set[str] = set() for color in color_words: for name, symbols in COLOR_COMBINATIONS.items(): if name == color: canonical_colors = canonical_colors | set(symbols) return mana.order(canonical_colors)
def set_colors(d: Deck) -> None: deck_colors: Set[str] = set() deck_colored_symbols: List[str] = [] for c in [entry.card for entry in d.maindeck + d.sideboard]: for cost in c.get('mana_cost') or (): if c.layout == 'split': continue # They might only be using one half so ignore it. card_symbols = mana.parse(cost) card_colors = mana.colors(card_symbols) deck_colors.update(card_colors['required']) card_colored_symbols = mana.colored_symbols(card_symbols) deck_colored_symbols += card_colored_symbols['required'] d.colors = mana.order(deck_colors) d.colored_symbols = deck_colored_symbols
def set_colors(d): deck_colors = set() deck_colored_symbols = [] for card in [c['card'] for c in d.maindeck + d.sideboard]: for cost in card.get('mana_cost') or (): if card.layout == 'split' or card.layout == 'aftermath': continue # They might only be using one half so ignore it. card_symbols = mana.parse(cost) card_colors = mana.colors(card_symbols) deck_colors.update(card_colors['required']) card_colored_symbols = mana.colored_symbols(card_symbols) deck_colored_symbols += card_colored_symbols['required'] d.colors = mana.order(deck_colors) d.colored_symbols = deck_colored_symbols
def name_from_colors(colors: List[str]) -> str: ordered = mana.order(colors) for name, symbols in COLOR_COMBINATIONS.items(): if mana.order(symbols) == ordered: return name return 'colorless'
def test_order() -> None: assert mana.order(['U']) == ['U'] assert mana.order(['W', 'U', 'B']) == ['W', 'U', 'B'] assert mana.order(['B', 'W', 'U']) == ['W', 'U', 'B'] assert mana.order(['R', 'G']) == ['R', 'G'] assert mana.order(['G', 'R']) == ['R', 'G'] assert mana.order(['G', 'U']) == ['G', 'U'] assert mana.order(['U', 'G']) == ['G', 'U'] assert mana.order(['W', 'G']) == ['G', 'W'] assert mana.order(['W', 'G', 'B']) == ['B', 'G', 'W'] assert mana.order(['G', 'R', 'B']) == ['B', 'R', 'G'] assert mana.order(['W', 'G', 'R', 'B']) == ['B', 'R', 'G', 'W']