Skip to content

Commit 9bc7032

Browse files
committed
Split preprocessor logic and more code review changes
1 parent ac0b8f0 commit 9bc7032

File tree

3 files changed

+51
-37
lines changed

3 files changed

+51
-37
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/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: 48 additions & 27 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,23 @@ 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+
for lang in context["translations"]["languages"]:
109+
with open(
110+
os.path.join(
111+
context["source_path"],
112+
"" if lang == "en" else f"{lang}",
113+
context["main"]["navbar_fname"],
114+
),
115+
encoding="utf-8",
116+
) as f:
117+
navbar_lang = yaml.safe_load(f)
118+
context["navbar"][lang] = navbar_lang["navbar"]
99119
return context
100120

101121
@staticmethod
@@ -106,34 +126,35 @@ def navbar_add_info(context: dict) -> dict:
106126
``has_subitems`` that tells which one of them every element is. It
107127
also adds a ``slug`` field to be used as a CSS id.
108128
"""
129+
for i, item in enumerate(context["navbar"]["en"]):
130+
context["navbar"]["en"][i] = dict(
131+
item,
132+
has_subitems=isinstance(item["target"], list),
133+
slug=(item["name"].replace(" ", "-").lower()),
134+
)
135+
return context
136+
137+
@staticmethod
138+
def navbar_add_translated_info(context: dict) -> dict:
139+
"""
140+
Add the translated navbar content to the context, so it can be used in
141+
the templates. The translated navbar content is stored in the
142+
"""
109143

110-
def update_target(item: dict, url_prefix: str) -> None:
144+
def update_target(item: dict, prefix: str) -> None:
111145
if item.get("translated", True):
112-
item["target"] = f"{url_prefix}{item['target']}"
146+
item["target"] = f"{prefix}/{item['target']}"
113147
else:
114148
item["target"] = f"../{item['target']}"
115149

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"]):
150+
for lang in list(context["translations"]["languages"].keys())[1:]:
151+
for i, item in enumerate(context["navbar"][lang]):
130152
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)
153+
if has_subitems:
154+
for sub_item in item["target"]:
155+
update_target(sub_item, lang)
156+
else:
157+
update_target(item, lang)
137158

138159
context["navbar"][lang][i] = dict(
139160
item,

0 commit comments

Comments
 (0)