diff options
| author | Florian Fischer <florian.fl.fischer@fau.de> | 2022-01-02 15:26:32 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fl.fischer@fau.de> | 2022-01-02 15:26:32 +0100 |
| commit | f441b052e9403e949480ff48c11c71c5f08b3c83 (patch) | |
| tree | d218b3fbf1126b300e13aeb734e3e41f7f853b14 | |
| parent | af8103552bb2de043169a7e8a3f5b4a1ff0cca4e (diff) | |
| download | muhqs-game-hoverable_pngs_in_cardlisting.tar.gz muhqs-game-hoverable_pngs_in_cardlisting.zip | |
intermediate commithoverable_pngs_in_cardlisting
| -rwxr-xr-x | scripts/generate_card.py | 10 | ||||
| -rwxr-xr-x | scripts/generate_card_hover_links.py | 35 |
2 files changed, 38 insertions, 7 deletions
diff --git a/scripts/generate_card.py b/scripts/generate_card.py index 73c1b0dc..973377a1 100755 --- a/scripts/generate_card.py +++ b/scripts/generate_card.py @@ -5,6 +5,8 @@ from pathlib import Path from typing import MutableMapping, Tuple import yaml +import generate_card_hover_links + BABEL_LANGS = {'en': 'english', 'de': 'ngerman'} CARD_TEMPLATE = \ @@ -143,8 +145,14 @@ def generate_markdown(card: MutableMapping, language='en', indentation=3): yml_card_path = f'../cards-data/{card["set"]}/{file_name}.yml' built_card_path = f'../latex-build/{language}/{card["set"]}/{file_name}' + + gen_png_link_text = lambda _: 'png' + gen_png_link_target = lambda c, l: f'{built_card_path}.png' + png_hover_link = generate_card_hover_links.gen_hoverable_link( + str(file_name), gen_png_link_text, gen_png_link_target, language) + print( - f'\n[pdf]({built_card_path}.pdf) [png]({built_card_path}.png) [yml]({yml_card_path})\n' + f'\n[pdf]({built_card_path}.pdf) {png_hover_link} [yml]({yml_card_path})\n' ) for key in KEYS: 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) |
