Skip to content

Commit 3d8a7c3

Browse files
committed
Split preprocessor logic and more code review changes
1 parent ac0b8f0 commit 3d8a7c3

File tree

4 files changed

+56
-40
lines changed

4 files changed

+56
-40
lines changed

.gitignore

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -141,12 +141,3 @@ doc/source/savefig/
141141
# Pyodide/WASM related files #
142142
##############################
143143
/.pyodide-xbuildenv-*
144-
145-
146-
# Web & Translations #
147-
##############################
148-
web/preview/
149-
web/pandas-translations-main/
150-
web/pandas/es/
151-
web/pandas/pt/
152-
web/pandas/fr/

web/pandas/_templates/layout.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060

6161
<div class="collapse navbar-collapse" id="nav-content">
6262
<ul class="navbar-nav ms-auto">
63-
{% for item in navbar[lang] %}
63+
{% for item in navbar_translations[lang] %}
6464
{% if not item.has_subitems %}
6565
<li class="nav-item">
6666
<a class="nav-link" href="{% if not item.target.startswith("http") %}{{ base_url }}{% endif %}{{ item.target }}">{{ item.name }}</a>

web/pandas/config.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ main:
88
- config.yml
99
github_repo_url: pandas-dev/pandas
1010
context_preprocessors:
11-
- pandas_web.Preprocessors.process_translations
1211
- pandas_web.Preprocessors.current_year
12+
- pandas_web.Preprocessors.download_translated_content
13+
- pandas_web.Preprocessors.add_navbar_content
1314
- pandas_web.Preprocessors.navbar_add_info
15+
- pandas_web.Preprocessors.navbar_add_translated_info
1416
- pandas_web.Preprocessors.blog_add_posts
1517
- pandas_web.Preprocessors.maintainers_add_info
1618
- pandas_web.Preprocessors.home_add_releases

web/pandas_web.py

Lines changed: 52 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,16 @@ class Preprocessors:
6767
"""
6868

6969
@staticmethod
70-
def process_translations(context: dict) -> dict:
70+
def current_year(context: dict) -> dict:
71+
"""
72+
Add the current year to the context, so it can be used for the copyright
73+
note, or other places where it is needed.
74+
"""
75+
context["current_year"] = datetime.datetime.now().year
76+
return context
77+
78+
@staticmethod
79+
def download_translated_content(context: dict) -> dict:
7180
"""
7281
Download the translations from the GitHub repository and extract them.
7382
"""
@@ -90,12 +99,25 @@ def process_translations(context: dict) -> dict:
9099
return context
91100

92101
@staticmethod
93-
def current_year(context: dict) -> dict:
102+
def add_navbar_content(context: dict) -> dict:
94103
"""
95-
Add the current year to the context, so it can be used for the copyright
96-
note, or other places where it is needed.
104+
Add the original and translated navbar content to the context, so it can
105+
be used in the templates.
97106
"""
98-
context["current_year"] = datetime.datetime.now().year
107+
context["navbar"] = {}
108+
context["navbar_translations"] = {}
109+
for lang in context["translations"]["languages"]:
110+
with open(
111+
os.path.join(
112+
context["source_path"],
113+
"" if lang == "en" else f"{lang}",
114+
context["main"]["navbar_fname"],
115+
),
116+
encoding="utf-8",
117+
) as f:
118+
navbar_lang = yaml.safe_load(f)
119+
context["navbar_translations"][lang] = navbar_lang["navbar"]
120+
context["navbar"] = context["navbar_translations"]["en"]
99121
return context
100122

101123
@staticmethod
@@ -106,36 +128,37 @@ def navbar_add_info(context: dict) -> dict:
106128
``has_subitems`` that tells which one of them every element is. It
107129
also adds a ``slug`` field to be used as a CSS id.
108130
"""
131+
for i, item in enumerate(context["navbar"]):
132+
context["navbar"][i] = dict(
133+
item,
134+
has_subitems=isinstance(item["target"], list),
135+
slug=(item["name"].replace(" ", "-").lower()),
136+
)
137+
return context
138+
139+
@staticmethod
140+
def navbar_add_translated_info(context: dict) -> dict:
141+
"""
142+
Add the translated navbar content to the context, so it can be used in
143+
the templates. The translated navbar content is stored in the
144+
"""
109145

110-
def update_target(item: dict, url_prefix: str) -> None:
146+
def update_target(item: dict, prefix: str) -> None:
111147
if item.get("translated", True):
112-
item["target"] = f"{url_prefix}{item['target']}"
148+
item["target"] = f"{prefix}/{item['target']}"
113149
else:
114150
item["target"] = f"../{item['target']}"
115151

116-
context["navbar"] = {}
117-
for lang in context["translations"]["languages"]:
118-
prefix = "" if lang == "en" else lang
119-
url_prefix = "" if lang == "en" else lang + "/"
120-
with open(
121-
os.path.join(
122-
context["source_path"], prefix, context["main"]["navbar_fname"]
123-
),
124-
encoding="utf-8",
125-
) as f:
126-
navbar_lang = yaml.safe_load(f)
127-
128-
context["navbar"][lang] = navbar_lang["navbar"]
129-
for i, item in enumerate(navbar_lang["navbar"]):
152+
for lang in list(context["translations"]["languages"].keys())[1:]:
153+
for i, item in enumerate(context["navbar_translations"][lang]):
130154
has_subitems = isinstance(item["target"], list)
131-
if lang != "en":
132-
if has_subitems:
133-
for sub_item in item["target"]:
134-
update_target(sub_item, url_prefix)
135-
else:
136-
update_target(item, url_prefix)
137-
138-
context["navbar"][lang][i] = dict(
155+
if has_subitems:
156+
for sub_item in item["target"]:
157+
update_target(sub_item, lang)
158+
else:
159+
update_target(item, lang)
160+
161+
context["navbar_translations"][lang][i] = dict(
139162
item,
140163
has_subitems=has_subitems,
141164
slug=(item["name"].replace(" ", "-").lower()),

0 commit comments

Comments
 (0)