.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
 

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 105 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 115 of file __init__.py.

117 ):
118 self.page_class = page_class or InfoPage
119 self.folder: str = info_folder or _INFO_FOLDER
120 """location of the Markdown files"""
121
122 self.CACHE: typing.Dict[tuple, typing.Optional[InfoPage]] = {}
123
124 self.locale_default: str = 'en'
125 """default language"""
126
127 self.locales: typing.List[str] = [
128 locale.replace('_', '-') for locale in os.listdir(_INFO_FOLDER) if locale.replace('_', '-') in LOCALE_NAMES
129 ]
130 """list of supported languages (aka locales)"""
131
132 self.toc: typing.List[str] = [
133 'search-syntax',
134 'about',
135 'donate',
136 ]
137 """list of articles in the online documentation"""
138

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

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

References searx.infopage.InfoPageSet.page_class.

Referenced by searx.infopage.InfoPageSet.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 174 of file __init__.py.

174 def iter_pages(self, locale: typing.Optional[str] = None, fallback_to_default=False):
175 """Iterate over all pages of the TOC"""
176 locale = locale or self.locale_default
177 for page_name in self.toc:
178 page_locale = locale
179 page = self.get_page(page_name, locale)
180 if fallback_to_default and page is None:
181 page_locale = self.locale_default
182 page = self.get_page(page_name, self.locale_default)
183 if page is not None:
184 # page is None if the page was deleted by the administrator
185 yield page_name, page_locale, page

References searx.infopage.InfoPageSet.get_page().

+ Here is the call graph for this function:

Member Data Documentation

◆ page_class

searx.infopage.InfoPageSet.page_class

Definition at line 118 of file __init__.py.

Referenced by searx.infopage.InfoPageSet.get_page().


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