aboutsummaryrefslogtreecommitdiff
path: root/scripts/generate_card_hover_links.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/generate_card_hover_links.py')
-rwxr-xr-xscripts/generate_card_hover_links.py35
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)