.oO SearXNG Developer Documentation Oo.
Loading...
Searching...
No Matches
searx.infopage.InfoPageSet Class Reference

Public Member Functions

 __init__ (self, typing.Optional[typing.Type[InfoPage]] page_class=None, typing.Optional[str] info_folder=None)
 
 get_page (self, str pagename, typing.Optional[str] locale=None)
 
 iter_pages (self, typing.Optional[str] locale=None, fallback_to_default=False)
 

Public Attributes

 page_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 118 of file __init__.py.

Constructor & Destructor Documentation

◆ __init__()

searx.infopage.InfoPageSet.__init__ ( self,
typing.Optional[typing.Type[InfoPage]] page_class = None,
typing.Optional[str] info_folder = None )

Definition at line 128 of file __init__.py.

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

Member Function Documentation

◆ get_page()

searx.infopage.InfoPageSet.get_page ( self,
str pagename,
typing.Optional[str] 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 152 of file __init__.py.

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

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,
typing.Optional[str] locale = None,
fallback_to_default = False )
Iterate over all pages of the TOC

Definition at line 187 of file __init__.py.

187 def iter_pages(self, locale: typing.Optional[str] = None, fallback_to_default=False):
188 """Iterate over all pages of the TOC"""
189 locale = locale or self.locale_default
190 for page_name in self.toc:
191 page_locale = locale
192 page = self.get_page(page_name, locale)
193 if fallback_to_default and page is None:
194 page_locale = self.locale_default
195 page = self.get_page(page_name, self.locale_default)
196 if page is not None:
197 # page is None if the page was deleted by the administrator
198 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 135 of file __init__.py.

Referenced by get_page().

◆ folder

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

Definition at line 132 of file __init__.py.

Referenced by get_page().

◆ locale_default

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

Definition at line 137 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 140 of file __init__.py.

Referenced by get_page().

◆ page_class

searx.infopage.InfoPageSet.page_class = page_class or InfoPage

Definition at line 131 of file __init__.py.

Referenced by get_page().

◆ toc

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

Definition at line 145 of file __init__.py.

Referenced by get_page(), and iter_pages().


The documentation for this class was generated from the following file: