.oO SearXNG Developer Documentation Oo.
Loading...
Searching...
No Matches
searx.infopage.InfoPageSet Class Reference
Collaboration diagram for searx.infopage.InfoPageSet:

Public Member Functions

 __init__ (self, type[InfoPage]|None page_class=None, str|None info_folder=None)
 get_page (self, str pagename, str|None locale=None)
 iter_pages (self, str|None locale=None, bool fallback_to_default=False)

Public Attributes

type[InfoPagepage_class = page_class or InfoPage
str folder = info_folder or _INFO_FOLDER
dict CACHE = {}
str locale_default = 'en'
list locales
list toc

Detailed Description

Cached rendering of the online documentation a SearXNG instance has.

:param page_class: render online documentation by :py:obj:`InfoPage` parser.
:type page_class: :py:obj:`InfoPage`

:param info_folder: information directory
:type info_folder: str

Definition at line 117 of file __init__.py.

Constructor & Destructor Documentation

◆ __init__()

searx.infopage.InfoPageSet.__init__ ( self,
type[InfoPage] | None page_class = None,
str | None info_folder = None )

Definition at line 127 of file __init__.py.

127 def __init__(self, page_class: type[InfoPage] | None = None, info_folder: str | None = None):
128 self.page_class: type[InfoPage] = page_class or InfoPage
129 self.folder: str = info_folder or _INFO_FOLDER
130 """location of the Markdown files"""
131
132 self.CACHE: dict[tuple[str, str], InfoPage | None] = {}
133
134 self.locale_default: str = 'en'
135 """default language"""
136
137 self.locales: list[str] = [
138 locale.replace('_', '-') for locale in os.listdir(_INFO_FOLDER) if locale.replace('_', '-') in LOCALE_NAMES
139 ]
140 """list of supported languages (aka locales)"""
141
142 self.toc: list[str] = [
143 'search-syntax',
144 'about',
145 'donate',
146 ]
147 """list of articles in the online documentation"""
148

Member Function Documentation

◆ get_page()

searx.infopage.InfoPageSet.get_page ( self,
str pagename,
str | None locale = None )
Return ``pagename`` instance of :py:obj:`InfoPage`

:param pagename: name of the page, a value from :py:obj:`InfoPageSet.toc`
:type pagename: str

:param locale: language of the page, e.g. ``en``, ``zh_Hans_CN``
               (default: :py:obj:`InfoPageSet.i18n_origin`)
:type locale: str

Definition at line 149 of file __init__.py.

149 def get_page(self, pagename: str, locale: str | None = None):
150 """Return ``pagename`` instance of :py:obj:`InfoPage`
151
152 :param pagename: name of the page, a value from :py:obj:`InfoPageSet.toc`
153 :type pagename: str
154
155 :param locale: language of the page, e.g. ``en``, ``zh_Hans_CN``
156 (default: :py:obj:`InfoPageSet.i18n_origin`)
157 :type locale: str
158
159 """
160 locale = locale or self.locale_default
161
162 if pagename not in self.toc:
163 return None
164 if locale not in self.locales:
165 return None
166
167 cache_key = (pagename, locale)
168
169 if cache_key in self.CACHE:
170 return self.CACHE[cache_key]
171
172 # not yet instantiated
173
174 fname = os.path.join(self.folder, locale.replace('-', '_'), pagename) + '.md'
175 if not os.path.exists(fname):
176 logger.info('file %s does not exists', fname)
177 self.CACHE[cache_key] = None
178 return None
179
180 page = self.page_class(fname)
181 self.CACHE[cache_key] = page
182 return page
183

References CACHE, folder, locale_default, locales, page_class, and toc.

Referenced by iter_pages().

Here is the caller graph for this function:

◆ iter_pages()

searx.infopage.InfoPageSet.iter_pages ( self,
str | None locale = None,
bool fallback_to_default = False )
Iterate over all pages of the TOC

Definition at line 184 of file __init__.py.

184 def iter_pages(self, locale: str | None = None, fallback_to_default: bool = False):
185 """Iterate over all pages of the TOC"""
186 locale = locale or self.locale_default
187 for page_name in self.toc:
188 page_locale = locale
189 page = self.get_page(page_name, locale)
190 if fallback_to_default and page is None:
191 page_locale = self.locale_default
192 page = self.get_page(page_name, self.locale_default)
193 if page is not None:
194 # page is None if the page was deleted by the administrator
195 yield page_name, page_locale, page

References get_page(), locale_default, and toc.

Here is the call graph for this function:

Member Data Documentation

◆ CACHE

dict searx.infopage.InfoPageSet.CACHE = {}

Definition at line 132 of file __init__.py.

Referenced by get_page().

◆ folder

str searx.infopage.InfoPageSet.folder = info_folder or _INFO_FOLDER

Definition at line 129 of file __init__.py.

Referenced by get_page().

◆ locale_default

str searx.infopage.InfoPageSet.locale_default = 'en'

Definition at line 134 of file __init__.py.

Referenced by get_page(), and iter_pages().

◆ locales

list searx.infopage.InfoPageSet.locales
Initial value:
= [
locale.replace('_', '-') for locale in os.listdir(_INFO_FOLDER) if locale.replace('_', '-') in LOCALE_NAMES
]

Definition at line 137 of file __init__.py.

Referenced by get_page().

◆ page_class

type[InfoPage] searx.infopage.InfoPageSet.page_class = page_class or InfoPage

Definition at line 128 of file __init__.py.

Referenced by get_page().

◆ toc

list searx.infopage.InfoPageSet.toc
Initial value:
= [
'search-syntax',
'about',
'donate',
]

Definition at line 142 of file __init__.py.

Referenced by get_page(), and iter_pages().


The documentation for this class was generated from the following file:
  • /home/andrew/Documents/code/public/searxng/searx/infopage/__init__.py