summaryrefslogtreecommitdiff
path: root/searx/infopage
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2022-03-16 22:24:35 +0100
committerAlexandre Flament <alex@al-f.net>2022-03-16 22:26:36 +0100
commitdbe3eaabc929fb1a9d2da8e69ab6e70ba5bcf172 (patch)
treecf8364b986480f2b1a625abe48a7c641778ede6f /searx/infopage
parentbb19c7eccf9b24927930fb364c1dc84df6a1475f (diff)
downloadsearxng-dbe3eaabc929fb1a9d2da8e69ab6e70ba5bcf172.tar.gz
searxng-dbe3eaabc929fb1a9d2da8e69ab6e70ba5bcf172.zip
Info: code refactoring & bug fixes
Diffstat (limited to 'searx/infopage')
-rw-r--r--searx/infopage/__init__.py26
1 files changed, 15 insertions, 11 deletions
diff --git a/searx/infopage/__init__.py b/searx/infopage/__init__.py
index 9b181ad60..44f3bdbd7 100644
--- a/searx/infopage/__init__.py
+++ b/searx/infopage/__init__.py
@@ -116,20 +116,20 @@ class InfoPageSet: # pylint: disable=too-few-public-methods
self, page_class: typing.Optional[typing.Type[InfoPage]] = None, info_folder: typing.Optional[str] = None
):
self.page_class = page_class or InfoPage
- self.CACHE: typing.Dict[tuple, typing.Optional[InfoPage]] = {}
-
- # future: could be set from settings.xml
-
self.folder: str = info_folder or _INFO_FOLDER
"""location of the Markdwon files"""
+ self.CACHE: typing.Dict[tuple, typing.Optional[InfoPage]] = {}
+
self.locale_default: str = 'en'
"""default language"""
- self.locales: typing.List = [locale for locale in os.listdir(_INFO_FOLDER) if locale in LOCALE_NAMES]
+ self.locales: typing.List[str] = [
+ locale.replace('_', '-') for locale in os.listdir(_INFO_FOLDER) if locale.replace('_', '-') in LOCALE_NAMES
+ ]
"""list of supported languages (aka locales)"""
- self.toc: typing.List = [
+ self.toc: typing.List[str] = [
'search-syntax',
'about',
]
@@ -161,7 +161,7 @@ class InfoPageSet: # pylint: disable=too-few-public-methods
# not yet instantiated
- fname = os.path.join(self.folder, locale, pagename) + '.md'
+ fname = os.path.join(self.folder, locale.replace('-', '_'), pagename) + '.md'
if not os.path.exists(fname):
logger.info('file %s does not exists', fname)
self.CACHE[cache_key] = None
@@ -171,9 +171,13 @@ class InfoPageSet: # pylint: disable=too-few-public-methods
self.CACHE[cache_key] = page
return page
- def all_pages(self, locale: typing.Optional[str] = None):
+ def iter_pages(self, locale: typing.Optional[str] = None, fallback_to_default=False):
"""Iterate over all pages of the TOC"""
locale = locale or self.locale_default
- for pagename in self.toc:
- page = self.get_page(pagename, locale)
- yield pagename, page
+ for page_name in self.toc:
+ page_locale = locale
+ page = self.get_page(page_name, locale)
+ if fallback_to_default and page is None:
+ page_locale = self.locale_default
+ page = self.get_page(page_name, self.locale_default)
+ yield page_name, page_locale, page