diff options
Diffstat (limited to 'scripts/generate_card_hover_links.py')
| -rwxr-xr-x | scripts/generate_card_hover_links.py | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/scripts/generate_card_hover_links.py b/scripts/generate_card_hover_links.py index d3b11f3f..a835e172 100755 --- a/scripts/generate_card_hover_links.py +++ b/scripts/generate_card_hover_links.py @@ -2,6 +2,7 @@ import argparse from pathlib import Path import re +from typing import Callable from data import CARDS_TO_SETS @@ -41,27 +42,49 @@ f'''<a href="{{link_target}}" PLACEHOLDER_ID = 0 +GenLinkCallback = Callable[[str, str], str] -def replace_with_link(match, language) -> str: - card = match.group('card') - link_text = f'<em>{card}</em>' + +def gen_hoverable_link(card: str, gen_link_text: Callable[[str], str], + gen_link_target: GenLinkCallback, language: str) -> str: + """Return the hoverable link generated for the match + + :param card: the card name + :param gen_link_text: a Callable returning the link text as string + :param gen_link_target: a Callable returning the link target as string + :param language: the language + :returns: the code of the hoverable link + """ + link_text = gen_link_text(card) + + link_target = gen_link_target(card, language) cannonical_name = card.lower().replace(' ', '_') - card_listing_target = cannonical_name.replace('_', '-').replace('!', '') - link_target = f'{language}/cards_listing.html#{card_listing_target}' card_img = f'latex-build/{language}/{CARDS_TO_SETS[cannonical_name]}/{cannonical_name}.png' + global PLACEHOLDER_ID placeholder_id = PLACEHOLDER_ID PLACEHOLDER_ID += 1 + return HOVERABLE_LINK.format(link_target=link_target, pid=placeholder_id, img_target=card_img, link_text=link_text) +def gen_link_to_cardlisting(card: str, language: str) -> str: + """Return the link to a card in the card listing""" + + cannonical_name = card.lower().replace(' ', '_') + card_listing_target = cannonical_name.replace('_', '-').replace('!', '') + return f'{language}/cards_listing.html#{card_listing_target}' + + def replace_all_links(string: str, language='en') -> str: """Replace a document containing all included cards""" - sub_func = lambda match: replace_with_link(match, language=language) + gen_link_text = lambda card: f'<em>{card}</em>' + sub_func = lambda match: gen_hoverable_link(match.group( + 'card'), gen_link_text, gen_link_to_cardlisting, language) return re.sub(PATTERN, sub_func, string) |
