Skip to content

Commit 6a7f4ac

Browse files
committed
preprocess files, improve lang selector formatting
- preprocess files so gathered metadata is only generated once - improve language selector - remove duplicates - sort entries - put each entry on a newline to make diffs easier to read - these updates do result in changes to the legalcode files when the script is run, but the changes do NOT modify elements of the [Legal Code Defined - Creative Commons](https://creativecommons.org/legal-code-defined/)
1 parent 2dfc08e commit 6a7f4ac

File tree

1 file changed

+30
-26
lines changed

1 file changed

+30
-26
lines changed

tools/update_cc4_includes.py

+30-26
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ class UpdateLicenseCode(object):
4646

4747
languages = {}
4848

49+
license_data = {}
50+
51+
license_types = []
52+
4953
iso_to_language = {
5054
"ar": "العربية",
5155
"be": "Беларуская",
@@ -58,7 +62,6 @@ class UpdateLicenseCode(object):
5862
"en": "English",
5963
"eo": "Esperanto",
6064
"es": "Español",
61-
"es_ES": "Castellano (España)",
6265
"eu": "euskara",
6366
"fa": "پارسی",
6467
"fi": "suomeksi",
@@ -102,7 +105,6 @@ class UpdateLicenseCode(object):
102105
"en": "This page is available in the following languages:",
103106
"eo": "Ĉi tiu paĝo estas disponebla en la jenaj lingvoj:",
104107
"es": "Esta página está disponible en los siguientes idiomas:",
105-
"es_ES": "",
106108
"eu": "Orri hau hizkuntza hauetan ikus daiteke:",
107109
"fa": "این صفحه به زبان های زیر در دسترس است : ",
108110
"fi": "Tämä sivu on saatavilla seuraavilla kielillä:",
@@ -181,6 +183,23 @@ def get_path(self):
181183

182184
def process_files(self, filelist):
183185
"""File processing loop"""
186+
languages = {}
187+
license_types = []
188+
# pre-process
189+
for filepath in filelist:
190+
license_data = self.parse_filename(filepath)
191+
type_ = license_data["type"]
192+
license_types.append(type_)
193+
if type_ not in languages:
194+
languages[type_] = []
195+
languages[type_].append(license_data["language"])
196+
self.license_data[filepath] = license_data
197+
# sort and store data
198+
self.license_types = sorted(list(set(license_types)))
199+
for type_ in self.license_types:
200+
self.languages[type_] = []
201+
self.languages[type_] = sorted(list(set(languages[type_])))
202+
# process files
184203
for filepath in filelist:
185204
self.process_file(filepath)
186205

@@ -232,50 +251,35 @@ def add_includes(self, content):
232251

233252
def add_language_selector(self, content, filepath):
234253
"""Build and insert a language selector dropdown list."""
235-
# Get a list of all the other languages for this license type and store
236-
# it so it can be reused.
237-
license_data = self.parse_filename(filepath)
238-
if license_data["type"] not in self.languages:
239-
self.languages[license_data["type"]] = []
240-
glob_string = (
241-
f"{license_data['type']}_{license_data['version']}*.html"
242-
)
243-
language_file_list = [f for f in self.path.glob(glob_string)]
244-
for filepath in language_file_list:
245-
sibling_data = self.parse_filename(filepath)
246-
self.languages[license_data["type"]].append(
247-
sibling_data["language"]
248-
)
249-
self.languages[license_data["type"]].sort()
250-
254+
license_data = self.license_data[filepath]
251255
current_language = license_data["language"]
252256
sibling_languages = self.languages[license_data["type"]]
253257

254258
selector = (
255259
'<div id="language-selector-block" class="container">'
256-
' <div class="language-selector-inner">'
257-
f"{self.lang_sel_text[current_language]}"
258-
' <img class="language-icon"'
259-
' src="/images/language_icon_x2.png" alt="Languages" />'
260-
" <select>"
260+
'\n<div class="language-selector-inner">'
261+
f"\n{self.lang_sel_text[current_language]}"
262+
'\n<img class="language-icon"'
263+
' src="/images/language_icon_x2.png" alt="Languages">'
264+
"\n<select>"
261265
)
262266
for iso_code in sibling_languages:
263267
# Set the selected option to the current language of the page
264268
selected = ""
265269
if iso_code == current_language:
266-
selected = ' selected="selected" '
270+
selected = ' selected="selected"'
267271
# Determine to option value for the language. English breaks the
268272
# pattern so handle it differently.
269273
option_value = f"legalcode.{iso_code}"
270274
if iso_code == "en":
271275
option_value = "legalcode"
272276
# Add the selector vlaue
273277
selector = (
274-
f'{selector}<option value="{option_value}"{selected}>'
278+
f'{selector}\n<option value="{option_value}"{selected}>'
275279
f"{self.iso_to_language[iso_code]}"
276280
"</option>"
277281
)
278-
selector = f"{selector} </select> </div></div>"
282+
selector = f"{selector}\n</select>\n</div>\n</div>"
279283

280284
# Add the language selector block to the content
281285
start, end = UpdateLicenseCode.placeholders["language-selector"]

0 commit comments

Comments
 (0)