From cf7da1843c45a4c2df7a749f7886a2d2ba0ee92a Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 15 Apr 2024 19:25:40 +0200 Subject: Adding upstream version 7.2.6. Signed-off-by: Daniel Baumann --- sphinx/search/__init__.py | 556 +++++ sphinx/search/da.py | 120 + sphinx/search/de.py | 303 +++ sphinx/search/en.py | 220 ++ sphinx/search/es.py | 363 +++ sphinx/search/fi.py | 113 + sphinx/search/fr.py | 199 ++ sphinx/search/hu.py | 226 ++ sphinx/search/it.py | 316 +++ sphinx/search/ja.py | 531 +++++ sphinx/search/minified-js/base-stemmer.js | 1 + sphinx/search/minified-js/danish-stemmer.js | 1 + sphinx/search/minified-js/dutch-stemmer.js | 1 + sphinx/search/minified-js/finnish-stemmer.js | 1 + sphinx/search/minified-js/french-stemmer.js | 1 + sphinx/search/minified-js/german-stemmer.js | 1 + sphinx/search/minified-js/hungarian-stemmer.js | 1 + sphinx/search/minified-js/italian-stemmer.js | 1 + sphinx/search/minified-js/norwegian-stemmer.js | 1 + sphinx/search/minified-js/porter-stemmer.js | 1 + sphinx/search/minified-js/portuguese-stemmer.js | 1 + sphinx/search/minified-js/romanian-stemmer.js | 1 + sphinx/search/minified-js/russian-stemmer.js | 1 + sphinx/search/minified-js/spanish-stemmer.js | 1 + sphinx/search/minified-js/swedish-stemmer.js | 1 + sphinx/search/minified-js/turkish-stemmer.js | 1 + sphinx/search/nl.py | 127 + sphinx/search/no.py | 202 ++ sphinx/search/non-minified-js/base-stemmer.js | 294 +++ sphinx/search/non-minified-js/danish-stemmer.js | 310 +++ sphinx/search/non-minified-js/dutch-stemmer.js | 685 ++++++ sphinx/search/non-minified-js/finnish-stemmer.js | 790 +++++++ sphinx/search/non-minified-js/french-stemmer.js | 1325 +++++++++++ sphinx/search/non-minified-js/german-stemmer.js | 577 +++++ sphinx/search/non-minified-js/hungarian-stemmer.js | 711 ++++++ sphinx/search/non-minified-js/italian-stemmer.js | 996 ++++++++ sphinx/search/non-minified-js/norwegian-stemmer.js | 261 +++ sphinx/search/non-minified-js/porter-stemmer.js | 749 ++++++ .../search/non-minified-js/portuguese-stemmer.js | 914 ++++++++ sphinx/search/non-minified-js/romanian-stemmer.js | 872 +++++++ sphinx/search/non-minified-js/russian-stemmer.js | 624 +++++ sphinx/search/non-minified-js/spanish-stemmer.js | 990 ++++++++ sphinx/search/non-minified-js/swedish-stemmer.js | 265 +++ sphinx/search/non-minified-js/turkish-stemmer.js | 2439 ++++++++++++++++++++ sphinx/search/pt.py | 261 +++ sphinx/search/ro.py | 22 + sphinx/search/ru.py | 251 ++ sphinx/search/sv.py | 140 ++ sphinx/search/tr.py | 22 + sphinx/search/zh.py | 262 +++ 50 files changed, 17052 insertions(+) create mode 100644 sphinx/search/__init__.py create mode 100644 sphinx/search/da.py create mode 100644 sphinx/search/de.py create mode 100644 sphinx/search/en.py create mode 100644 sphinx/search/es.py create mode 100644 sphinx/search/fi.py create mode 100644 sphinx/search/fr.py create mode 100644 sphinx/search/hu.py create mode 100644 sphinx/search/it.py create mode 100644 sphinx/search/ja.py create mode 100644 sphinx/search/minified-js/base-stemmer.js create mode 100644 sphinx/search/minified-js/danish-stemmer.js create mode 100644 sphinx/search/minified-js/dutch-stemmer.js create mode 100644 sphinx/search/minified-js/finnish-stemmer.js create mode 100644 sphinx/search/minified-js/french-stemmer.js create mode 100644 sphinx/search/minified-js/german-stemmer.js create mode 100644 sphinx/search/minified-js/hungarian-stemmer.js create mode 100644 sphinx/search/minified-js/italian-stemmer.js create mode 100644 sphinx/search/minified-js/norwegian-stemmer.js create mode 100644 sphinx/search/minified-js/porter-stemmer.js create mode 100644 sphinx/search/minified-js/portuguese-stemmer.js create mode 100644 sphinx/search/minified-js/romanian-stemmer.js create mode 100644 sphinx/search/minified-js/russian-stemmer.js create mode 100644 sphinx/search/minified-js/spanish-stemmer.js create mode 100644 sphinx/search/minified-js/swedish-stemmer.js create mode 100644 sphinx/search/minified-js/turkish-stemmer.js create mode 100644 sphinx/search/nl.py create mode 100644 sphinx/search/no.py create mode 100644 sphinx/search/non-minified-js/base-stemmer.js create mode 100644 sphinx/search/non-minified-js/danish-stemmer.js create mode 100644 sphinx/search/non-minified-js/dutch-stemmer.js create mode 100644 sphinx/search/non-minified-js/finnish-stemmer.js create mode 100644 sphinx/search/non-minified-js/french-stemmer.js create mode 100644 sphinx/search/non-minified-js/german-stemmer.js create mode 100644 sphinx/search/non-minified-js/hungarian-stemmer.js create mode 100644 sphinx/search/non-minified-js/italian-stemmer.js create mode 100644 sphinx/search/non-minified-js/norwegian-stemmer.js create mode 100644 sphinx/search/non-minified-js/porter-stemmer.js create mode 100644 sphinx/search/non-minified-js/portuguese-stemmer.js create mode 100644 sphinx/search/non-minified-js/romanian-stemmer.js create mode 100644 sphinx/search/non-minified-js/russian-stemmer.js create mode 100644 sphinx/search/non-minified-js/spanish-stemmer.js create mode 100644 sphinx/search/non-minified-js/swedish-stemmer.js create mode 100644 sphinx/search/non-minified-js/turkish-stemmer.js create mode 100644 sphinx/search/pt.py create mode 100644 sphinx/search/ro.py create mode 100644 sphinx/search/ru.py create mode 100644 sphinx/search/sv.py create mode 100644 sphinx/search/tr.py create mode 100644 sphinx/search/zh.py (limited to 'sphinx/search') diff --git a/sphinx/search/__init__.py b/sphinx/search/__init__.py new file mode 100644 index 0000000..21758d3 --- /dev/null +++ b/sphinx/search/__init__.py @@ -0,0 +1,556 @@ +"""Create a full-text search index for offline search.""" +from __future__ import annotations + +import dataclasses +import functools +import html +import json +import pickle +import re +from importlib import import_module +from os import path +from typing import IO, TYPE_CHECKING, Any + +from docutils import nodes +from docutils.nodes import Element, Node + +from sphinx import addnodes, package_dir +from sphinx.environment import BuildEnvironment +from sphinx.util.index_entries import split_index_msg + +if TYPE_CHECKING: + from collections.abc import Iterable + + +class SearchLanguage: + """ + This class is the base class for search natural language preprocessors. If + you want to add support for a new language, you should override the methods + of this class. + + You should override `lang` class property too (e.g. 'en', 'fr' and so on). + + .. attribute:: stopwords + + This is a set of stop words of the target language. Default `stopwords` + is empty. This word is used for building index and embedded in JS. + + .. attribute:: js_splitter_code + + Return splitter function of JavaScript version. The function should be + named as ``splitQuery``. And it should take a string and return list of + strings. + + .. versionadded:: 3.0 + + .. attribute:: js_stemmer_code + + Return stemmer class of JavaScript version. This class' name should be + ``Stemmer`` and this class must have ``stemWord`` method. This string is + embedded as-is in searchtools.js. + + This class is used to preprocess search word which Sphinx HTML readers + type, before searching index. Default implementation does nothing. + """ + lang: str | None = None + language_name: str | None = None + stopwords: set[str] = set() + js_splitter_code: str = "" + js_stemmer_rawcode: str | None = None + js_stemmer_code = """ +/** + * Dummy stemmer for languages without stemming rules. + */ +var Stemmer = function() { + this.stemWord = function(w) { + return w; + } +} +""" + + _word_re = re.compile(r'\w+') + + def __init__(self, options: dict) -> None: + self.options = options + self.init(options) + + def init(self, options: dict) -> None: + """ + Initialize the class with the options the user has given. + """ + + def split(self, input: str) -> list[str]: + """ + This method splits a sentence into words. Default splitter splits input + at white spaces, which should be enough for most languages except CJK + languages. + """ + return self._word_re.findall(input) + + def stem(self, word: str) -> str: + """ + This method implements stemming algorithm of the Python version. + + Default implementation does nothing. You should implement this if the + language has any stemming rules. + + This class is used to preprocess search words before registering them in + the search index. The stemming of the Python version and the JS version + (given in the js_stemmer_code attribute) must be compatible. + """ + return word + + def word_filter(self, word: str) -> bool: + """ + Return true if the target word should be registered in the search index. + This method is called after stemming. + """ + return ( + len(word) == 0 or not ( + ((len(word) < 3) and (12353 < ord(word[0]) < 12436)) or + (ord(word[0]) < 256 and ( + word in self.stopwords + )))) + + +# SearchEnglish imported after SearchLanguage is defined due to circular import +from sphinx.search.en import SearchEnglish + + +def parse_stop_word(source: str) -> set[str]: + """ + Parse snowball style word list like this: + + * http://snowball.tartarus.org/algorithms/finnish/stop.txt + """ + result: set[str] = set() + for line in source.splitlines(): + line = line.split('|')[0] # remove comment + result.update(line.split()) + return result + + +# maps language name to module.class or directly a class +languages: dict[str, str | type[SearchLanguage]] = { + 'da': 'sphinx.search.da.SearchDanish', + 'de': 'sphinx.search.de.SearchGerman', + 'en': SearchEnglish, + 'es': 'sphinx.search.es.SearchSpanish', + 'fi': 'sphinx.search.fi.SearchFinnish', + 'fr': 'sphinx.search.fr.SearchFrench', + 'hu': 'sphinx.search.hu.SearchHungarian', + 'it': 'sphinx.search.it.SearchItalian', + 'ja': 'sphinx.search.ja.SearchJapanese', + 'nl': 'sphinx.search.nl.SearchDutch', + 'no': 'sphinx.search.no.SearchNorwegian', + 'pt': 'sphinx.search.pt.SearchPortuguese', + 'ro': 'sphinx.search.ro.SearchRomanian', + 'ru': 'sphinx.search.ru.SearchRussian', + 'sv': 'sphinx.search.sv.SearchSwedish', + 'tr': 'sphinx.search.tr.SearchTurkish', + 'zh': 'sphinx.search.zh.SearchChinese', +} + + +class _JavaScriptIndex: + """ + The search index as JavaScript file that calls a function + on the documentation search object to register the index. + """ + + PREFIX = 'Search.setIndex(' + SUFFIX = ')' + + def dumps(self, data: Any) -> str: + return self.PREFIX + json.dumps(data) + self.SUFFIX + + def loads(self, s: str) -> Any: + data = s[len(self.PREFIX):-len(self.SUFFIX)] + if not data or not s.startswith(self.PREFIX) or not \ + s.endswith(self.SUFFIX): + raise ValueError('invalid data') + return json.loads(data) + + def dump(self, data: Any, f: IO) -> None: + f.write(self.dumps(data)) + + def load(self, f: IO) -> Any: + return self.loads(f.read()) + + +js_index = _JavaScriptIndex() + + +def _is_meta_keywords( + node: nodes.meta, # type: ignore[name-defined] + lang: str | None, +) -> bool: + if node.get('name') == 'keywords': + meta_lang = node.get('lang') + if meta_lang is None: # lang not specified + return True + elif meta_lang == lang: # matched to html_search_language + return True + + return False + + +@dataclasses.dataclass +class WordStore: + words: list[str] = dataclasses.field(default_factory=list) + titles: list[tuple[str, str]] = dataclasses.field(default_factory=list) + title_words: list[str] = dataclasses.field(default_factory=list) + + +class WordCollector(nodes.NodeVisitor): + """ + A special visitor that collects words for the `IndexBuilder`. + """ + + def __init__(self, document: nodes.document, lang: SearchLanguage) -> None: + super().__init__(document) + self.found_words: list[str] = [] + self.found_titles: list[tuple[str, str]] = [] + self.found_title_words: list[str] = [] + self.lang = lang + + def dispatch_visit(self, node: Node) -> None: + if isinstance(node, nodes.comment): + raise nodes.SkipNode + elif isinstance(node, nodes.raw): + if 'html' in node.get('format', '').split(): + # Some people might put content in raw HTML that should be searched, + # so we just amateurishly strip HTML tags and index the remaining + # content + nodetext = re.sub(r'', '', node.astext(), flags=re.IGNORECASE|re.DOTALL) + nodetext = re.sub(r'', '', nodetext, flags=re.IGNORECASE|re.DOTALL) + nodetext = re.sub(r'<[^<]+?>', '', nodetext) + self.found_words.extend(self.lang.split(nodetext)) + raise nodes.SkipNode + elif isinstance(node, nodes.Text): + self.found_words.extend(self.lang.split(node.astext())) + elif isinstance(node, nodes.title): + title = node.astext() + ids = node.parent['ids'] + self.found_titles.append((title, ids[0] if ids else None)) + self.found_title_words.extend(self.lang.split(title)) + elif isinstance(node, Element) and _is_meta_keywords(node, self.lang.lang): + keywords = node['content'] + keywords = [keyword.strip() for keyword in keywords.split(',')] + self.found_words.extend(keywords) + + +class IndexBuilder: + """ + Helper class that creates a search index based on the doctrees + passed to the `feed` method. + """ + formats = { + 'json': json, + 'pickle': pickle + } + + def __init__(self, env: BuildEnvironment, lang: str, options: dict, scoring: str) -> None: + self.env = env + # docname -> title + self._titles: dict[str, str] = env._search_index_titles + # docname -> filename + self._filenames: dict[str, str] = env._search_index_filenames + # stemmed words -> set(docname) + self._mapping: dict[str, set[str]] = env._search_index_mapping + # stemmed words in titles -> set(docname) + self._title_mapping: dict[str, set[str]] = env._search_index_title_mapping + # docname -> all titles in document + self._all_titles: dict[str, list[tuple[str, str]]] = env._search_index_all_titles + # docname -> list(index entry) + self._index_entries: dict[str, list[tuple[str, str, str]]] = env._search_index_index_entries + # objtype -> index + self._objtypes: dict[tuple[str, str], int] = env._search_index_objtypes + # objtype index -> (domain, type, objname (localized)) + self._objnames: dict[int, tuple[str, str, str]] = env._search_index_objnames + # add language-specific SearchLanguage instance + lang_class = languages.get(lang) + + # fallback; try again with language-code + if lang_class is None and '_' in lang: + lang_class = languages.get(lang.split('_')[0]) + + if lang_class is None: + self.lang: SearchLanguage = SearchEnglish(options) + elif isinstance(lang_class, str): + module, classname = lang_class.rsplit('.', 1) + lang_class: type[SearchLanguage] = getattr(import_module(module), classname) # type: ignore[no-redef] + self.lang = lang_class(options) # type: ignore[operator] + else: + # it's directly a class (e.g. added by app.add_search_language) + self.lang = lang_class(options) + + if scoring: + with open(scoring, 'rb') as fp: + self.js_scorer_code = fp.read().decode() + else: + self.js_scorer_code = '' + self.js_splitter_code = "" + + def load(self, stream: IO, format: Any) -> None: + """Reconstruct from frozen data.""" + if isinstance(format, str): + format = self.formats[format] + frozen = format.load(stream) + # if an old index is present, we treat it as not existing. + if not isinstance(frozen, dict) or \ + frozen.get('envversion') != self.env.version: + raise ValueError('old format') + index2fn = frozen['docnames'] + self._filenames = dict(zip(index2fn, frozen['filenames'])) + self._titles = dict(zip(index2fn, frozen['titles'])) + self._all_titles = {} + + for docname in self._titles.keys(): + self._all_titles[docname] = [] + for title, doc_tuples in frozen['alltitles'].items(): + for doc, titleid in doc_tuples: + self._all_titles[index2fn[doc]].append((title, titleid)) + + def load_terms(mapping: dict[str, Any]) -> dict[str, set[str]]: + rv = {} + for k, v in mapping.items(): + if isinstance(v, int): + rv[k] = {index2fn[v]} + else: + rv[k] = {index2fn[i] for i in v} + return rv + + self._mapping = load_terms(frozen['terms']) + self._title_mapping = load_terms(frozen['titleterms']) + # no need to load keywords/objtypes + + def dump(self, stream: IO, format: Any) -> None: + """Dump the frozen index to a stream.""" + if isinstance(format, str): + format = self.formats[format] + format.dump(self.freeze(), stream) + + def get_objects(self, fn2index: dict[str, int] + ) -> dict[str, list[tuple[int, int, int, str, str]]]: + rv: dict[str, list[tuple[int, int, int, str, str]]] = {} + otypes = self._objtypes + onames = self._objnames + for domainname, domain in sorted(self.env.domains.items()): + for fullname, dispname, type, docname, anchor, prio in \ + sorted(domain.get_objects()): + if docname not in fn2index: + continue + if prio < 0: + continue + fullname = html.escape(fullname) + dispname = html.escape(dispname) + prefix, _, name = dispname.rpartition('.') + plist = rv.setdefault(prefix, []) + try: + typeindex = otypes[domainname, type] + except KeyError: + typeindex = len(otypes) + otypes[domainname, type] = typeindex + otype = domain.object_types.get(type) + if otype: + # use str() to fire translation proxies + onames[typeindex] = (domainname, type, + str(domain.get_type_name(otype))) + else: + onames[typeindex] = (domainname, type, type) + if anchor == fullname: + shortanchor = '' + elif anchor == type + '-' + fullname: + shortanchor = '-' + else: + shortanchor = anchor + plist.append((fn2index[docname], typeindex, prio, shortanchor, name)) + return rv + + def get_terms(self, fn2index: dict) -> tuple[dict[str, list[str]], dict[str, list[str]]]: + rvs: tuple[dict[str, list[str]], dict[str, list[str]]] = ({}, {}) + for rv, mapping in zip(rvs, (self._mapping, self._title_mapping)): + for k, v in mapping.items(): + if len(v) == 1: + fn, = v + if fn in fn2index: + rv[k] = fn2index[fn] + else: + rv[k] = sorted([fn2index[fn] for fn in v if fn in fn2index]) + return rvs + + def freeze(self) -> dict[str, Any]: + """Create a usable data structure for serializing.""" + docnames, titles = zip(*sorted(self._titles.items())) + filenames = [self._filenames.get(docname) for docname in docnames] + fn2index = {f: i for (i, f) in enumerate(docnames)} + terms, title_terms = self.get_terms(fn2index) + + objects = self.get_objects(fn2index) # populates _objtypes + objtypes = {v: k[0] + ':' + k[1] for (k, v) in self._objtypes.items()} + objnames = self._objnames + + alltitles: dict[str, list[tuple[int, str]]] = {} + for docname, titlelist in self._all_titles.items(): + for title, titleid in titlelist: + alltitles.setdefault(title, []).append((fn2index[docname], titleid)) + + index_entries: dict[str, list[tuple[int, str]]] = {} + for docname, entries in self._index_entries.items(): + for entry, entry_id, main_entry in entries: + index_entries.setdefault(entry.lower(), []).append((fn2index[docname], entry_id)) + + return dict(docnames=docnames, filenames=filenames, titles=titles, terms=terms, + objects=objects, objtypes=objtypes, objnames=objnames, + titleterms=title_terms, envversion=self.env.version, + alltitles=alltitles, indexentries=index_entries) + + def label(self) -> str: + return f"{self.lang.language_name} (code: {self.lang.lang})" + + def prune(self, docnames: Iterable[str]) -> None: + """Remove data for all docnames not in the list.""" + new_titles = {} + new_alltitles = {} + new_filenames = {} + for docname in docnames: + if docname in self._titles: + new_titles[docname] = self._titles[docname] + new_alltitles[docname] = self._all_titles[docname] + new_filenames[docname] = self._filenames[docname] + self._titles = new_titles + self._filenames = new_filenames + self._all_titles = new_alltitles + for wordnames in self._mapping.values(): + wordnames.intersection_update(docnames) + for wordnames in self._title_mapping.values(): + wordnames.intersection_update(docnames) + + def feed(self, docname: str, filename: str, title: str, doctree: nodes.document) -> None: + """Feed a doctree to the index.""" + self._titles[docname] = title + self._filenames[docname] = filename + + word_store = self._word_collector(doctree) + + _filter = self.lang.word_filter + _stem = self.lang.stem + + # memoise self.lang.stem + @functools.lru_cache(maxsize=None) + def stem(word_to_stem: str) -> str: + return _stem(word_to_stem).lower() + + self._all_titles[docname] = word_store.titles + + for word in word_store.title_words: + # add stemmed and unstemmed as the stemmer must not remove words + # from search index. + stemmed_word = stem(word) + if _filter(stemmed_word): + self._title_mapping.setdefault(stemmed_word, set()).add(docname) + elif _filter(word): + self._title_mapping.setdefault(word, set()).add(docname) + + for word in word_store.words: + # add stemmed and unstemmed as the stemmer must not remove words + # from search index. + stemmed_word = stem(word) + if not _filter(stemmed_word) and _filter(word): + stemmed_word = word + already_indexed = docname in self._title_mapping.get(stemmed_word, ()) + if _filter(stemmed_word) and not already_indexed: + self._mapping.setdefault(stemmed_word, set()).add(docname) + + # find explicit entries within index directives + _index_entries: set[tuple[str, str, str]] = set() + for node in doctree.findall(addnodes.index): + for entry_type, value, target_id, main, _category_key in node['entries']: + try: + result = split_index_msg(entry_type, value) + except ValueError: + pass + else: + target_id = target_id or '' + if entry_type in {'see', 'seealso'}: + _index_entries.add((result[0], target_id, main)) + _index_entries |= {(x, target_id, main) for x in result} + + self._index_entries[docname] = sorted(_index_entries) + + def _word_collector(self, doctree: nodes.document) -> WordStore: + def _visit_nodes(node): + if isinstance(node, nodes.comment): + return + elif isinstance(node, nodes.raw): + if 'html' in node.get('format', '').split(): + # Some people might put content in raw HTML that should be searched, + # so we just amateurishly strip HTML tags and index the remaining + # content + nodetext = re.sub(r'', '', node.astext(), + flags=re.IGNORECASE | re.DOTALL) + nodetext = re.sub(r'', '', nodetext, + flags=re.IGNORECASE | re.DOTALL) + nodetext = re.sub(r'<[^<]+?>', '', nodetext) + word_store.words.extend(split(nodetext)) + return + elif (isinstance(node, nodes.meta) # type: ignore[attr-defined] + and _is_meta_keywords(node, language)): + keywords = [keyword.strip() for keyword in node['content'].split(',')] + word_store.words.extend(keywords) + elif isinstance(node, nodes.Text): + word_store.words.extend(split(node.astext())) + elif isinstance(node, nodes.title): + title = node.astext() + ids = node.parent['ids'] + word_store.titles.append((title, ids[0] if ids else None)) + word_store.title_words.extend(split(title)) + for child in node.children: + _visit_nodes(child) + return + + word_store = WordStore() + split = self.lang.split + language = self.lang.lang + _visit_nodes(doctree) + return word_store + + def context_for_searchtool(self) -> dict[str, Any]: + if self.lang.js_splitter_code: + js_splitter_code = self.lang.js_splitter_code + else: + js_splitter_code = self.js_splitter_code + + return { + 'search_language_stemming_code': self.get_js_stemmer_code(), + 'search_language_stop_words': json.dumps(sorted(self.lang.stopwords)), + 'search_scorer_tool': self.js_scorer_code, + 'search_word_splitter_code': js_splitter_code, + } + + def get_js_stemmer_rawcodes(self) -> list[str]: + """Returns a list of non-minified stemmer JS files to copy.""" + if self.lang.js_stemmer_rawcode: + return [ + path.join(package_dir, 'search', 'non-minified-js', fname) + for fname in ('base-stemmer.js', self.lang.js_stemmer_rawcode) + ] + else: + return [] + + def get_js_stemmer_rawcode(self) -> str | None: + return None + + def get_js_stemmer_code(self) -> str: + """Returns JS code that will be inserted into language_data.js.""" + if self.lang.js_stemmer_rawcode: + js_dir = path.join(package_dir, 'search', 'minified-js') + with open(path.join(js_dir, 'base-stemmer.js'), encoding='utf-8') as js_file: + base_js = js_file.read() + with open(path.join(js_dir, self.lang.js_stemmer_rawcode), encoding='utf-8') as js_file: + language_js = js_file.read() + return ('%s\n%s\nStemmer = %sStemmer;' % + (base_js, language_js, self.lang.language_name)) + else: + return self.lang.js_stemmer_code diff --git a/sphinx/search/da.py b/sphinx/search/da.py new file mode 100644 index 0000000..9b5b9f5 --- /dev/null +++ b/sphinx/search/da.py @@ -0,0 +1,120 @@ +"""Danish search language: includes the JS Danish stemmer.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + +danish_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/danish/stop.txt +og | and +i | in +jeg | I +det | that (dem. pronoun)/it (pers. pronoun) +at | that (in front of a sentence)/to (with infinitive) +en | a/an +den | it (pers. pronoun)/that (dem. pronoun) +til | to/at/for/until/against/by/of/into, more +er | present tense of "to be" +som | who, as +på | on/upon/in/on/at/to/after/of/with/for, on +de | they +med | with/by/in, along +han | he +af | of/by/from/off/for/in/with/on, off +for | at/for/to/from/by/of/ago, in front/before, because +ikke | not +der | who/which, there/those +var | past tense of "to be" +mig | me/myself +sig | oneself/himself/herself/itself/themselves +men | but +et | a/an/one, one (number), someone/somebody/one +har | present tense of "to have" +om | round/about/for/in/a, about/around/down, if +vi | we +min | my +havde | past tense of "to have" +ham | him +hun | she +nu | now +over | over/above/across/by/beyond/past/on/about, over/past +da | then, when/as/since +fra | from/off/since, off, since +du | you +ud | out +sin | his/her/its/one's +dem | them +os | us/ourselves +op | up +man | you/one +hans | his +hvor | where +eller | or +hvad | what +skal | must/shall etc. +selv | myself/yourself/herself/ourselves etc., even +her | here +alle | all/everyone/everybody etc. +vil | will (verb) +blev | past tense of "to stay/to remain/to get/to become" +kunne | could +ind | in +når | when +være | present tense of "to be" +dog | however/yet/after all +noget | something +ville | would +jo | you know/you see (adv), yes +deres | their/theirs +efter | after/behind/according to/for/by/from, later/afterwards +ned | down +skulle | should +denne | this +end | than +dette | this +mit | my/mine +også | also +under | under/beneath/below/during, below/underneath +have | have +dig | you +anden | other +hende | her +mine | my +alt | everything +meget | much/very, plenty of +sit | his, her, its, one's +sine | his, her, its, one's +vor | our +mod | against +disse | these +hvis | if +din | your/yours +nogle | some +hos | by/at +blive | be/become +mange | many +ad | by/through +bliver | present tense of "to be/to become" +hendes | her/hers +været | be +thi | for (conj) +jer | you +sådan | such, like this/like that +''') + + +class SearchDanish(SearchLanguage): + lang = 'da' + language_name = 'Danish' + js_stemmer_rawcode = 'danish-stemmer.js' + stopwords = danish_stopwords + + def init(self, options: dict) -> None: + self.stemmer = snowballstemmer.stemmer('danish') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/search/de.py b/sphinx/search/de.py new file mode 100644 index 0000000..1c253fd --- /dev/null +++ b/sphinx/search/de.py @@ -0,0 +1,303 @@ +"""German search language: includes the JS German stemmer.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + +german_stopwords = parse_stop_word(''' +|source: http://snowball.tartarus.org/algorithms/german/stop.txt +aber | but + +alle | all +allem +allen +aller +alles + +als | than, as +also | so +am | an + dem +an | at + +ander | other +andere +anderem +anderen +anderer +anderes +anderm +andern +anderr +anders + +auch | also +auf | on +aus | out of +bei | by +bin | am +bis | until +bist | art +da | there +damit | with it +dann | then + +der | the +den +des +dem +die +das + +daß | that + +derselbe | the same +derselben +denselben +desselben +demselben +dieselbe +dieselben +dasselbe + +dazu | to that + +dein | thy +deine +deinem +deinen +deiner +deines + +denn | because + +derer | of those +dessen | of him + +dich | thee +dir | to thee +du | thou + +dies | this +diese +diesem +diesen +dieser +dieses + + +doch | (several meanings) +dort | (over) there + + +durch | through + +ein | a +eine +einem +einen +einer +eines + +einig | some +einige +einigem +einigen +einiger +einiges + +einmal | once + +er | he +ihn | him +ihm | to him + +es | it +etwas | something + +euer | your +eure +eurem +euren +eurer +eures + +für | for +gegen | towards +gewesen | p.p. of sein +hab | have +habe | have +haben | have +hat | has +hatte | had +hatten | had +hier | here +hin | there +hinter | behind + +ich | I +mich | me +mir | to me + + +ihr | you, to her +ihre +ihrem +ihren +ihrer +ihres +euch | to you + +im | in + dem +in | in +indem | while +ins | in + das +ist | is + +jede | each, every +jedem +jeden +jeder +jedes + +jene | that +jenem +jenen +jener +jenes + +jetzt | now +kann | can + +kein | no +keine +keinem +keinen +keiner +keines + +können | can +könnte | could +machen | do +man | one + +manche | some, many a +manchem +manchen +mancher +manches + +mein | my +meine +meinem +meinen +meiner +meines + +mit | with +muss | must +musste | had to +nach | to(wards) +nicht | not +nichts | nothing +noch | still, yet +nun | now +nur | only +ob | whether +oder | or +ohne | without +sehr | very + +sein | his +seine +seinem +seinen +seiner +seines + +selbst | self +sich | herself + +sie | they, she +ihnen | to them + +sind | are +so | so + +solche | such +solchem +solchen +solcher +solches + +soll | shall +sollte | should +sondern | but +sonst | else +über | over +um | about, around +und | and + +uns | us +unse +unsem +unsen +unser +unses + +unter | under +viel | much +vom | von + dem +von | from +vor | before +während | while +war | was +waren | were +warst | wast +was | what +weg | away, off +weil | because +weiter | further + +welche | which +welchem +welchen +welcher +welches + +wenn | when +werde | will +werden | will +wie | how +wieder | again +will | want +wir | we +wird | will +wirst | willst +wo | where +wollen | want +wollte | wanted +würde | would +würden | would +zu | to +zum | zu + dem +zur | zu + der +zwar | indeed +zwischen | between +''') + + +class SearchGerman(SearchLanguage): + lang = 'de' + language_name = 'German' + js_stemmer_rawcode = 'german-stemmer.js' + stopwords = german_stopwords + + def init(self, options: dict) -> None: + self.stemmer = snowballstemmer.stemmer('german') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/search/en.py b/sphinx/search/en.py new file mode 100644 index 0000000..caa6f66 --- /dev/null +++ b/sphinx/search/en.py @@ -0,0 +1,220 @@ +"""English search language: includes the JS porter stemmer.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage + +english_stopwords = set(""" +a and are as at +be but by +for +if in into is it +near no not +of on or +such +that the their then there these they this to +was will with +""".split()) + +js_porter_stemmer = """ +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|\ +ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|\ +iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} +""" + + +class SearchEnglish(SearchLanguage): + lang = 'en' + language_name = 'English' + js_stemmer_code = js_porter_stemmer + stopwords = english_stopwords + + def init(self, options: dict) -> None: + self.stemmer = snowballstemmer.stemmer('porter') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/search/es.py b/sphinx/search/es.py new file mode 100644 index 0000000..c5d9a5c --- /dev/null +++ b/sphinx/search/es.py @@ -0,0 +1,363 @@ +"""Spanish search language: includes the JS Spanish stemmer.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + +spanish_stopwords = parse_stop_word(''' +|source: http://snowball.tartarus.org/algorithms/spanish/stop.txt +de | from, of +la | the, her +que | who, that +el | the +en | in +y | and +a | to +los | the, them +del | de + el +se | himself, from him etc +las | the, them +por | for, by, etc +un | a +para | for +con | with +no | no +una | a +su | his, her +al | a + el + | es from SER +lo | him +como | how +más | more +pero | pero +sus | su plural +le | to him, her +ya | already +o | or + | fue from SER +este | this + | ha from HABER +sí | himself etc +porque | because +esta | this + | son from SER +entre | between + | está from ESTAR +cuando | when +muy | very +sin | without +sobre | on + | ser from SER + | tiene from TENER +también | also +me | me +hasta | until +hay | there is/are +donde | where + | han from HABER +quien | whom, that + | están from ESTAR + | estado from ESTAR +desde | from +todo | all +nos | us +durante | during + | estados from ESTAR +todos | all +uno | a +les | to them +ni | nor +contra | against +otros | other + | fueron from SER +ese | that +eso | that + | había from HABER +ante | before +ellos | they +e | and (variant of y) +esto | this +mí | me +antes | before +algunos | some +qué | what? +unos | a +yo | I +otro | other +otras | other +otra | other +él | he +tanto | so much, many +esa | that +estos | these +mucho | much, many +quienes | who +nada | nothing +muchos | many +cual | who + | sea from SER +poco | few +ella | she +estar | to be + | haber from HABER +estas | these + | estaba from ESTAR + | estamos from ESTAR +algunas | some +algo | something +nosotros | we + + | other forms + +mi | me +mis | mi plural +tú | thou +te | thee +ti | thee +tu | thy +tus | tu plural +ellas | they +nosotras | we +vosotros | you +vosotras | you +os | you +mío | mine +mía | +míos | +mías | +tuyo | thine +tuya | +tuyos | +tuyas | +suyo | his, hers, theirs +suya | +suyos | +suyas | +nuestro | ours +nuestra | +nuestros | +nuestras | +vuestro | yours +vuestra | +vuestros | +vuestras | +esos | those +esas | those + + | forms of estar, to be (not including the infinitive): +estoy +estás +está +estamos +estáis +están +esté +estés +estemos +estéis +estén +estaré +estarás +estará +estaremos +estaréis +estarán +estaría +estarías +estaríamos +estaríais +estarían +estaba +estabas +estábamos +estabais +estaban +estuve +estuviste +estuvo +estuvimos +estuvisteis +estuvieron +estuviera +estuvieras +estuviéramos +estuvierais +estuvieran +estuviese +estuvieses +estuviésemos +estuvieseis +estuviesen +estando +estado +estada +estados +estadas +estad + + | forms of haber, to have (not including the infinitive): +he +has +ha +hemos +habéis +han +haya +hayas +hayamos +hayáis +hayan +habré +habrás +habrá +habremos +habréis +habrán +habría +habrías +habríamos +habríais +habrían +había +habías +habíamos +habíais +habían +hube +hubiste +hubo +hubimos +hubisteis +hubieron +hubiera +hubieras +hubiéramos +hubierais +hubieran +hubiese +hubieses +hubiésemos +hubieseis +hubiesen +habiendo +habido +habida +habidos +habidas + + | forms of ser, to be (not including the infinitive): +soy +eres +es +somos +sois +son +sea +seas +seamos +seáis +sean +seré +serás +será +seremos +seréis +serán +sería +serías +seríamos +seríais +serían +era +eras +éramos +erais +eran +fui +fuiste +fue +fuimos +fuisteis +fueron +fuera +fueras +fuéramos +fuerais +fueran +fuese +fueses +fuésemos +fueseis +fuesen +siendo +sido + | sed also means 'thirst' + + | forms of tener, to have (not including the infinitive): +tengo +tienes +tiene +tenemos +tenéis +tienen +tenga +tengas +tengamos +tengáis +tengan +tendré +tendrás +tendrá +tendremos +tendréis +tendrán +tendría +tendrías +tendríamos +tendríais +tendrían +tenía +tenías +teníamos +teníais +tenían +tuve +tuviste +tuvo +tuvimos +tuvisteis +tuvieron +tuviera +tuvieras +tuviéramos +tuvierais +tuvieran +tuviese +tuvieses +tuviésemos +tuvieseis +tuviesen +teniendo +tenido +tenida +tenidos +tenidas +tened +''') + + +class SearchSpanish(SearchLanguage): + lang = 'es' + language_name = 'Spanish' + js_stemmer_rawcode = 'spanish-stemmer.js' + stopwords = spanish_stopwords + + def init(self, options: dict) -> None: + self.stemmer = snowballstemmer.stemmer('spanish') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/search/fi.py b/sphinx/search/fi.py new file mode 100644 index 0000000..70114f8 --- /dev/null +++ b/sphinx/search/fi.py @@ -0,0 +1,113 @@ +"""Finnish search language: includes the JS Finnish stemmer.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + +finnish_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/finnish/stop.txt +| forms of BE + +olla +olen +olet +on +olemme +olette +ovat +ole | negative form + +oli +olisi +olisit +olisin +olisimme +olisitte +olisivat +olit +olin +olimme +olitte +olivat +ollut +olleet + +en | negation +et +ei +emme +ette +eivät + +|Nom Gen Acc Part Iness Elat Illat Adess Ablat Allat Ess Trans +minä minun minut minua minussa minusta minuun minulla minulta minulle | I +sinä sinun sinut sinua sinussa sinusta sinuun sinulla sinulta sinulle | you +hän hänen hänet häntä hänessä hänestä häneen hänellä häneltä hänelle | he she +me meidän meidät meitä meissä meistä meihin meillä meiltä meille | we +te teidän teidät teitä teissä teistä teihin teillä teiltä teille | you +he heidän heidät heitä heissä heistä heihin heillä heiltä heille | they + +tämä tämän tätä tässä tästä tähän tällä tältä tälle tänä täksi | this +tuo tuon tuota tuossa tuosta tuohon tuolla tuolta tuolle tuona tuoksi | that +se sen sitä siinä siitä siihen sillä siltä sille sinä siksi | it +nämä näiden näitä näissä näistä näihin näillä näiltä näille näinä näiksi | these +nuo noiden noita noissa noista noihin noilla noilta noille noina noiksi | those +ne niiden niitä niissä niistä niihin niillä niiltä niille niinä niiksi | they + +kuka kenen kenet ketä kenessä kenestä keneen kenellä keneltä kenelle kenenä keneksi| who +ketkä keiden ketkä keitä keissä keistä keihin keillä keiltä keille keinä keiksi | (pl) +mikä minkä minkä mitä missä mistä mihin millä miltä mille minä miksi | which what +mitkä | (pl) + +joka jonka jota jossa josta johon jolla jolta jolle jona joksi | who which +jotka joiden joita joissa joista joihin joilla joilta joille joina joiksi | (pl) + +| conjunctions + +että | that +ja | and +jos | if +koska | because +kuin | than +mutta | but +niin | so +sekä | and +sillä | for +tai | or +vaan | but +vai | or +vaikka | although + + +| prepositions + +kanssa | with +mukaan | according to +noin | about +poikki | across +yli | over, across + +| other + +kun | when +niin | so +nyt | now +itse | self +''') + + +class SearchFinnish(SearchLanguage): + lang = 'fi' + language_name = 'Finnish' + js_stemmer_rawcode = 'finnish-stemmer.js' + stopwords = finnish_stopwords + + def init(self, options: dict) -> None: + self.stemmer = snowballstemmer.stemmer('finnish') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/search/fr.py b/sphinx/search/fr.py new file mode 100644 index 0000000..01319dd --- /dev/null +++ b/sphinx/search/fr.py @@ -0,0 +1,199 @@ +"""French search language: includes the JS French stemmer.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + +french_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/french/stop.txt +au | a + le +aux | a + les +avec | with +ce | this +ces | these +dans | with +de | of +des | de + les +du | de + le +elle | she +en | `of them' etc +et | and +eux | them +il | he +je | I +la | the +le | the +leur | their +lui | him +ma | my (fem) +mais | but +me | me +même | same; as in moi-même (myself) etc +mes | me (pl) +moi | me +mon | my (masc) +ne | not +nos | our (pl) +notre | our +nous | we +on | one +ou | where +par | by +pas | not +pour | for +qu | que before vowel +que | that +qui | who +sa | his, her (fem) +se | oneself +ses | his (pl) +son | his, her (masc) +sur | on +ta | thy (fem) +te | thee +tes | thy (pl) +toi | thee +ton | thy (masc) +tu | thou +un | a +une | a +vos | your (pl) +votre | your +vous | you + + | single letter forms + +c | c' +d | d' +j | j' +l | l' +à | to, at +m | m' +n | n' +s | s' +t | t' +y | there + + | forms of être (not including the infinitive): +été +étée +étées +étés +étant +suis +es +est +sommes +êtes +sont +serai +seras +sera +serons +serez +seront +serais +serait +serions +seriez +seraient +étais +était +étions +étiez +étaient +fus +fut +fûmes +fûtes +furent +sois +soit +soyons +soyez +soient +fusse +fusses +fût +fussions +fussiez +fussent + + | forms of avoir (not including the infinitive): +ayant +eu +eue +eues +eus +ai +as +avons +avez +ont +aurai +auras +aura +aurons +aurez +auront +aurais +aurait +aurions +auriez +auraient +avais +avait +avions +aviez +avaient +eut +eûmes +eûtes +eurent +aie +aies +ait +ayons +ayez +aient +eusse +eusses +eût +eussions +eussiez +eussent + + | Later additions (from Jean-Christophe Deschamps) +ceci | this +cela | that (added 11 Apr 2012. Omission reported by Adrien Grand) +celà | that (incorrect, though common) +cet | this +cette | this +ici | here +ils | they +les | the (pl) +leurs | their (pl) +quel | which +quels | which +quelle | which +quelles | which +sans | without +soi | oneself +''') + + +class SearchFrench(SearchLanguage): + lang = 'fr' + language_name = 'French' + js_stemmer_rawcode = 'french-stemmer.js' + stopwords = french_stopwords + + def init(self, options: dict) -> None: + self.stemmer = snowballstemmer.stemmer('french') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/search/hu.py b/sphinx/search/hu.py new file mode 100644 index 0000000..eed08db --- /dev/null +++ b/sphinx/search/hu.py @@ -0,0 +1,226 @@ +"""Hungarian search language: includes the JS Hungarian stemmer.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + +hungarian_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/hungarian/stop.txt +| prepared by Anna Tordai +a +ahogy +ahol +aki +akik +akkor +alatt +által +általában +amely +amelyek +amelyekben +amelyeket +amelyet +amelynek +ami +amit +amolyan +amíg +amikor +át +abban +ahhoz +annak +arra +arról +az +azok +azon +azt +azzal +azért +aztán +azután +azonban +bár +be +belül +benne +cikk +cikkek +cikkeket +csak +de +e +eddig +egész +egy +egyes +egyetlen +egyéb +egyik +egyre +ekkor +el +elég +ellen +elő +először +előtt +első +én +éppen +ebben +ehhez +emilyen +ennek +erre +ez +ezt +ezek +ezen +ezzel +ezért +és +fel +felé +hanem +hiszen +hogy +hogyan +igen +így +illetve +ill. +ill +ilyen +ilyenkor +ison +ismét +itt +jó +jól +jobban +kell +kellett +keresztül +keressünk +ki +kívül +között +közül +legalább +lehet +lehetett +legyen +lenne +lenni +lesz +lett +maga +magát +majd +majd +már +más +másik +meg +még +mellett +mert +mely +melyek +mi +mit +míg +miért +milyen +mikor +minden +mindent +mindenki +mindig +mint +mintha +mivel +most +nagy +nagyobb +nagyon +ne +néha +nekem +neki +nem +néhány +nélkül +nincs +olyan +ott +össze +ő +ők +őket +pedig +persze +rá +s +saját +sem +semmi +sok +sokat +sokkal +számára +szemben +szerint +szinte +talán +tehát +teljes +tovább +továbbá +több +úgy +ugyanis +új +újabb +újra +után +utána +utolsó +vagy +vagyis +valaki +valami +valamint +való +vagyok +van +vannak +volt +voltam +voltak +voltunk +vissza +vele +viszont +volna +''') + + +class SearchHungarian(SearchLanguage): + lang = 'hu' + language_name = 'Hungarian' + js_stemmer_rawcode = 'hungarian-stemmer.js' + stopwords = hungarian_stopwords + + def init(self, options: dict) -> None: + self.stemmer = snowballstemmer.stemmer('hungarian') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/search/it.py b/sphinx/search/it.py new file mode 100644 index 0000000..7bf712b --- /dev/null +++ b/sphinx/search/it.py @@ -0,0 +1,316 @@ +"""Italian search language: includes the JS Italian stemmer.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + +italian_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/italian/stop.txt +ad | a (to) before vowel +al | a + il +allo | a + lo +ai | a + i +agli | a + gli +all | a + l' +agl | a + gl' +alla | a + la +alle | a + le +con | with +col | con + il +coi | con + i (forms collo, cogli etc are now very rare) +da | from +dal | da + il +dallo | da + lo +dai | da + i +dagli | da + gli +dall | da + l' +dagl | da + gll' +dalla | da + la +dalle | da + le +di | of +del | di + il +dello | di + lo +dei | di + i +degli | di + gli +dell | di + l' +degl | di + gl' +della | di + la +delle | di + le +in | in +nel | in + el +nello | in + lo +nei | in + i +negli | in + gli +nell | in + l' +negl | in + gl' +nella | in + la +nelle | in + le +su | on +sul | su + il +sullo | su + lo +sui | su + i +sugli | su + gli +sull | su + l' +sugl | su + gl' +sulla | su + la +sulle | su + le +per | through, by +tra | among +contro | against +io | I +tu | thou +lui | he +lei | she +noi | we +voi | you +loro | they +mio | my +mia | +miei | +mie | +tuo | +tua | +tuoi | thy +tue | +suo | +sua | +suoi | his, her +sue | +nostro | our +nostra | +nostri | +nostre | +vostro | your +vostra | +vostri | +vostre | +mi | me +ti | thee +ci | us, there +vi | you, there +lo | him, the +la | her, the +li | them +le | them, the +gli | to him, the +ne | from there etc +il | the +un | a +uno | a +una | a +ma | but +ed | and +se | if +perché | why, because +anche | also +come | how +dov | where (as dov') +dove | where +che | who, that +chi | who +cui | whom +non | not +più | more +quale | who, that +quanto | how much +quanti | +quanta | +quante | +quello | that +quelli | +quella | +quelle | +questo | this +questi | +questa | +queste | +si | yes +tutto | all +tutti | all + + | single letter forms: + +a | at +c | as c' for ce or ci +e | and +i | the +l | as l' +o | or + + | forms of avere, to have (not including the infinitive): + +ho +hai +ha +abbiamo +avete +hanno +abbia +abbiate +abbiano +avrò +avrai +avrà +avremo +avrete +avranno +avrei +avresti +avrebbe +avremmo +avreste +avrebbero +avevo +avevi +aveva +avevamo +avevate +avevano +ebbi +avesti +ebbe +avemmo +aveste +ebbero +avessi +avesse +avessimo +avessero +avendo +avuto +avuta +avuti +avute + + | forms of essere, to be (not including the infinitive): +sono +sei +è +siamo +siete +sia +siate +siano +sarò +sarai +sarà +saremo +sarete +saranno +sarei +saresti +sarebbe +saremmo +sareste +sarebbero +ero +eri +era +eravamo +eravate +erano +fui +fosti +fu +fummo +foste +furono +fossi +fosse +fossimo +fossero +essendo + + | forms of fare, to do (not including the infinitive, fa, fat-): +faccio +fai +facciamo +fanno +faccia +facciate +facciano +farò +farai +farà +faremo +farete +faranno +farei +faresti +farebbe +faremmo +fareste +farebbero +facevo +facevi +faceva +facevamo +facevate +facevano +feci +facesti +fece +facemmo +faceste +fecero +facessi +facesse +facessimo +facessero +facendo + + | forms of stare, to be (not including the infinitive): +sto +stai +sta +stiamo +stanno +stia +stiate +stiano +starò +starai +starà +staremo +starete +staranno +starei +staresti +starebbe +staremmo +stareste +starebbero +stavo +stavi +stava +stavamo +stavate +stavano +stetti +stesti +stette +stemmo +steste +stettero +stessi +stesse +stessimo +stessero +''') + + +class SearchItalian(SearchLanguage): + lang = 'it' + language_name = 'Italian' + js_stemmer_rawcode = 'italian-stemmer.js' + stopwords = italian_stopwords + + def init(self, options: dict) -> None: + self.stemmer = snowballstemmer.stemmer('italian') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/search/ja.py b/sphinx/search/ja.py new file mode 100644 index 0000000..de221ce --- /dev/null +++ b/sphinx/search/ja.py @@ -0,0 +1,531 @@ +"""Japanese search language: includes routine to split words.""" + +# Python Version of TinySegmenter +# (http://chasen.org/~taku/software/TinySegmenter/) +# TinySegmenter is super compact Japanese tokenizer. +# +# TinySegmenter was originally developed by Taku Kudo . +# Python Version was developed by xnights . +# For details, see http://programming-magic.com/?id=170 + +from __future__ import annotations + +import os +import re +import sys +from typing import TYPE_CHECKING, Any, Dict, List + +try: + import MeCab + native_module = True +except ImportError: + native_module = False + +try: + import janome.tokenizer + janome_module = True +except ImportError: + janome_module = False + +from sphinx.errors import ExtensionError, SphinxError +from sphinx.search import SearchLanguage +from sphinx.util import import_object + + +class BaseSplitter: + def __init__(self, options: dict) -> None: + self.options = options + + def split(self, input: str) -> list[str]: + """ + :param str input: + :return: + :rtype: list[str] + """ + raise NotImplementedError + + +class MecabSplitter(BaseSplitter): + def __init__(self, options: dict) -> None: + super().__init__(options) + self.ctypes_libmecab: Any = None + self.ctypes_mecab: Any = None + if not native_module: + self.init_ctypes(options) + else: + self.init_native(options) + self.dict_encode = options.get('dic_enc', 'utf-8') + + def split(self, input: str) -> list[str]: + if native_module: + result = self.native.parse(input) + else: + result = self.ctypes_libmecab.mecab_sparse_tostr( + self.ctypes_mecab, input.encode(self.dict_encode)) + return result.split(' ') + + def init_native(self, options: dict) -> None: + param = '-Owakati' + dict = options.get('dict') + if dict: + param += ' -d %s' % dict + self.native = MeCab.Tagger(param) + + def init_ctypes(self, options: dict) -> None: + import ctypes.util + + lib = options.get('lib') + + if lib is None: + if sys.platform.startswith('win'): + libname = 'libmecab.dll' + else: + libname = 'mecab' + libpath = ctypes.util.find_library(libname) + elif os.path.basename(lib) == lib: + libpath = ctypes.util.find_library(lib) + else: + libpath = None + if os.path.exists(lib): + libpath = lib + if libpath is None: + raise RuntimeError('MeCab dynamic library is not available') + + param = 'mecab -Owakati' + dict = options.get('dict') + if dict: + param += ' -d %s' % dict + + fs_enc = sys.getfilesystemencoding() or sys.getdefaultencoding() + + self.ctypes_libmecab = ctypes.CDLL(libpath) + self.ctypes_libmecab.mecab_new2.argtypes = (ctypes.c_char_p,) + self.ctypes_libmecab.mecab_new2.restype = ctypes.c_void_p + self.ctypes_libmecab.mecab_sparse_tostr.argtypes = (ctypes.c_void_p, ctypes.c_char_p) + self.ctypes_libmecab.mecab_sparse_tostr.restype = ctypes.c_char_p + self.ctypes_mecab = self.ctypes_libmecab.mecab_new2(param.encode(fs_enc)) + if self.ctypes_mecab is None: + raise SphinxError('mecab initialization failed') + + def __del__(self) -> None: + if self.ctypes_libmecab: + self.ctypes_libmecab.mecab_destroy(self.ctypes_mecab) + + +class JanomeSplitter(BaseSplitter): + def __init__(self, options: dict) -> None: + super().__init__(options) + self.user_dict = options.get('user_dic') + self.user_dict_enc = options.get('user_dic_enc', 'utf8') + self.init_tokenizer() + + def init_tokenizer(self) -> None: + if not janome_module: + raise RuntimeError('Janome is not available') + self.tokenizer = janome.tokenizer.Tokenizer(udic=self.user_dict, udic_enc=self.user_dict_enc) + + def split(self, input: str) -> list[str]: + result = ' '.join(token.surface for token in self.tokenizer.tokenize(input)) + return result.split(' ') + + +class DefaultSplitter(BaseSplitter): + patterns_ = {re.compile(pattern): value for pattern, value in { + '[一二三四五六七八九十百千万億兆]': 'M', + '[一-龠々〆ヵヶ]': 'H', + '[ぁ-ん]': 'I', + '[ァ-ヴーア-ン゙ー]': 'K', + '[a-zA-Za-zA-Z]': 'A', + '[0-90-9]': 'N', + }.items()} + BIAS__ = -332 + BC1__ = {'HH': 6, 'II': 2461, 'KH': 406, 'OH': -1378} + BC2__ = {'AA': -3267, 'AI': 2744, 'AN': -878, 'HH': -4070, 'HM': -1711, + 'HN': 4012, 'HO': 3761, 'IA': 1327, 'IH': -1184, 'II': -1332, + 'IK': 1721, 'IO': 5492, 'KI': 3831, 'KK': -8741, 'MH': -3132, + 'MK': 3334, 'OO': -2920} + BC3__ = {'HH': 996, 'HI': 626, 'HK': -721, 'HN': -1307, 'HO': -836, 'IH': -301, + 'KK': 2762, 'MK': 1079, 'MM': 4034, 'OA': -1652, 'OH': 266} + BP1__ = {'BB': 295, 'OB': 304, 'OO': -125, 'UB': 352} + BP2__ = {'BO': 60, 'OO': -1762} + BQ1__ = {'BHH': 1150, 'BHM': 1521, 'BII': -1158, 'BIM': 886, 'BMH': 1208, + 'BNH': 449, 'BOH': -91, 'BOO': -2597, 'OHI': 451, 'OIH': -296, + 'OKA': 1851, 'OKH': -1020, 'OKK': 904, 'OOO': 2965} + BQ2__ = {'BHH': 118, 'BHI': -1159, 'BHM': 466, 'BIH': -919, 'BKK': -1720, + 'BKO': 864, 'OHH': -1139, 'OHM': -181, 'OIH': 153, 'UHI': -1146} + BQ3__ = {'BHH': -792, 'BHI': 2664, 'BII': -299, 'BKI': 419, 'BMH': 937, + 'BMM': 8335, 'BNN': 998, 'BOH': 775, 'OHH': 2174, 'OHM': 439, 'OII': 280, + 'OKH': 1798, 'OKI': -793, 'OKO': -2242, 'OMH': -2402, 'OOO': 11699} + BQ4__ = {'BHH': -3895, 'BIH': 3761, 'BII': -4654, 'BIK': 1348, 'BKK': -1806, + 'BMI': -3385, 'BOO': -12396, 'OAH': 926, 'OHH': 266, 'OHK': -2036, + 'ONN': -973} + BW1__ = {',と': 660, ',同': 727, 'B1あ': 1404, 'B1同': 542, '、と': 660, + '、同': 727, '」と': 1682, 'あっ': 1505, 'いう': 1743, 'いっ': -2055, + 'いる': 672, 'うし': -4817, 'うん': 665, 'から': 3472, 'がら': 600, + 'こう': -790, 'こと': 2083, 'こん': -1262, 'さら': -4143, 'さん': 4573, + 'した': 2641, 'して': 1104, 'すで': -3399, 'そこ': 1977, 'それ': -871, + 'たち': 1122, 'ため': 601, 'った': 3463, 'つい': -802, 'てい': 805, + 'てき': 1249, 'でき': 1127, 'です': 3445, 'では': 844, 'とい': -4915, + 'とみ': 1922, 'どこ': 3887, 'ない': 5713, 'なっ': 3015, 'など': 7379, + 'なん': -1113, 'にし': 2468, 'には': 1498, 'にも': 1671, 'に対': -912, + 'の一': -501, 'の中': 741, 'ませ': 2448, 'まで': 1711, 'まま': 2600, + 'まる': -2155, 'やむ': -1947, 'よっ': -2565, 'れた': 2369, 'れで': -913, + 'をし': 1860, 'を見': 731, '亡く': -1886, '京都': 2558, '取り': -2784, + '大き': -2604, '大阪': 1497, '平方': -2314, '引き': -1336, '日本': -195, + '本当': -2423, '毎日': -2113, '目指': -724, 'B1あ': 1404, 'B1同': 542, + '」と': 1682} + BW2__ = {'..': -11822, '11': -669, '――': -5730, '−−': -13175, 'いう': -1609, + 'うか': 2490, 'かし': -1350, 'かも': -602, 'から': -7194, 'かれ': 4612, + 'がい': 853, 'がら': -3198, 'きた': 1941, 'くな': -1597, 'こと': -8392, + 'この': -4193, 'させ': 4533, 'され': 13168, 'さん': -3977, 'しい': -1819, + 'しか': -545, 'した': 5078, 'して': 972, 'しな': 939, 'その': -3744, + 'たい': -1253, 'たた': -662, 'ただ': -3857, 'たち': -786, 'たと': 1224, + 'たは': -939, 'った': 4589, 'って': 1647, 'っと': -2094, 'てい': 6144, + 'てき': 3640, 'てく': 2551, 'ては': -3110, 'ても': -3065, 'でい': 2666, + 'でき': -1528, 'でし': -3828, 'です': -4761, 'でも': -4203, 'とい': 1890, + 'とこ': -1746, 'とと': -2279, 'との': 720, 'とみ': 5168, 'とも': -3941, + 'ない': -2488, 'なが': -1313, 'など': -6509, 'なの': 2614, 'なん': 3099, + 'にお': -1615, 'にし': 2748, 'にな': 2454, 'によ': -7236, 'に対': -14943, + 'に従': -4688, 'に関': -11388, 'のか': 2093, 'ので': -7059, 'のに': -6041, + 'のの': -6125, 'はい': 1073, 'はが': -1033, 'はず': -2532, 'ばれ': 1813, + 'まし': -1316, 'まで': -6621, 'まれ': 5409, 'めて': -3153, 'もい': 2230, + 'もの': -10713, 'らか': -944, 'らし': -1611, 'らに': -1897, 'りし': 651, + 'りま': 1620, 'れた': 4270, 'れて': 849, 'れば': 4114, 'ろう': 6067, + 'われ': 7901, 'を通': -11877, 'んだ': 728, 'んな': -4115, '一人': 602, + '一方': -1375, '一日': 970, '一部': -1051, '上が': -4479, '会社': -1116, + '出て': 2163, '分の': -7758, '同党': 970, '同日': -913, '大阪': -2471, + '委員': -1250, '少な': -1050, '年度': -8669, '年間': -1626, '府県': -2363, + '手権': -1982, '新聞': -4066, '日新': -722, '日本': -7068, '日米': 3372, + '曜日': -601, '朝鮮': -2355, '本人': -2697, '東京': -1543, '然と': -1384, + '社会': -1276, '立て': -990, '第に': -1612, '米国': -4268, '11': -669} + BW3__ = {'あた': -2194, 'あり': 719, 'ある': 3846, 'い.': -1185, 'い。': -1185, + 'いい': 5308, 'いえ': 2079, 'いく': 3029, 'いた': 2056, 'いっ': 1883, + 'いる': 5600, 'いわ': 1527, 'うち': 1117, 'うと': 4798, 'えと': 1454, + 'か.': 2857, 'か。': 2857, 'かけ': -743, 'かっ': -4098, 'かに': -669, + 'から': 6520, 'かり': -2670, 'が,': 1816, 'が、': 1816, 'がき': -4855, + 'がけ': -1127, 'がっ': -913, 'がら': -4977, 'がり': -2064, 'きた': 1645, + 'けど': 1374, 'こと': 7397, 'この': 1542, 'ころ': -2757, 'さい': -714, + 'さを': 976, 'し,': 1557, 'し、': 1557, 'しい': -3714, 'した': 3562, + 'して': 1449, 'しな': 2608, 'しま': 1200, 'す.': -1310, 'す。': -1310, + 'する': 6521, 'ず,': 3426, 'ず、': 3426, 'ずに': 841, 'そう': 428, + 'た.': 8875, 'た。': 8875, 'たい': -594, 'たの': 812, 'たり': -1183, + 'たる': -853, 'だ.': 4098, 'だ。': 4098, 'だっ': 1004, 'った': -4748, + 'って': 300, 'てい': 6240, 'てお': 855, 'ても': 302, 'です': 1437, + 'でに': -1482, 'では': 2295, 'とう': -1387, 'とし': 2266, 'との': 541, + 'とも': -3543, 'どう': 4664, 'ない': 1796, 'なく': -903, 'など': 2135, + 'に,': -1021, 'に、': -1021, 'にし': 1771, 'にな': 1906, 'には': 2644, + 'の,': -724, 'の、': -724, 'の子': -1000, 'は,': 1337, 'は、': 1337, + 'べき': 2181, 'まし': 1113, 'ます': 6943, 'まっ': -1549, 'まで': 6154, + 'まれ': -793, 'らし': 1479, 'られ': 6820, 'るる': 3818, 'れ,': 854, + 'れ、': 854, 'れた': 1850, 'れて': 1375, 'れば': -3246, 'れる': 1091, + 'われ': -605, 'んだ': 606, 'んで': 798, 'カ月': 990, '会議': 860, + '入り': 1232, '大会': 2217, '始め': 1681, '市': 965, '新聞': -5055, + '日,': 974, '日、': 974, '社会': 2024, 'カ月': 990} + TC1__ = {'AAA': 1093, 'HHH': 1029, 'HHM': 580, 'HII': 998, 'HOH': -390, + 'HOM': -331, 'IHI': 1169, 'IOH': -142, 'IOI': -1015, 'IOM': 467, + 'MMH': 187, 'OOI': -1832} + TC2__ = {'HHO': 2088, 'HII': -1023, 'HMM': -1154, 'IHI': -1965, + 'KKH': 703, 'OII': -2649} + TC3__ = {'AAA': -294, 'HHH': 346, 'HHI': -341, 'HII': -1088, 'HIK': 731, + 'HOH': -1486, 'IHH': 128, 'IHI': -3041, 'IHO': -1935, 'IIH': -825, + 'IIM': -1035, 'IOI': -542, 'KHH': -1216, 'KKA': 491, 'KKH': -1217, + 'KOK': -1009, 'MHH': -2694, 'MHM': -457, 'MHO': 123, 'MMH': -471, + 'NNH': -1689, 'NNO': 662, 'OHO': -3393} + TC4__ = {'HHH': -203, 'HHI': 1344, 'HHK': 365, 'HHM': -122, 'HHN': 182, + 'HHO': 669, 'HIH': 804, 'HII': 679, 'HOH': 446, 'IHH': 695, + 'IHO': -2324, 'IIH': 321, 'III': 1497, 'IIO': 656, 'IOO': 54, + 'KAK': 4845, 'KKA': 3386, 'KKK': 3065, 'MHH': -405, 'MHI': 201, + 'MMH': -241, 'MMM': 661, 'MOM': 841} + TQ1__ = {'BHHH': -227, 'BHHI': 316, 'BHIH': -132, 'BIHH': 60, 'BIII': 1595, + 'BNHH': -744, 'BOHH': 225, 'BOOO': -908, 'OAKK': 482, 'OHHH': 281, + 'OHIH': 249, 'OIHI': 200, 'OIIH': -68} + TQ2__ = {'BIHH': -1401, 'BIII': -1033, 'BKAK': -543, 'BOOO': -5591} + TQ3__ = {'BHHH': 478, 'BHHM': -1073, 'BHIH': 222, 'BHII': -504, 'BIIH': -116, + 'BIII': -105, 'BMHI': -863, 'BMHM': -464, 'BOMH': 620, 'OHHH': 346, + 'OHHI': 1729, 'OHII': 997, 'OHMH': 481, 'OIHH': 623, 'OIIH': 1344, + 'OKAK': 2792, 'OKHH': 587, 'OKKA': 679, 'OOHH': 110, 'OOII': -685} + TQ4__ = {'BHHH': -721, 'BHHM': -3604, 'BHII': -966, 'BIIH': -607, 'BIII': -2181, + 'OAAA': -2763, 'OAKK': 180, 'OHHH': -294, 'OHHI': 2446, 'OHHO': 480, + 'OHIH': -1573, 'OIHH': 1935, 'OIHI': -493, 'OIIH': 626, 'OIII': -4007, + 'OKAK': -8156} + TW1__ = {'につい': -4681, '東京都': 2026} + TW2__ = {'ある程': -2049, 'いった': -1256, 'ころが': -2434, 'しょう': 3873, + 'その後': -4430, 'だって': -1049, 'ていた': 1833, 'として': -4657, + 'ともに': -4517, 'もので': 1882, '一気に': -792, '初めて': -1512, + '同時に': -8097, '大きな': -1255, '対して': -2721, '社会党': -3216} + TW3__ = {'いただ': -1734, 'してい': 1314, 'として': -4314, 'につい': -5483, + 'にとっ': -5989, 'に当た': -6247, 'ので,': -727, 'ので、': -727, + 'のもの': -600, 'れから': -3752, '十二月': -2287} + TW4__ = {'いう.': 8576, 'いう。': 8576, 'からな': -2348, 'してい': 2958, + 'たが,': 1516, 'たが、': 1516, 'ている': 1538, 'という': 1349, + 'ました': 5543, 'ません': 1097, 'ようと': -4258, 'よると': 5865} + UC1__ = {'A': 484, 'K': 93, 'M': 645, 'O': -505} + UC2__ = {'A': 819, 'H': 1059, 'I': 409, 'M': 3987, 'N': 5775, 'O': 646} + UC3__ = {'A': -1370, 'I': 2311} + UC4__ = {'A': -2643, 'H': 1809, 'I': -1032, 'K': -3450, 'M': 3565, + 'N': 3876, 'O': 6646} + UC5__ = {'H': 313, 'I': -1238, 'K': -799, 'M': 539, 'O': -831} + UC6__ = {'H': -506, 'I': -253, 'K': 87, 'M': 247, 'O': -387} + UP1__ = {'O': -214} + UP2__ = {'B': 69, 'O': 935} + UP3__ = {'B': 189} + UQ1__ = {'BH': 21, 'BI': -12, 'BK': -99, 'BN': 142, 'BO': -56, 'OH': -95, + 'OI': 477, 'OK': 410, 'OO': -2422} + UQ2__ = {'BH': 216, 'BI': 113, 'OK': 1759} + UQ3__ = {'BA': -479, 'BH': 42, 'BI': 1913, 'BK': -7198, 'BM': 3160, + 'BN': 6427, 'BO': 14761, 'OI': -827, 'ON': -3212} + UW1__ = {',': 156, '、': 156, '「': -463, 'あ': -941, 'う': -127, 'が': -553, + 'き': 121, 'こ': 505, 'で': -201, 'と': -547, 'ど': -123, 'に': -789, + 'の': -185, 'は': -847, 'も': -466, 'や': -470, 'よ': 182, 'ら': -292, + 'り': 208, 'れ': 169, 'を': -446, 'ん': -137, '・': -135, '主': -402, + '京': -268, '区': -912, '午': 871, '国': -460, '大': 561, '委': 729, + '市': -411, '日': -141, '理': 361, '生': -408, '県': -386, '都': -718, + '「': -463, '・': -135} + UW2__ = {',': -829, '、': -829, '〇': 892, '「': -645, '」': 3145, 'あ': -538, + 'い': 505, 'う': 134, 'お': -502, 'か': 1454, 'が': -856, 'く': -412, + 'こ': 1141, 'さ': 878, 'ざ': 540, 'し': 1529, 'す': -675, 'せ': 300, + 'そ': -1011, 'た': 188, 'だ': 1837, 'つ': -949, 'て': -291, 'で': -268, + 'と': -981, 'ど': 1273, 'な': 1063, 'に': -1764, 'の': 130, 'は': -409, + 'ひ': -1273, 'べ': 1261, 'ま': 600, 'も': -1263, 'や': -402, 'よ': 1639, + 'り': -579, 'る': -694, 'れ': 571, 'を': -2516, 'ん': 2095, 'ア': -587, + 'カ': 306, 'キ': 568, 'ッ': 831, '三': -758, '不': -2150, '世': -302, + '中': -968, '主': -861, '事': 492, '人': -123, '会': 978, '保': 362, + '入': 548, '初': -3025, '副': -1566, '北': -3414, '区': -422, '大': -1769, + '天': -865, '太': -483, '子': -1519, '学': 760, '実': 1023, '小': -2009, + '市': -813, '年': -1060, '強': 1067, '手': -1519, '揺': -1033, '政': 1522, + '文': -1355, '新': -1682, '日': -1815, '明': -1462, '最': -630, '朝': -1843, + '本': -1650, '東': -931, '果': -665, '次': -2378, '民': -180, '気': -1740, + '理': 752, '発': 529, '目': -1584, '相': -242, '県': -1165, '立': -763, + '第': 810, '米': 509, '自': -1353, '行': 838, '西': -744, '見': -3874, + '調': 1010, '議': 1198, '込': 3041, '開': 1758, '間': -1257, '「': -645, + '」': 3145, 'ッ': 831, 'ア': -587, 'カ': 306, 'キ': 568} + UW3__ = {',': 4889, '1': -800, '−': -1723, '、': 4889, '々': -2311, '〇': 5827, + '」': 2670, '〓': -3573, 'あ': -2696, 'い': 1006, 'う': 2342, 'え': 1983, + 'お': -4864, 'か': -1163, 'が': 3271, 'く': 1004, 'け': 388, 'げ': 401, + 'こ': -3552, 'ご': -3116, 'さ': -1058, 'し': -395, 'す': 584, 'せ': 3685, + 'そ': -5228, 'た': 842, 'ち': -521, 'っ': -1444, 'つ': -1081, 'て': 6167, + 'で': 2318, 'と': 1691, 'ど': -899, 'な': -2788, 'に': 2745, 'の': 4056, + 'は': 4555, 'ひ': -2171, 'ふ': -1798, 'へ': 1199, 'ほ': -5516, 'ま': -4384, + 'み': -120, 'め': 1205, 'も': 2323, 'や': -788, 'よ': -202, 'ら': 727, + 'り': 649, 'る': 5905, 'れ': 2773, 'わ': -1207, 'を': 6620, 'ん': -518, + 'ア': 551, 'グ': 1319, 'ス': 874, 'ッ': -1350, 'ト': 521, 'ム': 1109, + 'ル': 1591, 'ロ': 2201, 'ン': 278, '・': -3794, '一': -1619, '下': -1759, + '世': -2087, '両': 3815, '中': 653, '主': -758, '予': -1193, '二': 974, + '人': 2742, '今': 792, '他': 1889, '以': -1368, '低': 811, '何': 4265, + '作': -361, '保': -2439, '元': 4858, '党': 3593, '全': 1574, '公': -3030, + '六': 755, '共': -1880, '円': 5807, '再': 3095, '分': 457, '初': 2475, + '別': 1129, '前': 2286, '副': 4437, '力': 365, '動': -949, '務': -1872, + '化': 1327, '北': -1038, '区': 4646, '千': -2309, '午': -783, '協': -1006, + '口': 483, '右': 1233, '各': 3588, '合': -241, '同': 3906, '和': -837, + '員': 4513, '国': 642, '型': 1389, '場': 1219, '外': -241, '妻': 2016, + '学': -1356, '安': -423, '実': -1008, '家': 1078, '小': -513, '少': -3102, + '州': 1155, '市': 3197, '平': -1804, '年': 2416, '広': -1030, '府': 1605, + '度': 1452, '建': -2352, '当': -3885, '得': 1905, '思': -1291, '性': 1822, + '戸': -488, '指': -3973, '政': -2013, '教': -1479, '数': 3222, '文': -1489, + '新': 1764, '日': 2099, '旧': 5792, '昨': -661, '時': -1248, '曜': -951, + '最': -937, '月': 4125, '期': 360, '李': 3094, '村': 364, '東': -805, + '核': 5156, '森': 2438, '業': 484, '氏': 2613, '民': -1694, '決': -1073, + '法': 1868, '海': -495, '無': 979, '物': 461, '特': -3850, '生': -273, + '用': 914, '町': 1215, '的': 7313, '直': -1835, '省': 792, '県': 6293, + '知': -1528, '私': 4231, '税': 401, '立': -960, '第': 1201, '米': 7767, + '系': 3066, '約': 3663, '級': 1384, '統': -4229, '総': 1163, '線': 1255, + '者': 6457, '能': 725, '自': -2869, '英': 785, '見': 1044, '調': -562, + '財': -733, '費': 1777, '車': 1835, '軍': 1375, '込': -1504, '通': -1136, + '選': -681, '郎': 1026, '郡': 4404, '部': 1200, '金': 2163, '長': 421, + '開': -1432, '間': 1302, '関': -1282, '雨': 2009, '電': -1045, '非': 2066, + '駅': 1620, '1': -800, '」': 2670, '・': -3794, 'ッ': -1350, 'ア': 551, + 'グ': 1319, 'ス': 874, 'ト': 521, 'ム': 1109, 'ル': 1591, 'ロ': 2201, 'ン': 278} + UW4__ = {',': 3930, '.': 3508, '―': -4841, '、': 3930, '。': 3508, '〇': 4999, + '「': 1895, '」': 3798, '〓': -5156, 'あ': 4752, 'い': -3435, 'う': -640, + 'え': -2514, 'お': 2405, 'か': 530, 'が': 6006, 'き': -4482, 'ぎ': -3821, + 'く': -3788, 'け': -4376, 'げ': -4734, 'こ': 2255, 'ご': 1979, 'さ': 2864, + 'し': -843, 'じ': -2506, 'す': -731, 'ず': 1251, 'せ': 181, 'そ': 4091, + 'た': 5034, 'だ': 5408, 'ち': -3654, 'っ': -5882, 'つ': -1659, 'て': 3994, + 'で': 7410, 'と': 4547, 'な': 5433, 'に': 6499, 'ぬ': 1853, 'ね': 1413, + 'の': 7396, 'は': 8578, 'ば': 1940, 'ひ': 4249, 'び': -4134, 'ふ': 1345, + 'へ': 6665, 'べ': -744, 'ほ': 1464, 'ま': 1051, 'み': -2082, 'む': -882, + 'め': -5046, 'も': 4169, 'ゃ': -2666, 'や': 2795, 'ょ': -1544, 'よ': 3351, + 'ら': -2922, 'り': -9726, 'る': -14896, 'れ': -2613, 'ろ': -4570, + 'わ': -1783, 'を': 13150, 'ん': -2352, 'カ': 2145, 'コ': 1789, 'セ': 1287, + 'ッ': -724, 'ト': -403, 'メ': -1635, 'ラ': -881, 'リ': -541, 'ル': -856, + 'ン': -3637, '・': -4371, 'ー': -11870, '一': -2069, '中': 2210, '予': 782, + '事': -190, '井': -1768, '人': 1036, '以': 544, '会': 950, '体': -1286, + '作': 530, '側': 4292, '先': 601, '党': -2006, '共': -1212, '内': 584, + '円': 788, '初': 1347, '前': 1623, '副': 3879, '力': -302, '動': -740, + '務': -2715, '化': 776, '区': 4517, '協': 1013, '参': 1555, '合': -1834, + '和': -681, '員': -910, '器': -851, '回': 1500, '国': -619, '園': -1200, + '地': 866, '場': -1410, '塁': -2094, '士': -1413, '多': 1067, '大': 571, + '子': -4802, '学': -1397, '定': -1057, '寺': -809, '小': 1910, '屋': -1328, + '山': -1500, '島': -2056, '川': -2667, '市': 2771, '年': 374, '庁': -4556, + '後': 456, '性': 553, '感': 916, '所': -1566, '支': 856, '改': 787, + '政': 2182, '教': 704, '文': 522, '方': -856, '日': 1798, '時': 1829, + '最': 845, '月': -9066, '木': -485, '来': -442, '校': -360, '業': -1043, + '氏': 5388, '民': -2716, '気': -910, '沢': -939, '済': -543, '物': -735, + '率': 672, '球': -1267, '生': -1286, '産': -1101, '田': -2900, '町': 1826, + '的': 2586, '目': 922, '省': -3485, '県': 2997, '空': -867, '立': -2112, + '第': 788, '米': 2937, '系': 786, '約': 2171, '経': 1146, '統': -1169, + '総': 940, '線': -994, '署': 749, '者': 2145, '能': -730, '般': -852, + '行': -792, '規': 792, '警': -1184, '議': -244, '谷': -1000, '賞': 730, + '車': -1481, '軍': 1158, '輪': -1433, '込': -3370, '近': 929, '道': -1291, + '選': 2596, '郎': -4866, '都': 1192, '野': -1100, '銀': -2213, '長': 357, + '間': -2344, '院': -2297, '際': -2604, '電': -878, '領': -1659, '題': -792, + '館': -1984, '首': 1749, '高': 2120, '「': 1895, '」': 3798, '・': -4371, + 'ッ': -724, 'ー': -11870, 'カ': 2145, 'コ': 1789, 'セ': 1287, 'ト': -403, + 'メ': -1635, 'ラ': -881, 'リ': -541, 'ル': -856, 'ン': -3637} + UW5__ = {',': 465, '.': -299, '1': -514, 'E2': -32768, ']': -2762, '、': 465, + '。': -299, '「': 363, 'あ': 1655, 'い': 331, 'う': -503, 'え': 1199, + 'お': 527, 'か': 647, 'が': -421, 'き': 1624, 'ぎ': 1971, 'く': 312, + 'げ': -983, 'さ': -1537, 'し': -1371, 'す': -852, 'だ': -1186, 'ち': 1093, + 'っ': 52, 'つ': 921, 'て': -18, 'で': -850, 'と': -127, 'ど': 1682, + 'な': -787, 'に': -1224, 'の': -635, 'は': -578, 'べ': 1001, 'み': 502, + 'め': 865, 'ゃ': 3350, 'ょ': 854, 'り': -208, 'る': 429, 'れ': 504, + 'わ': 419, 'を': -1264, 'ん': 327, 'イ': 241, 'ル': 451, 'ン': -343, + '中': -871, '京': 722, '会': -1153, '党': -654, '務': 3519, '区': -901, + '告': 848, '員': 2104, '大': -1296, '学': -548, '定': 1785, '嵐': -1304, + '市': -2991, '席': 921, '年': 1763, '思': 872, '所': -814, '挙': 1618, + '新': -1682, '日': 218, '月': -4353, '査': 932, '格': 1356, '機': -1508, + '氏': -1347, '田': 240, '町': -3912, '的': -3149, '相': 1319, '省': -1052, + '県': -4003, '研': -997, '社': -278, '空': -813, '統': 1955, '者': -2233, + '表': 663, '語': -1073, '議': 1219, '選': -1018, '郎': -368, '長': 786, + '間': 1191, '題': 2368, '館': -689, '1': -514, 'E2': -32768, '「': 363, + 'イ': 241, 'ル': 451, 'ン': -343} + UW6__ = {',': 227, '.': 808, '1': -270, 'E1': 306, '、': 227, '。': 808, + 'あ': -307, 'う': 189, 'か': 241, 'が': -73, 'く': -121, 'こ': -200, + 'じ': 1782, 'す': 383, 'た': -428, 'っ': 573, 'て': -1014, 'で': 101, + 'と': -105, 'な': -253, 'に': -149, 'の': -417, 'は': -236, 'も': -206, + 'り': 187, 'る': -135, 'を': 195, 'ル': -673, 'ン': -496, '一': -277, + '中': 201, '件': -800, '会': 624, '前': 302, '区': 1792, '員': -1212, + '委': 798, '学': -960, '市': 887, '広': -695, '後': 535, '業': -697, + '相': 753, '社': -507, '福': 974, '空': -822, '者': 1811, '連': 463, + '郎': 1082, '1': -270, 'E1': 306, 'ル': -673, 'ン': -496} + + # ctype_ + def ctype_(self, char: str) -> str: + for pattern, value in self.patterns_.items(): + if pattern.match(char): + return value + return 'O' + + # ts_ + def ts_(self, dict: dict[str, int], key: str) -> int: + if key in dict: + return dict[key] + return 0 + + # segment + def split(self, input: str) -> list[str]: + if not input: + return [] + + result = [] + seg = ['B3', 'B2', 'B1'] + ctype = ['O', 'O', 'O'] + for t in input: + seg.append(t) + ctype.append(self.ctype_(t)) + seg.append('E1') + seg.append('E2') + seg.append('E3') + ctype.append('O') + ctype.append('O') + ctype.append('O') + word = seg[3] + p1 = 'U' + p2 = 'U' + p3 = 'U' + + for i in range(4, len(seg) - 3): + score = self.BIAS__ + w1 = seg[i-3] + w2 = seg[i-2] + w3 = seg[i-1] + w4 = seg[i] + w5 = seg[i+1] + w6 = seg[i+2] + c1 = ctype[i-3] + c2 = ctype[i-2] + c3 = ctype[i-1] + c4 = ctype[i] + c5 = ctype[i+1] + c6 = ctype[i+2] + score += self.ts_(self.UP1__, p1) + score += self.ts_(self.UP2__, p2) + score += self.ts_(self.UP3__, p3) + score += self.ts_(self.BP1__, p1 + p2) + score += self.ts_(self.BP2__, p2 + p3) + score += self.ts_(self.UW1__, w1) + score += self.ts_(self.UW2__, w2) + score += self.ts_(self.UW3__, w3) + score += self.ts_(self.UW4__, w4) + score += self.ts_(self.UW5__, w5) + score += self.ts_(self.UW6__, w6) + score += self.ts_(self.BW1__, w2 + w3) + score += self.ts_(self.BW2__, w3 + w4) + score += self.ts_(self.BW3__, w4 + w5) + score += self.ts_(self.TW1__, w1 + w2 + w3) + score += self.ts_(self.TW2__, w2 + w3 + w4) + score += self.ts_(self.TW3__, w3 + w4 + w5) + score += self.ts_(self.TW4__, w4 + w5 + w6) + score += self.ts_(self.UC1__, c1) + score += self.ts_(self.UC2__, c2) + score += self.ts_(self.UC3__, c3) + score += self.ts_(self.UC4__, c4) + score += self.ts_(self.UC5__, c5) + score += self.ts_(self.UC6__, c6) + score += self.ts_(self.BC1__, c2 + c3) + score += self.ts_(self.BC2__, c3 + c4) + score += self.ts_(self.BC3__, c4 + c5) + score += self.ts_(self.TC1__, c1 + c2 + c3) + score += self.ts_(self.TC2__, c2 + c3 + c4) + score += self.ts_(self.TC3__, c3 + c4 + c5) + score += self.ts_(self.TC4__, c4 + c5 + c6) +# score += self.ts_(self.TC5__, c4 + c5 + c6) + score += self.ts_(self.UQ1__, p1 + c1) + score += self.ts_(self.UQ2__, p2 + c2) + score += self.ts_(self.UQ1__, p3 + c3) + score += self.ts_(self.BQ1__, p2 + c2 + c3) + score += self.ts_(self.BQ2__, p2 + c3 + c4) + score += self.ts_(self.BQ3__, p3 + c2 + c3) + score += self.ts_(self.BQ4__, p3 + c3 + c4) + score += self.ts_(self.TQ1__, p2 + c1 + c2 + c3) + score += self.ts_(self.TQ2__, p2 + c2 + c3 + c4) + score += self.ts_(self.TQ3__, p3 + c1 + c2 + c3) + score += self.ts_(self.TQ4__, p3 + c2 + c3 + c4) + p = 'O' + if score > 0: + result.append(word.strip()) + word = '' + p = 'B' + p1 = p2 + p2 = p3 + p3 = p + word += seg[i] + + result.append(word.strip()) + return result + + +class SearchJapanese(SearchLanguage): + """ + Japanese search implementation: uses no stemmer, but word splitting is quite + complicated. + """ + lang = 'ja' + language_name = 'Japanese' + + def init(self, options: dict) -> None: + dotted_path = options.get('type', 'sphinx.search.ja.DefaultSplitter') + try: + self.splitter = import_object(dotted_path)(options) + except ExtensionError as exc: + raise ExtensionError("Splitter module %r can't be imported" % + dotted_path) from exc + + def split(self, input: str) -> list[str]: + return self.splitter.split(input) + + def word_filter(self, stemmed_word: str) -> bool: + return len(stemmed_word) > 1 + + def stem(self, word: str) -> str: + return word diff --git a/sphinx/search/minified-js/base-stemmer.js b/sphinx/search/minified-js/base-stemmer.js new file mode 100644 index 0000000..0822908 --- /dev/null +++ b/sphinx/search/minified-js/base-stemmer.js @@ -0,0 +1 @@ +BaseStemmer=function(){this.setCurrent=function(r){this.current=r;this.cursor=0;this.limit=this.current.length;this.limit_backward=0;this.bra=this.cursor;this.ket=this.limit};this.getCurrent=function(){return this.current};this.copy_from=function(r){this.current=r.current;this.cursor=r.cursor;this.limit=r.limit;this.limit_backward=r.limit_backward;this.bra=r.bra;this.ket=r.ket};this.in_grouping=function(r,t,i){if(this.cursor>=this.limit)return false;var s=this.current.charCodeAt(this.cursor);if(s>i||s>>3]&1<<(s&7))==0)return false;this.cursor++;return true};this.in_grouping_b=function(r,t,i){if(this.cursor<=this.limit_backward)return false;var s=this.current.charCodeAt(this.cursor-1);if(s>i||s>>3]&1<<(s&7))==0)return false;this.cursor--;return true};this.out_grouping=function(r,t,i){if(this.cursor>=this.limit)return false;var s=this.current.charCodeAt(this.cursor);if(s>i||s>>3]&1<<(s&7))==0){this.cursor++;return true}return false};this.out_grouping_b=function(r,t,i){if(this.cursor<=this.limit_backward)return false;var s=this.current.charCodeAt(this.cursor-1);if(s>i||s>>3]&1<<(s&7))==0){this.cursor--;return true}return false};this.eq_s=function(r){if(this.limit-this.cursor>>1);var a=0;var f=h0)break;if(i==t)break;if(n)break;n=true}}do{var l=r[t];if(h>=l[0].length){this.cursor=s+l[0].length;if(l.length<4)return l[2];var v=l[3](this);this.cursor=s+l[0].length;if(v)return l[2]}t=l[1]}while(t>=0);return 0};this.find_among_b=function(r){var t=0;var i=r.length;var s=this.cursor;var e=this.limit_backward;var h=0;var u=0;var n=false;while(true){var c=t+(i-t>>1);var a=0;var f=h=0;o--){if(s-f==e){a=-1;break}a=this.current.charCodeAt(s-1-f)-l[0].charCodeAt(o);if(a!=0)break;f++}if(a<0){i=c;u=f}else{t=c;h=f}if(i-t<=1){if(t>0)break;if(i==t)break;if(n)break;n=true}}do{var l=r[t];if(h>=l[0].length){this.cursor=s-l[0].length;if(l.length<4)return l[2];var v=l[3](this);this.cursor=s-l[0].length;if(v)return l[2]}t=l[1]}while(t>=0);return 0};this.replace_s=function(r,t,i){var s=i.length-(t-r);this.current=this.current.slice(0,r)+i+this.current.slice(t);this.limit+=s;if(this.cursor>=t)this.cursor+=s;else if(this.cursor>r)this.cursor=r;return s};this.slice_check=function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>this.current.length){return false}return true};this.slice_from=function(r){var t=false;if(this.slice_check()){this.replace_s(this.bra,this.ket,r);t=true}return t};this.slice_del=function(){return this.slice_from("")};this.insert=function(r,t,i){var s=this.replace_s(r,t,i);if(r<=this.bra)this.bra+=s;if(r<=this.ket)this.ket+=s};this.slice_to=function(){var r="";if(this.slice_check()){r=this.current.slice(this.bra,this.ket)}return r};this.assign_to=function(){return this.current.slice(0,this.limit)}}; \ No newline at end of file diff --git a/sphinx/search/minified-js/danish-stemmer.js b/sphinx/search/minified-js/danish-stemmer.js new file mode 100644 index 0000000..f3fc600 --- /dev/null +++ b/sphinx/search/minified-js/danish-stemmer.js @@ -0,0 +1 @@ +DanishStemmer=function(){var r=new BaseStemmer;var e=[["hed",-1,1],["ethed",0,1],["ered",-1,1],["e",-1,1],["erede",3,1],["ende",3,1],["erende",5,1],["ene",3,1],["erne",3,1],["ere",3,1],["en",-1,1],["heden",10,1],["eren",10,1],["er",-1,1],["heder",13,1],["erer",13,1],["s",-1,2],["heds",16,1],["es",16,1],["endes",18,1],["erendes",19,1],["enes",18,1],["ernes",18,1],["eres",18,1],["ens",16,1],["hedens",24,1],["erens",24,1],["ers",16,1],["ets",16,1],["erets",28,1],["et",-1,1],["eret",30,1]];var i=[["gd",-1,-1],["dt",-1,-1],["gt",-1,-1],["kt",-1,-1]];var s=[["ig",-1,1],["lig",0,1],["elig",1,1],["els",-1,1],["løst",-1,2]];var t=[119,223,119,1];var a=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128];var u=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16];var c=0;var l=0;var n="";function o(){l=r.limit;var e=r.cursor;{var i=r.cursor+3;if(i>r.limit){return false}r.cursor=i}c=r.cursor;r.cursor=e;r:while(true){var s=r.cursor;e:{if(!r.in_grouping(a,97,248)){break e}r.cursor=s;break r}r.cursor=s;if(r.cursor>=r.limit){return false}r.cursor++}r:while(true){e:{if(!r.out_grouping(a,97,248)){break e}break r}if(r.cursor>=r.limit){return false}r.cursor++}l=r.cursor;r:{if(!(l=r.limit){break r}r.cursor++;break}continue}r.cursor=s;break}r.cursor=u;var a=r.cursor;r:{r.bra=r.cursor;if(!r.eq_s("y")){r.cursor=a;break r}r.ket=r.cursor;if(!r.slice_from("Y")){return false}}while(true){var t=r.cursor;r:{e:while(true){var o=r.cursor;i:{if(!r.in_grouping(c,97,232)){break i}r.bra=r.cursor;u:{var f=r.cursor;s:{if(!r.eq_s("i")){break s}r.ket=r.cursor;if(!r.in_grouping(c,97,232)){break s}if(!r.slice_from("I")){return false}break u}r.cursor=f;if(!r.eq_s("y")){break i}r.ket=r.cursor;if(!r.slice_from("Y")){return false}}r.cursor=o;break e}r.cursor=o;if(r.cursor>=r.limit){break r}r.cursor++}continue}r.cursor=t;break}return true}function _(){n=r.limit;l=r.limit;r:while(true){e:{if(!r.in_grouping(c,97,232)){break e}break r}if(r.cursor>=r.limit){return false}r.cursor++}r:while(true){e:{if(!r.out_grouping(c,97,232)){break e}break r}if(r.cursor>=r.limit){return false}r.cursor++}n=r.cursor;r:{if(!(n<3)){break r}n=3}r:while(true){e:{if(!r.in_grouping(c,97,232)){break e}break r}if(r.cursor>=r.limit){return false}r.cursor++}r:while(true){e:{if(!r.out_grouping(c,97,232)){break e}break r}if(r.cursor>=r.limit){return false}r.cursor++}l=r.cursor;return true}function m(){var e;while(true){var u=r.cursor;r:{r.bra=r.cursor;e=r.find_among(i);if(e==0){break r}r.ket=r.cursor;switch(e){case 1:if(!r.slice_from("y")){return false}break;case 2:if(!r.slice_from("i")){return false}break;case 3:if(r.cursor>=r.limit){break r}r.cursor++;break}continue}r.cursor=u;break}return true}function v(){if(!(n<=r.cursor)){return false}return true}function g(){if(!(l<=r.cursor)){return false}return true}function d(){var e=r.limit-r.cursor;if(r.find_among_b(u)==0){return false}r.cursor=r.limit-e;r.ket=r.cursor;if(r.cursor<=r.limit_backward){return false}r.cursor--;r.bra=r.cursor;if(!r.slice_del()){return false}return true}function h(){b=false;r.ket=r.cursor;if(!r.eq_s_b("e")){return false}r.bra=r.cursor;if(!v()){return false}var e=r.limit-r.cursor;if(!r.out_grouping_b(c,97,232)){return false}r.cursor=r.limit-e;if(!r.slice_del()){return false}b=true;if(!d()){return false}return true}function w(){if(!v()){return false}var e=r.limit-r.cursor;if(!r.out_grouping_b(c,97,232)){return false}r.cursor=r.limit-e;{var i=r.limit-r.cursor;r:{if(!r.eq_s_b("gem")){break r}return false}r.cursor=r.limit-i}if(!r.slice_del()){return false}if(!d()){return false}return true}function p(){var e;var i=r.limit-r.cursor;r:{r.ket=r.cursor;e=r.find_among_b(s);if(e==0){break r}r.bra=r.cursor;switch(e){case 1:if(!v()){break r}if(!r.slice_from("heid")){return false}break;case 2:if(!w()){break r}break;case 3:if(!v()){break r}if(!r.out_grouping_b(f,97,232)){break r}if(!r.slice_del()){return false}break}}r.cursor=r.limit-i;var u=r.limit-r.cursor;h();r.cursor=r.limit-u;var l=r.limit-r.cursor;r:{r.ket=r.cursor;if(!r.eq_s_b("heid")){break r}r.bra=r.cursor;if(!g()){break r}{var n=r.limit-r.cursor;e:{if(!r.eq_s_b("c")){break e}break r}r.cursor=r.limit-n}if(!r.slice_del()){return false}r.ket=r.cursor;if(!r.eq_s_b("en")){break r}r.bra=r.cursor;if(!w()){break r}}r.cursor=r.limit-l;var k=r.limit-r.cursor;r:{r.ket=r.cursor;e=r.find_among_b(a);if(e==0){break r}r.bra=r.cursor;switch(e){case 1:if(!g()){break r}if(!r.slice_del()){return false}e:{var _=r.limit-r.cursor;i:{r.ket=r.cursor;if(!r.eq_s_b("ig")){break i}r.bra=r.cursor;if(!g()){break i}{var m=r.limit-r.cursor;u:{if(!r.eq_s_b("e")){break u}break i}r.cursor=r.limit-m}if(!r.slice_del()){return false}break e}r.cursor=r.limit-_;if(!d()){break r}}break;case 2:if(!g()){break r}{var p=r.limit-r.cursor;e:{if(!r.eq_s_b("e")){break e}break r}r.cursor=r.limit-p}if(!r.slice_del()){return false}break;case 3:if(!g()){break r}if(!r.slice_del()){return false}if(!h()){break r}break;case 4:if(!g()){break r}if(!r.slice_del()){return false}break;case 5:if(!g()){break r}if(!b){break r}if(!r.slice_del()){return false}break}}r.cursor=r.limit-k;var q=r.limit-r.cursor;r:{if(!r.out_grouping_b(o,73,232)){break r}var y=r.limit-r.cursor;if(r.find_among_b(t)==0){break r}if(!r.out_grouping_b(c,97,232)){break r}r.cursor=r.limit-y;r.ket=r.cursor;if(r.cursor<=r.limit_backward){break r}r.cursor--;r.bra=r.cursor;if(!r.slice_del()){return false}}r.cursor=r.limit-q;return true}this.stem=function(){var e=r.cursor;k();r.cursor=e;var i=r.cursor;_();r.cursor=i;r.limit_backward=r.cursor;r.cursor=r.limit;p();r.cursor=r.limit_backward;var u=r.cursor;m();r.cursor=u;return true};this["stemWord"]=function(e){r.setCurrent(e);this.stem();return r.getCurrent()}}; \ No newline at end of file diff --git a/sphinx/search/minified-js/finnish-stemmer.js b/sphinx/search/minified-js/finnish-stemmer.js new file mode 100644 index 0000000..f6301fd --- /dev/null +++ b/sphinx/search/minified-js/finnish-stemmer.js @@ -0,0 +1 @@ +FinnishStemmer=function(){var r=new BaseStemmer;var i=[["pa",-1,1],["sti",-1,2],["kaan",-1,1],["han",-1,1],["kin",-1,1],["hän",-1,1],["kään",-1,1],["ko",-1,1],["pä",-1,1],["kö",-1,1]];var e=[["lla",-1,-1],["na",-1,-1],["ssa",-1,-1],["ta",-1,-1],["lta",3,-1],["sta",3,-1]];var a=[["llä",-1,-1],["nä",-1,-1],["ssä",-1,-1],["tä",-1,-1],["ltä",3,-1],["stä",3,-1]];var s=[["lle",-1,-1],["ine",-1,-1]];var t=[["nsa",-1,3],["mme",-1,3],["nne",-1,3],["ni",-1,2],["si",-1,1],["an",-1,4],["en",-1,6],["än",-1,5],["nsä",-1,3]];var u=[["aa",-1,-1],["ee",-1,-1],["ii",-1,-1],["oo",-1,-1],["uu",-1,-1],["ää",-1,-1],["öö",-1,-1]];var l=[["a",-1,8],["lla",0,-1],["na",0,-1],["ssa",0,-1],["ta",0,-1],["lta",4,-1],["sta",4,-1],["tta",4,2],["lle",-1,-1],["ine",-1,-1],["ksi",-1,-1],["n",-1,7],["han",11,1],["den",11,-1,S],["seen",11,-1,C],["hen",11,2],["tten",11,-1,S],["hin",11,3],["siin",11,-1,S],["hon",11,4],["hän",11,5],["hön",11,6],["ä",-1,8],["llä",22,-1],["nä",22,-1],["ssä",22,-1],["tä",22,-1],["ltä",26,-1],["stä",26,-1],["ttä",26,2]];var c=[["eja",-1,-1],["mma",-1,1],["imma",1,-1],["mpa",-1,1],["impa",3,-1],["mmi",-1,1],["immi",5,-1],["mpi",-1,1],["impi",7,-1],["ejä",-1,-1],["mmä",-1,1],["immä",10,-1],["mpä",-1,1],["impä",12,-1]];var n=[["i",-1,-1],["j",-1,-1]];var f=[["mma",-1,1],["imma",0,-1]];var o=[17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8];var b=[119,223,119,1];var _=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32];var m=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32];var k=[17,97,24,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32];var d=false;var v="";var w=0;var g=0;function p(){g=r.limit;w=r.limit;r:while(true){var i=r.cursor;i:{if(!r.in_grouping(_,97,246)){break i}r.cursor=i;break r}r.cursor=i;if(r.cursor>=r.limit){return false}r.cursor++}r:while(true){i:{if(!r.out_grouping(_,97,246)){break i}break r}if(r.cursor>=r.limit){return false}r.cursor++}g=r.cursor;r:while(true){var e=r.cursor;i:{if(!r.in_grouping(_,97,246)){break i}r.cursor=e;break r}r.cursor=e;if(r.cursor>=r.limit){return false}r.cursor++}r:while(true){i:{if(!r.out_grouping(_,97,246)){break i}break r}if(r.cursor>=r.limit){return false}r.cursor++}w=r.cursor;return true}function h(){if(!(w<=r.cursor)){return false}return true}function q(){var e;if(r.cursor=r.limit){break r}r.cursor++}continue}r.cursor=e;break}return true}function v(){m=r.limit;k=r.limit;b=r.limit;var i=r.cursor;r:{e:{var s=r.cursor;i:{if(!r.in_grouping(o,97,251)){break i}if(!r.in_grouping(o,97,251)){break i}if(r.cursor>=r.limit){break i}r.cursor++;break e}r.cursor=s;i:{if(r.find_among(e)==0){break i}break e}r.cursor=s;if(r.cursor>=r.limit){break r}r.cursor++;i:while(true){s:{if(!r.in_grouping(o,97,251)){break s}break i}if(r.cursor>=r.limit){break r}r.cursor++}}m=r.cursor}r.cursor=i;var a=r.cursor;r:{e:while(true){i:{if(!r.in_grouping(o,97,251)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.out_grouping(o,97,251)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}k=r.cursor;e:while(true){i:{if(!r.in_grouping(o,97,251)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.out_grouping(o,97,251)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}b=r.cursor}r.cursor=a;return true}function d(){var e;while(true){var s=r.cursor;r:{r.bra=r.cursor;e=r.find_among(i);if(e==0){break r}r.ket=r.cursor;switch(e){case 1:if(!r.slice_from("i")){return false}break;case 2:if(!r.slice_from("u")){return false}break;case 3:if(!r.slice_from("y")){return false}break;case 4:if(!r.slice_from("ë")){return false}break;case 5:if(!r.slice_from("ï")){return false}break;case 6:if(!r.slice_del()){return false}break;case 7:if(r.cursor>=r.limit){break r}r.cursor++;break}continue}r.cursor=s;break}return true}function g(){if(!(m<=r.cursor)){return false}return true}function w(){if(!(k<=r.cursor)){return false}return true}function q(){if(!(b<=r.cursor)){return false}return true}function h(){var e;r.ket=r.cursor;e=r.find_among_b(u);if(e==0){return false}r.bra=r.cursor;switch(e){case 1:if(!q()){return false}if(!r.slice_del()){return false}break;case 2:if(!q()){return false}if(!r.slice_del()){return false}var i=r.limit-r.cursor;r:{r.ket=r.cursor;if(!r.eq_s_b("ic")){r.cursor=r.limit-i;break r}r.bra=r.cursor;e:{var t=r.limit-r.cursor;i:{if(!q()){break i}if(!r.slice_del()){return false}break e}r.cursor=r.limit-t;if(!r.slice_from("iqU")){return false}}}break;case 3:if(!q()){return false}if(!r.slice_from("log")){return false}break;case 4:if(!q()){return false}if(!r.slice_from("u")){return false}break;case 5:if(!q()){return false}if(!r.slice_from("ent")){return false}break;case 6:if(!g()){return false}if(!r.slice_del()){return false}var c=r.limit-r.cursor;r:{r.ket=r.cursor;e=r.find_among_b(s);if(e==0){r.cursor=r.limit-c;break r}r.bra=r.cursor;switch(e){case 1:if(!q()){r.cursor=r.limit-c;break r}if(!r.slice_del()){return false}r.ket=r.cursor;if(!r.eq_s_b("at")){r.cursor=r.limit-c;break r}r.bra=r.cursor;if(!q()){r.cursor=r.limit-c;break r}if(!r.slice_del()){return false}break;case 2:e:{var f=r.limit-r.cursor;i:{if(!q()){break i}if(!r.slice_del()){return false}break e}r.cursor=r.limit-f;if(!w()){r.cursor=r.limit-c;break r}if(!r.slice_from("eux")){return false}}break;case 3:if(!q()){r.cursor=r.limit-c;break r}if(!r.slice_del()){return false}break;case 4:if(!g()){r.cursor=r.limit-c;break r}if(!r.slice_from("i")){return false}break}}break;case 7:if(!q()){return false}if(!r.slice_del()){return false}var l=r.limit-r.cursor;r:{r.ket=r.cursor;e=r.find_among_b(a);if(e==0){r.cursor=r.limit-l;break r}r.bra=r.cursor;switch(e){case 1:e:{var n=r.limit-r.cursor;i:{if(!q()){break i}if(!r.slice_del()){return false}break e}r.cursor=r.limit-n;if(!r.slice_from("abl")){return false}}break;case 2:e:{var b=r.limit-r.cursor;i:{if(!q()){break i}if(!r.slice_del()){return false}break e}r.cursor=r.limit-b;if(!r.slice_from("iqU")){return false}}break;case 3:if(!q()){r.cursor=r.limit-l;break r}if(!r.slice_del()){return false}break}}break;case 8:if(!q()){return false}if(!r.slice_del()){return false}var k=r.limit-r.cursor;r:{r.ket=r.cursor;if(!r.eq_s_b("at")){r.cursor=r.limit-k;break r}r.bra=r.cursor;if(!q()){r.cursor=r.limit-k;break r}if(!r.slice_del()){return false}r.ket=r.cursor;if(!r.eq_s_b("ic")){r.cursor=r.limit-k;break r}r.bra=r.cursor;e:{var m=r.limit-r.cursor;i:{if(!q()){break i}if(!r.slice_del()){return false}break e}r.cursor=r.limit-m;if(!r.slice_from("iqU")){return false}}}break;case 9:if(!r.slice_from("eau")){return false}break;case 10:if(!w()){return false}if(!r.slice_from("al")){return false}break;case 11:r:{var _=r.limit-r.cursor;e:{if(!q()){break e}if(!r.slice_del()){return false}break r}r.cursor=r.limit-_;if(!w()){return false}if(!r.slice_from("eux")){return false}}break;case 12:if(!w()){return false}if(!r.out_grouping_b(o,97,251)){return false}if(!r.slice_del()){return false}break;case 13:if(!g()){return false}if(!r.slice_from("ant")){return false}return false;case 14:if(!g()){return false}if(!r.slice_from("ent")){return false}return false;case 15:var v=r.limit-r.cursor;if(!r.in_grouping_b(o,97,251)){return false}if(!g()){return false}r.cursor=r.limit-v;if(!r.slice_del()){return false}return false}return true}function p(){if(r.cursor0){return false}}r.ket=r.cursor;r:{var i=r.limit-r.cursor;e:{if(!r.eq_s_b("é")){break e}break r}r.cursor=r.limit-i;if(!r.eq_s_b("è")){return false}}r.bra=r.cursor;if(!r.slice_from("e")){return false}return true}this.stem=function(){var e=r.cursor;_();r.cursor=e;v();r.limit_backward=r.cursor;r.cursor=r.limit;var i=r.limit-r.cursor;r:{e:{var s=r.limit-r.cursor;i:{var a=r.limit-r.cursor;s:{var u=r.limit-r.cursor;a:{if(!h()){break a}break s}r.cursor=r.limit-u;a:{if(!p()){break a}break s}r.cursor=r.limit-u;if(!z()){break i}}r.cursor=r.limit-a;var t=r.limit-r.cursor;s:{r.ket=r.cursor;a:{var c=r.limit-r.cursor;u:{if(!r.eq_s_b("Y")){break u}r.bra=r.cursor;if(!r.slice_from("i")){return false}break a}r.cursor=r.limit-c;if(!r.eq_s_b("ç")){r.cursor=r.limit-t;break s}r.bra=r.cursor;if(!r.slice_from("c")){return false}}}break e}r.cursor=r.limit-s;if(!I()){break r}}}r.cursor=r.limit-i;var f=r.limit-r.cursor;U();r.cursor=r.limit-f;var l=r.limit-r.cursor;H();r.cursor=r.limit-l;r.cursor=r.limit_backward;var o=r.cursor;d();r.cursor=o;return true};this["stemWord"]=function(e){r.setCurrent(e);this.stem();return r.getCurrent()}}; \ No newline at end of file diff --git a/sphinx/search/minified-js/german-stemmer.js b/sphinx/search/minified-js/german-stemmer.js new file mode 100644 index 0000000..e2a335d --- /dev/null +++ b/sphinx/search/minified-js/german-stemmer.js @@ -0,0 +1 @@ +GermanStemmer=function(){var r=new BaseStemmer;var e=[["",-1,5],["U",0,2],["Y",0,1],["ä",0,3],["ö",0,4],["ü",0,2]];var i=[["e",-1,2],["em",-1,1],["en",-1,2],["ern",-1,1],["er",-1,1],["s",-1,3],["es",5,2]];var s=[["en",-1,1],["er",-1,1],["st",-1,2],["est",2,1]];var u=[["ig",-1,1],["lich",-1,1]];var a=[["end",-1,1],["ig",-1,2],["ung",-1,1],["lich",-1,3],["isch",-1,2],["ik",-1,2],["heit",-1,3],["keit",-1,4]];var c=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32,8];var t=[117,30,5];var o=[117,30,4];var f=0;var l=0;var n=0;function b(){var e=r.cursor;while(true){var i=r.cursor;r:{e:{var s=r.cursor;i:{r.bra=r.cursor;if(!r.eq_s("ß")){break i}r.ket=r.cursor;if(!r.slice_from("ss")){return false}break e}r.cursor=s;if(r.cursor>=r.limit){break r}r.cursor++}continue}r.cursor=i;break}r.cursor=e;while(true){var u=r.cursor;r:{e:while(true){var a=r.cursor;i:{if(!r.in_grouping(c,97,252)){break i}r.bra=r.cursor;s:{var t=r.cursor;u:{if(!r.eq_s("u")){break u}r.ket=r.cursor;if(!r.in_grouping(c,97,252)){break u}if(!r.slice_from("U")){return false}break s}r.cursor=t;if(!r.eq_s("y")){break i}r.ket=r.cursor;if(!r.in_grouping(c,97,252)){break i}if(!r.slice_from("Y")){return false}}r.cursor=a;break e}r.cursor=a;if(r.cursor>=r.limit){break r}r.cursor++}continue}r.cursor=u;break}return true}function k(){n=r.limit;l=r.limit;var e=r.cursor;{var i=r.cursor+3;if(i>r.limit){return false}r.cursor=i}f=r.cursor;r.cursor=e;r:while(true){e:{if(!r.in_grouping(c,97,252)){break e}break r}if(r.cursor>=r.limit){return false}r.cursor++}r:while(true){e:{if(!r.out_grouping(c,97,252)){break e}break r}if(r.cursor>=r.limit){return false}r.cursor++}n=r.cursor;r:{if(!(n=r.limit){return false}r.cursor++}r:while(true){e:{if(!r.out_grouping(c,97,252)){break e}break r}if(r.cursor>=r.limit){return false}r.cursor++}l=r.cursor;return true}function m(){var i;while(true){var s=r.cursor;r:{r.bra=r.cursor;i=r.find_among(e);if(i==0){break r}r.ket=r.cursor;switch(i){case 1:if(!r.slice_from("y")){return false}break;case 2:if(!r.slice_from("u")){return false}break;case 3:if(!r.slice_from("a")){return false}break;case 4:if(!r.slice_from("o")){return false}break;case 5:if(r.cursor>=r.limit){break r}r.cursor++;break}continue}r.cursor=s;break}return true}function _(){if(!(n<=r.cursor)){return false}return true}function v(){if(!(l<=r.cursor)){return false}return true}function g(){var e;var c=r.limit-r.cursor;r:{r.ket=r.cursor;e=r.find_among_b(i);if(e==0){break r}r.bra=r.cursor;if(!_()){break r}switch(e){case 1:if(!r.slice_del()){return false}break;case 2:if(!r.slice_del()){return false}var f=r.limit-r.cursor;e:{r.ket=r.cursor;if(!r.eq_s_b("s")){r.cursor=r.limit-f;break e}r.bra=r.cursor;if(!r.eq_s_b("nis")){r.cursor=r.limit-f;break e}if(!r.slice_del()){return false}}break;case 3:if(!r.in_grouping_b(t,98,116)){break r}if(!r.slice_del()){return false}break}}r.cursor=r.limit-c;var l=r.limit-r.cursor;r:{r.ket=r.cursor;e=r.find_among_b(s);if(e==0){break r}r.bra=r.cursor;if(!_()){break r}switch(e){case 1:if(!r.slice_del()){return false}break;case 2:if(!r.in_grouping_b(o,98,116)){break r}{var n=r.cursor-3;if(n=r.limit){break e}r.cursor++}i:{var t=r.cursor;a:{if(r.find_among(e)==0){break a}break i}r.cursor=t;if(r.cursor>=r.limit){break e}r.cursor++}b=r.cursor;break r}r.cursor=i;if(!r.out_grouping(m,97,369)){return false}e:while(true){i:{if(!r.in_grouping(m,97,369)){break i}break e}if(r.cursor>=r.limit){return false}r.cursor++}b=r.cursor}return true}function d(){if(!(b<=r.cursor)){return false}return true}function v(){var e;r.ket=r.cursor;e=r.find_among_b(i);if(e==0){return false}r.bra=r.cursor;if(!d()){return false}switch(e){case 1:if(!r.slice_from("a")){return false}break;case 2:if(!r.slice_from("e")){return false}break}return true}function g(){var e=r.limit-r.cursor;if(r.find_among_b(a)==0){return false}r.cursor=r.limit-e;return true}function j(){if(r.cursor<=r.limit_backward){return false}r.cursor--;r.ket=r.cursor;{var e=r.cursor-1;if(e=r.limit){break r}r.cursor++;break}continue}r.cursor=s;break}r.cursor=a;while(true){var o=r.cursor;r:{e:while(true){var u=r.cursor;i:{if(!r.in_grouping(l,97,249)){break i}r.bra=r.cursor;a:{var t=r.cursor;s:{if(!r.eq_s("u")){break s}r.ket=r.cursor;if(!r.in_grouping(l,97,249)){break s}if(!r.slice_from("U")){return false}break a}r.cursor=t;if(!r.eq_s("i")){break i}r.ket=r.cursor;if(!r.in_grouping(l,97,249)){break i}if(!r.slice_from("I")){return false}}r.cursor=u;break e}r.cursor=u;if(r.cursor>=r.limit){break r}r.cursor++}continue}r.cursor=o;break}return true}function v(){k=r.limit;m=r.limit;b=r.limit;var e=r.cursor;r:{e:{var i=r.cursor;i:{if(!r.in_grouping(l,97,249)){break i}a:{var a=r.cursor;s:{if(!r.out_grouping(l,97,249)){break s}o:while(true){u:{if(!r.in_grouping(l,97,249)){break u}break o}if(r.cursor>=r.limit){break s}r.cursor++}break a}r.cursor=a;if(!r.in_grouping(l,97,249)){break i}s:while(true){o:{if(!r.out_grouping(l,97,249)){break o}break s}if(r.cursor>=r.limit){break i}r.cursor++}}break e}r.cursor=i;if(!r.out_grouping(l,97,249)){break r}i:{var s=r.cursor;a:{if(!r.out_grouping(l,97,249)){break a}s:while(true){o:{if(!r.in_grouping(l,97,249)){break o}break s}if(r.cursor>=r.limit){break a}r.cursor++}break i}r.cursor=s;if(!r.in_grouping(l,97,249)){break r}if(r.cursor>=r.limit){break r}r.cursor++}}k=r.cursor}r.cursor=e;var o=r.cursor;r:{e:while(true){i:{if(!r.in_grouping(l,97,249)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.out_grouping(l,97,249)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}m=r.cursor;e:while(true){i:{if(!r.in_grouping(l,97,249)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.out_grouping(l,97,249)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}b=r.cursor}r.cursor=o;return true}function g(){var e;while(true){var a=r.cursor;r:{r.bra=r.cursor;e=r.find_among(i);if(e==0){break r}r.ket=r.cursor;switch(e){case 1:if(!r.slice_from("i")){return false}break;case 2:if(!r.slice_from("u")){return false}break;case 3:if(r.cursor>=r.limit){break r}r.cursor++;break}continue}r.cursor=a;break}return true}function d(){if(!(k<=r.cursor)){return false}return true}function w(){if(!(m<=r.cursor)){return false}return true}function h(){if(!(b<=r.cursor)){return false}return true}function p(){var e;r.ket=r.cursor;if(r.find_among_b(a)==0){return false}r.bra=r.cursor;e=r.find_among_b(s);if(e==0){return false}if(!d()){return false}switch(e){case 1:if(!r.slice_del()){return false}break;case 2:if(!r.slice_from("e")){return false}break}return true}function q(){var e;r.ket=r.cursor;e=r.find_among_b(t);if(e==0){return false}r.bra=r.cursor;switch(e){case 1:if(!h()){return false}if(!r.slice_del()){return false}break;case 2:if(!h()){return false}if(!r.slice_del()){return false}var i=r.limit-r.cursor;r:{r.ket=r.cursor;if(!r.eq_s_b("ic")){r.cursor=r.limit-i;break r}r.bra=r.cursor;if(!h()){r.cursor=r.limit-i;break r}if(!r.slice_del()){return false}}break;case 3:if(!h()){return false}if(!r.slice_from("log")){return false}break;case 4:if(!h()){return false}if(!r.slice_from("u")){return false}break;case 5:if(!h()){return false}if(!r.slice_from("ente")){return false}break;case 6:if(!d()){return false}if(!r.slice_del()){return false}break;case 7:if(!w()){return false}if(!r.slice_del()){return false}var a=r.limit-r.cursor;r:{r.ket=r.cursor;e=r.find_among_b(o);if(e==0){r.cursor=r.limit-a;break r}r.bra=r.cursor;if(!h()){r.cursor=r.limit-a;break r}if(!r.slice_del()){return false}switch(e){case 1:r.ket=r.cursor;if(!r.eq_s_b("at")){r.cursor=r.limit-a;break r}r.bra=r.cursor;if(!h()){r.cursor=r.limit-a;break r}if(!r.slice_del()){return false}break}}break;case 8:if(!h()){return false}if(!r.slice_del()){return false}var s=r.limit-r.cursor;r:{r.ket=r.cursor;if(r.find_among_b(u)==0){r.cursor=r.limit-s;break r}r.bra=r.cursor;if(!h()){r.cursor=r.limit-s;break r}if(!r.slice_del()){return false}}break;case 9:if(!h()){return false}if(!r.slice_del()){return false}var c=r.limit-r.cursor;r:{r.ket=r.cursor;if(!r.eq_s_b("at")){r.cursor=r.limit-c;break r}r.bra=r.cursor;if(!h()){r.cursor=r.limit-c;break r}if(!r.slice_del()){return false}r.ket=r.cursor;if(!r.eq_s_b("ic")){r.cursor=r.limit-c;break r}r.bra=r.cursor;if(!h()){r.cursor=r.limit-c;break r}if(!r.slice_del()){return false}}break}return true}function z(){if(r.cursorr.limit){return false}r.cursor=i}u=r.cursor;r.cursor=e;r:while(true){var t=r.cursor;e:{if(!r.in_grouping(a,97,248)){break e}r.cursor=t;break r}r.cursor=t;if(r.cursor>=r.limit){return false}r.cursor++}r:while(true){e:{if(!r.out_grouping(a,97,248)){break e}break r}if(r.cursor>=r.limit){return false}r.cursor++}c=r.cursor;r:{if(!(c=r.limit){break e}r.cursor++}if(!r.slice_from("Y")){return false}l=true;continue}r.cursor=s;break}}r.cursor=i;n=r.limit;o=r.limit;var u=r.cursor;r:{e:while(true){i:{if(!r.in_grouping(c,97,121)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.out_grouping(c,97,121)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}n=r.cursor;e:while(true){i:{if(!r.in_grouping(c,97,121)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.out_grouping(c,97,121)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}o=r.cursor}r.cursor=u;r.limit_backward=r.cursor;r.cursor=r.limit;var t=r.limit-r.cursor;k();r.cursor=r.limit-t;var f=r.limit-r.cursor;v();r.cursor=r.limit-f;var b=r.limit-r.cursor;g();r.cursor=r.limit-b;var m=r.limit-r.cursor;d();r.cursor=r.limit-m;var _=r.limit-r.cursor;w();r.cursor=r.limit-_;var z=r.limit-r.cursor;h();r.cursor=r.limit-z;var y=r.limit-r.cursor;p();r.cursor=r.limit-y;var Y=r.limit-r.cursor;q();r.cursor=r.limit-Y;r.cursor=r.limit_backward;var C=r.cursor;r:{if(!l){break r}while(true){var S=r.cursor;e:{i:while(true){var B=r.cursor;s:{r.bra=r.cursor;if(!r.eq_s("Y")){break s}r.ket=r.cursor;r.cursor=B;break i}r.cursor=B;if(r.cursor>=r.limit){break e}r.cursor++}if(!r.slice_from("y")){return false}continue}r.cursor=S;break}}r.cursor=C;return true};this["stemWord"]=function(e){r.setCurrent(e);this.stem();return r.getCurrent()}}; \ No newline at end of file diff --git a/sphinx/search/minified-js/portuguese-stemmer.js b/sphinx/search/minified-js/portuguese-stemmer.js new file mode 100644 index 0000000..022d860 --- /dev/null +++ b/sphinx/search/minified-js/portuguese-stemmer.js @@ -0,0 +1 @@ +PortugueseStemmer=function(){var r=new BaseStemmer;var e=[["",-1,3],["ã",0,1],["õ",0,2]];var i=[["",-1,3],["a~",0,1],["o~",0,2]];var s=[["ic",-1,-1],["ad",-1,-1],["os",-1,-1],["iv",-1,1]];var a=[["ante",-1,1],["avel",-1,1],["ível",-1,1]];var u=[["ic",-1,1],["abil",-1,1],["iv",-1,1]];var o=[["ica",-1,1],["ância",-1,1],["ência",-1,4],["logia",-1,2],["ira",-1,9],["adora",-1,1],["osa",-1,1],["ista",-1,1],["iva",-1,8],["eza",-1,1],["idade",-1,7],["ante",-1,1],["mente",-1,6],["amente",12,5],["ável",-1,1],["ível",-1,1],["ico",-1,1],["ismo",-1,1],["oso",-1,1],["amento",-1,1],["imento",-1,1],["ivo",-1,8],["aça~o",-1,1],["uça~o",-1,3],["ador",-1,1],["icas",-1,1],["ências",-1,4],["logias",-1,2],["iras",-1,9],["adoras",-1,1],["osas",-1,1],["istas",-1,1],["ivas",-1,8],["ezas",-1,1],["idades",-1,7],["adores",-1,1],["antes",-1,1],["aço~es",-1,1],["uço~es",-1,3],["icos",-1,1],["ismos",-1,1],["osos",-1,1],["amentos",-1,1],["imentos",-1,1],["ivos",-1,8]];var t=[["ada",-1,1],["ida",-1,1],["ia",-1,1],["aria",2,1],["eria",2,1],["iria",2,1],["ara",-1,1],["era",-1,1],["ira",-1,1],["ava",-1,1],["asse",-1,1],["esse",-1,1],["isse",-1,1],["aste",-1,1],["este",-1,1],["iste",-1,1],["ei",-1,1],["arei",16,1],["erei",16,1],["irei",16,1],["am",-1,1],["iam",20,1],["ariam",21,1],["eriam",21,1],["iriam",21,1],["aram",20,1],["eram",20,1],["iram",20,1],["avam",20,1],["em",-1,1],["arem",29,1],["erem",29,1],["irem",29,1],["assem",29,1],["essem",29,1],["issem",29,1],["ado",-1,1],["ido",-1,1],["ando",-1,1],["endo",-1,1],["indo",-1,1],["ara~o",-1,1],["era~o",-1,1],["ira~o",-1,1],["ar",-1,1],["er",-1,1],["ir",-1,1],["as",-1,1],["adas",47,1],["idas",47,1],["ias",47,1],["arias",50,1],["erias",50,1],["irias",50,1],["aras",47,1],["eras",47,1],["iras",47,1],["avas",47,1],["es",-1,1],["ardes",58,1],["erdes",58,1],["irdes",58,1],["ares",58,1],["eres",58,1],["ires",58,1],["asses",58,1],["esses",58,1],["isses",58,1],["astes",58,1],["estes",58,1],["istes",58,1],["is",-1,1],["ais",71,1],["eis",71,1],["areis",73,1],["ereis",73,1],["ireis",73,1],["áreis",73,1],["éreis",73,1],["íreis",73,1],["ásseis",73,1],["ésseis",73,1],["ísseis",73,1],["áveis",73,1],["íeis",73,1],["aríeis",84,1],["eríeis",84,1],["iríeis",84,1],["ados",-1,1],["idos",-1,1],["amos",-1,1],["áramos",90,1],["éramos",90,1],["íramos",90,1],["ávamos",90,1],["íamos",90,1],["aríamos",95,1],["eríamos",95,1],["iríamos",95,1],["emos",-1,1],["aremos",99,1],["eremos",99,1],["iremos",99,1],["ássemos",99,1],["êssemos",99,1],["íssemos",99,1],["imos",-1,1],["armos",-1,1],["ermos",-1,1],["irmos",-1,1],["ámos",-1,1],["arás",-1,1],["erás",-1,1],["irás",-1,1],["eu",-1,1],["iu",-1,1],["ou",-1,1],["ará",-1,1],["erá",-1,1],["irá",-1,1]];var c=[["a",-1,1],["i",-1,1],["o",-1,1],["os",-1,1],["á",-1,1],["í",-1,1],["ó",-1,1]];var f=[["e",-1,1],["ç",-1,2],["é",-1,1],["ê",-1,1]];var l=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,3,19,12,2];var n=0;var m=0;var b=0;function k(){var i;while(true){var s=r.cursor;r:{r.bra=r.cursor;i=r.find_among(e);if(i==0){break r}r.ket=r.cursor;switch(i){case 1:if(!r.slice_from("a~")){return false}break;case 2:if(!r.slice_from("o~")){return false}break;case 3:if(r.cursor>=r.limit){break r}r.cursor++;break}continue}r.cursor=s;break}return true}function _(){b=r.limit;m=r.limit;n=r.limit;var e=r.cursor;r:{e:{var i=r.cursor;i:{if(!r.in_grouping(l,97,250)){break i}s:{var s=r.cursor;a:{if(!r.out_grouping(l,97,250)){break a}u:while(true){o:{if(!r.in_grouping(l,97,250)){break o}break u}if(r.cursor>=r.limit){break a}r.cursor++}break s}r.cursor=s;if(!r.in_grouping(l,97,250)){break i}a:while(true){u:{if(!r.out_grouping(l,97,250)){break u}break a}if(r.cursor>=r.limit){break i}r.cursor++}}break e}r.cursor=i;if(!r.out_grouping(l,97,250)){break r}i:{var a=r.cursor;s:{if(!r.out_grouping(l,97,250)){break s}a:while(true){u:{if(!r.in_grouping(l,97,250)){break u}break a}if(r.cursor>=r.limit){break s}r.cursor++}break i}r.cursor=a;if(!r.in_grouping(l,97,250)){break r}if(r.cursor>=r.limit){break r}r.cursor++}}b=r.cursor}r.cursor=e;var u=r.cursor;r:{e:while(true){i:{if(!r.in_grouping(l,97,250)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.out_grouping(l,97,250)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}m=r.cursor;e:while(true){i:{if(!r.in_grouping(l,97,250)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.out_grouping(l,97,250)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}n=r.cursor}r.cursor=u;return true}function v(){var e;while(true){var s=r.cursor;r:{r.bra=r.cursor;e=r.find_among(i);if(e==0){break r}r.ket=r.cursor;switch(e){case 1:if(!r.slice_from("ã")){return false}break;case 2:if(!r.slice_from("õ")){return false}break;case 3:if(r.cursor>=r.limit){break r}r.cursor++;break}continue}r.cursor=s;break}return true}function d(){if(!(b<=r.cursor)){return false}return true}function g(){if(!(m<=r.cursor)){return false}return true}function w(){if(!(n<=r.cursor)){return false}return true}function h(){var e;r.ket=r.cursor;e=r.find_among_b(o);if(e==0){return false}r.bra=r.cursor;switch(e){case 1:if(!w()){return false}if(!r.slice_del()){return false}break;case 2:if(!w()){return false}if(!r.slice_from("log")){return false}break;case 3:if(!w()){return false}if(!r.slice_from("u")){return false}break;case 4:if(!w()){return false}if(!r.slice_from("ente")){return false}break;case 5:if(!g()){return false}if(!r.slice_del()){return false}var i=r.limit-r.cursor;r:{r.ket=r.cursor;e=r.find_among_b(s);if(e==0){r.cursor=r.limit-i;break r}r.bra=r.cursor;if(!w()){r.cursor=r.limit-i;break r}if(!r.slice_del()){return false}switch(e){case 1:r.ket=r.cursor;if(!r.eq_s_b("at")){r.cursor=r.limit-i;break r}r.bra=r.cursor;if(!w()){r.cursor=r.limit-i;break r}if(!r.slice_del()){return false}break}}break;case 6:if(!w()){return false}if(!r.slice_del()){return false}var t=r.limit-r.cursor;r:{r.ket=r.cursor;if(r.find_among_b(a)==0){r.cursor=r.limit-t;break r}r.bra=r.cursor;if(!w()){r.cursor=r.limit-t;break r}if(!r.slice_del()){return false}}break;case 7:if(!w()){return false}if(!r.slice_del()){return false}var c=r.limit-r.cursor;r:{r.ket=r.cursor;if(r.find_among_b(u)==0){r.cursor=r.limit-c;break r}r.bra=r.cursor;if(!w()){r.cursor=r.limit-c;break r}if(!r.slice_del()){return false}}break;case 8:if(!w()){return false}if(!r.slice_del()){return false}var f=r.limit-r.cursor;r:{r.ket=r.cursor;if(!r.eq_s_b("at")){r.cursor=r.limit-f;break r}r.bra=r.cursor;if(!w()){r.cursor=r.limit-f;break r}if(!r.slice_del()){return false}}break;case 9:if(!d()){return false}if(!r.eq_s_b("e")){return false}if(!r.slice_from("ir")){return false}break}return true}function p(){if(r.cursor=r.limit){break r}r.cursor++}continue}r.cursor=i;break}return true}function m(){n=r.limit;l=r.limit;f=r.limit;var i=r.cursor;r:{i:{var e=r.cursor;e:{if(!r.in_grouping(c,97,259)){break e}a:{var a=r.cursor;t:{if(!r.out_grouping(c,97,259)){break t}s:while(true){u:{if(!r.in_grouping(c,97,259)){break u}break s}if(r.cursor>=r.limit){break t}r.cursor++}break a}r.cursor=a;if(!r.in_grouping(c,97,259)){break e}t:while(true){s:{if(!r.out_grouping(c,97,259)){break s}break t}if(r.cursor>=r.limit){break e}r.cursor++}}break i}r.cursor=e;if(!r.out_grouping(c,97,259)){break r}e:{var t=r.cursor;a:{if(!r.out_grouping(c,97,259)){break a}t:while(true){s:{if(!r.in_grouping(c,97,259)){break s}break t}if(r.cursor>=r.limit){break a}r.cursor++}break e}r.cursor=t;if(!r.in_grouping(c,97,259)){break r}if(r.cursor>=r.limit){break r}r.cursor++}}n=r.cursor}r.cursor=i;var s=r.cursor;r:{i:while(true){e:{if(!r.in_grouping(c,97,259)){break e}break i}if(r.cursor>=r.limit){break r}r.cursor++}i:while(true){e:{if(!r.out_grouping(c,97,259)){break e}break i}if(r.cursor>=r.limit){break r}r.cursor++}l=r.cursor;i:while(true){e:{if(!r.in_grouping(c,97,259)){break e}break i}if(r.cursor>=r.limit){break r}r.cursor++}i:while(true){e:{if(!r.out_grouping(c,97,259)){break e}break i}if(r.cursor>=r.limit){break r}r.cursor++}f=r.cursor}r.cursor=s;return true}function k(){var e;while(true){var a=r.cursor;r:{r.bra=r.cursor;e=r.find_among(i);if(e==0){break r}r.ket=r.cursor;switch(e){case 1:if(!r.slice_from("i")){return false}break;case 2:if(!r.slice_from("u")){return false}break;case 3:if(r.cursor>=r.limit){break r}r.cursor++;break}continue}r.cursor=a;break}return true}function _(){if(!(n<=r.cursor)){return false}return true}function v(){if(!(l<=r.cursor)){return false}return true}function g(){if(!(f<=r.cursor)){return false}return true}function w(){var i;r.ket=r.cursor;i=r.find_among_b(e);if(i==0){return false}r.bra=r.cursor;if(!v()){return false}switch(i){case 1:if(!r.slice_del()){return false}break;case 2:if(!r.slice_from("a")){return false}break;case 3:if(!r.slice_from("e")){return false}break;case 4:if(!r.slice_from("i")){return false}break;case 5:{var a=r.limit-r.cursor;r:{if(!r.eq_s_b("ab")){break r}return false}r.cursor=r.limit-a}if(!r.slice_from("i")){return false}break;case 6:if(!r.slice_from("at")){return false}break;case 7:if(!r.slice_from("aţi")){return false}break}return true}function d(){var i;var e=r.limit-r.cursor;r.ket=r.cursor;i=r.find_among_b(a);if(i==0){return false}r.bra=r.cursor;if(!v()){return false}switch(i){case 1:if(!r.slice_from("abil")){return false}break;case 2:if(!r.slice_from("ibil")){return false}break;case 3:if(!r.slice_from("iv")){return false}break;case 4:if(!r.slice_from("ic")){return false}break;case 5:if(!r.slice_from("at")){return false}break;case 6:if(!r.slice_from("it")){return false}break}o=true;r.cursor=r.limit-e;return true}function h(){var i;o=false;while(true){var e=r.limit-r.cursor;r:{if(!d()){break r}continue}r.cursor=r.limit-e;break}r.ket=r.cursor;i=r.find_among_b(t);if(i==0){return false}r.bra=r.cursor;if(!g()){return false}switch(i){case 1:if(!r.slice_del()){return false}break;case 2:if(!r.eq_s_b("ţ")){return false}r.bra=r.cursor;if(!r.slice_from("t")){return false}break;case 3:if(!r.slice_from("ist")){return false}break}o=true;return true}function p(){var i;if(r.cursor=r.limit){break r}r.cursor++}n=r.cursor;e:while(true){i:{if(!r.out_grouping(l,1072,1103)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.in_grouping(l,1072,1103)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.out_grouping(l,1072,1103)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}o=r.cursor}r.cursor=e;return true}function _(){if(!(o<=r.cursor)){return false}return true}function k(){var i;r.ket=r.cursor;i=r.find_among_b(e);if(i==0){return false}r.bra=r.cursor;switch(i){case 1:r:{var u=r.limit-r.cursor;e:{if(!r.eq_s_b("а")){break e}break r}r.cursor=r.limit-u;if(!r.eq_s_b("я")){return false}}if(!r.slice_del()){return false}break;case 2:if(!r.slice_del()){return false}break}return true}function m(){r.ket=r.cursor;if(r.find_among_b(i)==0){return false}r.bra=r.cursor;if(!r.slice_del()){return false}return true}function v(){var e;if(!m()){return false}var i=r.limit-r.cursor;r:{r.ket=r.cursor;e=r.find_among_b(u);if(e==0){r.cursor=r.limit-i;break r}r.bra=r.cursor;switch(e){case 1:e:{var s=r.limit-r.cursor;i:{if(!r.eq_s_b("а")){break i}break e}r.cursor=r.limit-s;if(!r.eq_s_b("я")){r.cursor=r.limit-i;break r}}if(!r.slice_del()){return false}break;case 2:if(!r.slice_del()){return false}break}}return true}function d(){r.ket=r.cursor;if(r.find_among_b(s)==0){return false}r.bra=r.cursor;if(!r.slice_del()){return false}return true}function g(){var e;r.ket=r.cursor;e=r.find_among_b(a);if(e==0){return false}r.bra=r.cursor;switch(e){case 1:r:{var i=r.limit-r.cursor;e:{if(!r.eq_s_b("а")){break e}break r}r.cursor=r.limit-i;if(!r.eq_s_b("я")){return false}}if(!r.slice_del()){return false}break;case 2:if(!r.slice_del()){return false}break}return true}function w(){r.ket=r.cursor;if(r.find_among_b(t)==0){return false}r.bra=r.cursor;if(!r.slice_del()){return false}return true}function h(){r.ket=r.cursor;if(r.find_among_b(c)==0){return false}r.bra=r.cursor;if(!_()){return false}if(!r.slice_del()){return false}return true}function q(){var e;r.ket=r.cursor;e=r.find_among_b(f);if(e==0){return false}r.bra=r.cursor;switch(e){case 1:if(!r.slice_del()){return false}r.ket=r.cursor;if(!r.eq_s_b("н")){return false}r.bra=r.cursor;if(!r.eq_s_b("н")){return false}if(!r.slice_del()){return false}break;case 2:if(!r.eq_s_b("н")){return false}if(!r.slice_del()){return false}break;case 3:if(!r.slice_del()){return false}break}return true}this.stem=function(){var e=r.cursor;r:{while(true){var i=r.cursor;e:{i:while(true){var u=r.cursor;u:{r.bra=r.cursor;if(!r.eq_s("ё")){break u}r.ket=r.cursor;r.cursor=u;break i}r.cursor=u;if(r.cursor>=r.limit){break e}r.cursor++}if(!r.slice_from("е")){return false}continue}r.cursor=i;break}}r.cursor=e;b();r.limit_backward=r.cursor;r.cursor=r.limit;if(r.cursor=r.limit){break s}r.cursor++}break a}r.cursor=a;if(!r.in_grouping(n,97,252)){break i}s:while(true){u:{if(!r.out_grouping(n,97,252)){break u}break s}if(r.cursor>=r.limit){break i}r.cursor++}}break e}r.cursor=i;if(!r.out_grouping(n,97,252)){break r}i:{var s=r.cursor;a:{if(!r.out_grouping(n,97,252)){break a}s:while(true){u:{if(!r.in_grouping(n,97,252)){break u}break s}if(r.cursor>=r.limit){break a}r.cursor++}break i}r.cursor=s;if(!r.in_grouping(n,97,252)){break r}if(r.cursor>=r.limit){break r}r.cursor++}}k=r.cursor}r.cursor=e;var u=r.cursor;r:{e:while(true){i:{if(!r.in_grouping(n,97,252)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.out_grouping(n,97,252)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}m=r.cursor;e:while(true){i:{if(!r.in_grouping(n,97,252)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.out_grouping(n,97,252)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}b=r.cursor}r.cursor=u;return true}function d(){var i;while(true){var a=r.cursor;r:{r.bra=r.cursor;i=r.find_among(e);if(i==0){break r}r.ket=r.cursor;switch(i){case 1:if(!r.slice_from("a")){return false}break;case 2:if(!r.slice_from("e")){return false}break;case 3:if(!r.slice_from("i")){return false}break;case 4:if(!r.slice_from("o")){return false}break;case 5:if(!r.slice_from("u")){return false}break;case 6:if(r.cursor>=r.limit){break r}r.cursor++;break}continue}r.cursor=a;break}return true}function v(){if(!(k<=r.cursor)){return false}return true}function g(){if(!(m<=r.cursor)){return false}return true}function w(){if(!(b<=r.cursor)){return false}return true}function h(){var e;r.ket=r.cursor;if(r.find_among_b(i)==0){return false}r.bra=r.cursor;e=r.find_among_b(a);if(e==0){return false}if(!v()){return false}switch(e){case 1:r.bra=r.cursor;if(!r.slice_from("iendo")){return false}break;case 2:r.bra=r.cursor;if(!r.slice_from("ando")){return false}break;case 3:r.bra=r.cursor;if(!r.slice_from("ar")){return false}break;case 4:r.bra=r.cursor;if(!r.slice_from("er")){return false}break;case 5:r.bra=r.cursor;if(!r.slice_from("ir")){return false}break;case 6:if(!r.slice_del()){return false}break;case 7:if(!r.eq_s_b("u")){return false}if(!r.slice_del()){return false}break}return true}function p(){var e;r.ket=r.cursor;e=r.find_among_b(t);if(e==0){return false}r.bra=r.cursor;switch(e){case 1:if(!w()){return false}if(!r.slice_del()){return false}break;case 2:if(!w()){return false}if(!r.slice_del()){return false}var i=r.limit-r.cursor;r:{r.ket=r.cursor;if(!r.eq_s_b("ic")){r.cursor=r.limit-i;break r}r.bra=r.cursor;if(!w()){r.cursor=r.limit-i;break r}if(!r.slice_del()){return false}}break;case 3:if(!w()){return false}if(!r.slice_from("log")){return false}break;case 4:if(!w()){return false}if(!r.slice_from("u")){return false}break;case 5:if(!w()){return false}if(!r.slice_from("ente")){return false}break;case 6:if(!g()){return false}if(!r.slice_del()){return false}var a=r.limit-r.cursor;r:{r.ket=r.cursor;e=r.find_among_b(s);if(e==0){r.cursor=r.limit-a;break r}r.bra=r.cursor;if(!w()){r.cursor=r.limit-a;break r}if(!r.slice_del()){return false}switch(e){case 1:r.ket=r.cursor;if(!r.eq_s_b("at")){r.cursor=r.limit-a;break r}r.bra=r.cursor;if(!w()){r.cursor=r.limit-a;break r}if(!r.slice_del()){return false}break}}break;case 7:if(!w()){return false}if(!r.slice_del()){return false}var c=r.limit-r.cursor;r:{r.ket=r.cursor;if(r.find_among_b(u)==0){r.cursor=r.limit-c;break r}r.bra=r.cursor;if(!w()){r.cursor=r.limit-c;break r}if(!r.slice_del()){return false}}break;case 8:if(!w()){return false}if(!r.slice_del()){return false}var l=r.limit-r.cursor;r:{r.ket=r.cursor;if(r.find_among_b(o)==0){r.cursor=r.limit-l;break r}r.bra=r.cursor;if(!w()){r.cursor=r.limit-l;break r}if(!r.slice_del()){return false}}break;case 9:if(!w()){return false}if(!r.slice_del()){return false}var f=r.limit-r.cursor;r:{r.ket=r.cursor;if(!r.eq_s_b("at")){r.cursor=r.limit-f;break r}r.bra=r.cursor;if(!w()){r.cursor=r.limit-f;break r}if(!r.slice_del()){return false}}break}return true}function y(){if(r.cursorr.limit){return false}r.cursor=a}u=r.cursor;r.cursor=e;r:while(true){var i=r.cursor;e:{if(!r.in_grouping(t,97,246)){break e}r.cursor=i;break r}r.cursor=i;if(r.cursor>=r.limit){return false}r.cursor++}r:while(true){e:{if(!r.out_grouping(t,97,246)){break e}break r}if(r.cursor>=r.limit){return false}r.cursor++}n=r.cursor;r:{if(!(nr.limit_backward){return false}return true}function gr(){var i=r.cursor;{var e=2;while(true){var u=r.cursor;r:{i:while(true){e:{if(!r.in_grouping(C,97,305)){break e}break i}if(r.cursor>=r.limit){break r}r.cursor++}e--;continue}r.cursor=u;break}if(e>0){return false}}r.cursor=i;return true}function wr(){r.limit_backward=r.cursor;r.cursor=r.limit;{var i=r.limit-r.cursor;r:{if(!dr()){break r}return false}r.cursor=r.limit-i}var e=r.limit-r.cursor;vr();r.cursor=r.limit-e;var u=r.limit-r.cursor;_r();r.cursor=r.limit-u;r.cursor=r.limit_backward;return true}this.stem=function(){if(!gr()){return false}r.limit_backward=r.cursor;r.cursor=r.limit;var i=r.limit-r.cursor;br();r.cursor=r.limit-i;if(!D){return false}var e=r.limit-r.cursor;kr();r.cursor=r.limit-e;r.cursor=r.limit_backward;if(!wr()){return false}return true};this["stemWord"]=function(i){r.setCurrent(i);this.stem();return r.getCurrent()}}; \ No newline at end of file diff --git a/sphinx/search/nl.py b/sphinx/search/nl.py new file mode 100644 index 0000000..a610b12 --- /dev/null +++ b/sphinx/search/nl.py @@ -0,0 +1,127 @@ +"""Dutch search language: includes the JS porter stemmer.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + +dutch_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/dutch/stop.txt +de | the +en | and +van | of, from +ik | I, the ego +te | (1) chez, at etc, (2) to, (3) too +dat | that, which +die | that, those, who, which +in | in, inside +een | a, an, one +hij | he +het | the, it +niet | not, nothing, naught +zijn | (1) to be, being, (2) his, one's, its +is | is +was | (1) was, past tense of all persons sing. of 'zijn' (to be) (2) wax, (3) the washing, (4) rise of river +op | on, upon, at, in, up, used up +aan | on, upon, to (as dative) +met | with, by +als | like, such as, when +voor | (1) before, in front of, (2) furrow +had | had, past tense all persons sing. of 'hebben' (have) +er | there +maar | but, only +om | round, about, for etc +hem | him +dan | then +zou | should/would, past tense all persons sing. of 'zullen' +of | or, whether, if +wat | what, something, anything +mijn | possessive and noun 'mine' +men | people, 'one' +dit | this +zo | so, thus, in this way +door | through by +over | over, across +ze | she, her, they, them +zich | oneself +bij | (1) a bee, (2) by, near, at +ook | also, too +tot | till, until +je | you +mij | me +uit | out of, from +der | Old Dutch form of 'van der' still found in surnames +daar | (1) there, (2) because +haar | (1) her, their, them, (2) hair +naar | (1) unpleasant, unwell etc, (2) towards, (3) as +heb | present first person sing. of 'to have' +hoe | how, why +heeft | present third person sing. of 'to have' +hebben | 'to have' and various parts thereof +deze | this +u | you +want | (1) for, (2) mitten, (3) rigging +nog | yet, still +zal | 'shall', first and third person sing. of verb 'zullen' (will) +me | me +zij | she, they +nu | now +ge | 'thou', still used in Belgium and south Netherlands +geen | none +omdat | because +iets | something, somewhat +worden | to become, grow, get +toch | yet, still +al | all, every, each +waren | (1) 'were' (2) to wander, (3) wares, (3) +veel | much, many +meer | (1) more, (2) lake +doen | to do, to make +toen | then, when +moet | noun 'spot/mote' and present form of 'to must' +ben | (1) am, (2) 'are' in interrogative second person singular of 'to be' +zonder | without +kan | noun 'can' and present form of 'to be able' +hun | their, them +dus | so, consequently +alles | all, everything, anything +onder | under, beneath +ja | yes, of course +eens | once, one day +hier | here +wie | who +werd | imperfect third person sing. of 'become' +altijd | always +doch | yet, but etc +wordt | present third person sing. of 'become' +wezen | (1) to be, (2) 'been' as in 'been fishing', (3) orphans +kunnen | to be able +ons | us/our +zelf | self +tegen | against, towards, at +na | after, near +reeds | already +wil | (1) present tense of 'want', (2) 'will', noun, (3) fender +kon | could; past tense of 'to be able' +niets | nothing +uw | your +iemand | somebody +geweest | been; past participle of 'be' +andere | other +''') + + +class SearchDutch(SearchLanguage): + lang = 'nl' + language_name = 'Dutch' + js_stemmer_rawcode = 'dutch-stemmer.js' + stopwords = dutch_stopwords + + def init(self, options: dict) -> None: + self.stemmer = snowballstemmer.stemmer('dutch') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/search/no.py b/sphinx/search/no.py new file mode 100644 index 0000000..a69380b --- /dev/null +++ b/sphinx/search/no.py @@ -0,0 +1,202 @@ +"""Norwegian search language: includes the JS Norwegian stemmer.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + +norwegian_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/norwegian/stop.txt +og | and +i | in +jeg | I +det | it/this/that +at | to (w. inf.) +en | a/an +et | a/an +den | it/this/that +til | to +er | is/am/are +som | who/that +på | on +de | they / you(formal) +med | with +han | he +av | of +ikke | not +ikkje | not * +der | there +så | so +var | was/were +meg | me +seg | you +men | but +ett | one +har | have +om | about +vi | we +min | my +mitt | my +ha | have +hadde | had +hun | she +nå | now +over | over +da | when/as +ved | by/know +fra | from +du | you +ut | out +sin | your +dem | them +oss | us +opp | up +man | you/one +kan | can +hans | his +hvor | where +eller | or +hva | what +skal | shall/must +selv | self (reflective) +sjøl | self (reflective) +her | here +alle | all +vil | will +bli | become +ble | became +blei | became * +blitt | have become +kunne | could +inn | in +når | when +være | be +kom | come +noen | some +noe | some +ville | would +dere | you +som | who/which/that +deres | their/theirs +kun | only/just +ja | yes +etter | after +ned | down +skulle | should +denne | this +for | for/because +deg | you +si | hers/his +sine | hers/his +sitt | hers/his +mot | against +å | to +meget | much +hvorfor | why +dette | this +disse | these/those +uten | without +hvordan | how +ingen | none +din | your +ditt | your +blir | become +samme | same +hvilken | which +hvilke | which (plural) +sånn | such a +inni | inside/within +mellom | between +vår | our +hver | each +hvem | who +vors | us/ours +hvis | whose +både | both +bare | only/just +enn | than +fordi | as/because +før | before +mange | many +også | also +slik | just +vært | been +være | to be +båe | both * +begge | both +siden | since +dykk | your * +dykkar | yours * +dei | they * +deira | them * +deires | theirs * +deim | them * +di | your (fem.) * +då | as/when * +eg | I * +ein | a/an * +eit | a/an * +eitt | a/an * +elles | or * +honom | he * +hjå | at * +ho | she * +hoe | she * +henne | her +hennar | her/hers +hennes | hers +hoss | how * +hossen | how * +ikkje | not * +ingi | noone * +inkje | noone * +korleis | how * +korso | how * +kva | what/which * +kvar | where * +kvarhelst | where * +kven | who/whom * +kvi | why * +kvifor | why * +me | we * +medan | while * +mi | my * +mine | my * +mykje | much * +no | now * +nokon | some (masc./neut.) * +noka | some (fem.) * +nokor | some * +noko | some * +nokre | some * +si | his/hers * +sia | since * +sidan | since * +so | so * +somt | some * +somme | some * +um | about* +upp | up * +vere | be * +vore | was * +verte | become * +vort | become * +varte | became * +vart | became * +''') + + +class SearchNorwegian(SearchLanguage): + lang = 'no' + language_name = 'Norwegian' + js_stemmer_rawcode = 'norwegian-stemmer.js' + stopwords = norwegian_stopwords + + def init(self, options: dict) -> None: + self.stemmer = snowballstemmer.stemmer('norwegian') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/search/non-minified-js/base-stemmer.js b/sphinx/search/non-minified-js/base-stemmer.js new file mode 100644 index 0000000..ca6cca1 --- /dev/null +++ b/sphinx/search/non-minified-js/base-stemmer.js @@ -0,0 +1,294 @@ +/**@constructor*/ +BaseStemmer = function() { + this.setCurrent = function(value) { + this.current = value; + this.cursor = 0; + this.limit = this.current.length; + this.limit_backward = 0; + this.bra = this.cursor; + this.ket = this.limit; + }; + + this.getCurrent = function() { + return this.current; + }; + + this.copy_from = function(other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; + }; + + this.in_grouping = function(s, min, max) { + if (this.cursor >= this.limit) return false; + var ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) return false; + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false; + this.cursor++; + return true; + }; + + this.in_grouping_b = function(s, min, max) { + if (this.cursor <= this.limit_backward) return false; + var ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) return false; + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false; + this.cursor--; + return true; + }; + + this.out_grouping = function(s, min, max) { + if (this.cursor >= this.limit) return false; + var ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + this.cursor++; + return true; + } + ch -= min; + if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) == 0) { + this.cursor++; + return true; + } + return false; + }; + + this.out_grouping_b = function(s, min, max) { + if (this.cursor <= this.limit_backward) return false; + var ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + this.cursor--; + return true; + } + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) { + this.cursor--; + return true; + } + return false; + }; + + this.eq_s = function(s) + { + if (this.limit - this.cursor < s.length) return false; + if (this.current.slice(this.cursor, this.cursor + s.length) != s) + { + return false; + } + this.cursor += s.length; + return true; + }; + + this.eq_s_b = function(s) + { + if (this.cursor - this.limit_backward < s.length) return false; + if (this.current.slice(this.cursor - s.length, this.cursor) != s) + { + return false; + } + this.cursor -= s.length; + return true; + }; + + /** @return {number} */ this.find_among = function(v) + { + var i = 0; + var j = v.length; + + var c = this.cursor; + var l = this.limit; + + var common_i = 0; + var common_j = 0; + + var first_key_inspected = false; + + while (true) + { + var k = i + ((j - i) >>> 1); + var diff = 0; + var common = common_i < common_j ? common_i : common_j; // smaller + // w[0]: string, w[1]: substring_i, w[2]: result, w[3]: function (optional) + var w = v[k]; + var i2; + for (i2 = common; i2 < w[0].length; i2++) + { + if (c + common == l) + { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w[0].charCodeAt(i2); + if (diff != 0) break; + common++; + } + if (diff < 0) + { + j = k; + common_j = common; + } + else + { + i = k; + common_i = common; + } + if (j - i <= 1) + { + if (i > 0) break; // v->s has been inspected + if (j == i) break; // only one item in v + + // - but now we need to go round once more to get + // v->s inspected. This looks messy, but is actually + // the optimal approach. + + if (first_key_inspected) break; + first_key_inspected = true; + } + } + do { + var w = v[i]; + if (common_i >= w[0].length) + { + this.cursor = c + w[0].length; + if (w.length < 4) return w[2]; + var res = w[3](this); + this.cursor = c + w[0].length; + if (res) return w[2]; + } + i = w[1]; + } while (i >= 0); + return 0; + }; + + // find_among_b is for backwards processing. Same comments apply + this.find_among_b = function(v) + { + var i = 0; + var j = v.length + + var c = this.cursor; + var lb = this.limit_backward; + + var common_i = 0; + var common_j = 0; + + var first_key_inspected = false; + + while (true) + { + var k = i + ((j - i) >> 1); + var diff = 0; + var common = common_i < common_j ? common_i : common_j; + var w = v[k]; + var i2; + for (i2 = w[0].length - 1 - common; i2 >= 0; i2--) + { + if (c - common == lb) + { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w[0].charCodeAt(i2); + if (diff != 0) break; + common++; + } + if (diff < 0) + { + j = k; + common_j = common; + } + else + { + i = k; + common_i = common; + } + if (j - i <= 1) + { + if (i > 0) break; + if (j == i) break; + if (first_key_inspected) break; + first_key_inspected = true; + } + } + do { + var w = v[i]; + if (common_i >= w[0].length) + { + this.cursor = c - w[0].length; + if (w.length < 4) return w[2]; + var res = w[3](this); + this.cursor = c - w[0].length; + if (res) return w[2]; + } + i = w[1]; + } while (i >= 0); + return 0; + }; + + /* to replace chars between c_bra and c_ket in this.current by the + * chars in s. + */ + this.replace_s = function(c_bra, c_ket, s) + { + var adjustment = s.length - (c_ket - c_bra); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit += adjustment; + if (this.cursor >= c_ket) this.cursor += adjustment; + else if (this.cursor > c_bra) this.cursor = c_bra; + return adjustment; + }; + + this.slice_check = function() + { + if (this.bra < 0 || + this.bra > this.ket || + this.ket > this.limit || + this.limit > this.current.length) + { + return false; + } + return true; + }; + + this.slice_from = function(s) + { + var result = false; + if (this.slice_check()) + { + this.replace_s(this.bra, this.ket, s); + result = true; + } + return result; + }; + + this.slice_del = function() + { + return this.slice_from(""); + }; + + this.insert = function(c_bra, c_ket, s) + { + var adjustment = this.replace_s(c_bra, c_ket, s); + if (c_bra <= this.bra) this.bra += adjustment; + if (c_bra <= this.ket) this.ket += adjustment; + }; + + this.slice_to = function() + { + var result = ''; + if (this.slice_check()) + { + result = this.current.slice(this.bra, this.ket); + } + return result; + }; + + this.assign_to = function() + { + return this.current.slice(0, this.limit); + }; +}; diff --git a/sphinx/search/non-minified-js/danish-stemmer.js b/sphinx/search/non-minified-js/danish-stemmer.js new file mode 100644 index 0000000..46b5d55 --- /dev/null +++ b/sphinx/search/non-minified-js/danish-stemmer.js @@ -0,0 +1,310 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +DanishStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["hed", -1, 1], + ["ethed", 0, 1], + ["ered", -1, 1], + ["e", -1, 1], + ["erede", 3, 1], + ["ende", 3, 1], + ["erende", 5, 1], + ["ene", 3, 1], + ["erne", 3, 1], + ["ere", 3, 1], + ["en", -1, 1], + ["heden", 10, 1], + ["eren", 10, 1], + ["er", -1, 1], + ["heder", 13, 1], + ["erer", 13, 1], + ["s", -1, 2], + ["heds", 16, 1], + ["es", 16, 1], + ["endes", 18, 1], + ["erendes", 19, 1], + ["enes", 18, 1], + ["ernes", 18, 1], + ["eres", 18, 1], + ["ens", 16, 1], + ["hedens", 24, 1], + ["erens", 24, 1], + ["ers", 16, 1], + ["ets", 16, 1], + ["erets", 28, 1], + ["et", -1, 1], + ["eret", 30, 1] + ]; + + /** @const */ var a_1 = [ + ["gd", -1, -1], + ["dt", -1, -1], + ["gt", -1, -1], + ["kt", -1, -1] + ]; + + /** @const */ var a_2 = [ + ["ig", -1, 1], + ["lig", 0, 1], + ["elig", 1, 1], + ["els", -1, 1], + ["l\u00F8st", -1, 2] + ]; + + /** @const */ var /** Array */ g_c = [119, 223, 119, 1]; + + /** @const */ var /** Array */ g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128]; + + /** @const */ var /** Array */ g_s_ending = [239, 254, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16]; + + var /** number */ I_x = 0; + var /** number */ I_p1 = 0; + var /** string */ S_ch = ''; + + + /** @return {boolean} */ + function r_mark_regions() { + I_p1 = base.limit; + var /** number */ v_1 = base.cursor; + { + var /** number */ c1 = base.cursor + 3; + if (c1 > base.limit) + { + return false; + } + base.cursor = c1; + } + I_x = base.cursor; + base.cursor = v_1; + golab0: while(true) + { + var /** number */ v_2 = base.cursor; + lab1: { + if (!(base.in_grouping(g_v, 97, 248))) + { + break lab1; + } + base.cursor = v_2; + break golab0; + } + base.cursor = v_2; + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + golab2: while(true) + { + lab3: { + if (!(base.out_grouping(g_v, 97, 248))) + { + break lab3; + } + break golab2; + } + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + I_p1 = base.cursor; + lab4: { + if (!(I_p1 < I_x)) + { + break lab4; + } + I_p1 = I_x; + } + return true; + }; + + /** @return {boolean} */ + function r_main_suffix() { + var /** number */ among_var; + if (base.cursor < I_p1) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_p1; + base.ket = base.cursor; + among_var = base.find_among_b(a_0); + if (among_var == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + base.limit_backward = v_2; + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!(base.in_grouping_b(g_s_ending, 97, 229))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_consonant_pair() { + var /** number */ v_1 = base.limit - base.cursor; + if (base.cursor < I_p1) + { + return false; + } + var /** number */ v_3 = base.limit_backward; + base.limit_backward = I_p1; + base.ket = base.cursor; + if (base.find_among_b(a_1) == 0) + { + base.limit_backward = v_3; + return false; + } + base.bra = base.cursor; + base.limit_backward = v_3; + base.cursor = base.limit - v_1; + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_other_suffix() { + var /** number */ among_var; + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + if (!(base.eq_s_b("st"))) + { + break lab0; + } + base.bra = base.cursor; + if (!(base.eq_s_b("ig"))) + { + break lab0; + } + if (!base.slice_del()) + { + return false; + } + } + base.cursor = base.limit - v_1; + if (base.cursor < I_p1) + { + return false; + } + var /** number */ v_3 = base.limit_backward; + base.limit_backward = I_p1; + base.ket = base.cursor; + among_var = base.find_among_b(a_2); + if (among_var == 0) + { + base.limit_backward = v_3; + return false; + } + base.bra = base.cursor; + base.limit_backward = v_3; + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + var /** number */ v_4 = base.limit - base.cursor; + r_consonant_pair(); + base.cursor = base.limit - v_4; + break; + case 2: + if (!base.slice_from("l\u00F8s")) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_undouble() { + if (base.cursor < I_p1) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_p1; + base.ket = base.cursor; + if (!(base.in_grouping_b(g_c, 98, 122))) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + S_ch = base.slice_to(); + if (S_ch == '') + { + return false; + } + base.limit_backward = v_2; + if (!(base.eq_s_b(S_ch))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + return true; + }; + + this.stem = /** @return {boolean} */ function() { + var /** number */ v_1 = base.cursor; + r_mark_regions(); + base.cursor = v_1; + base.limit_backward = base.cursor; base.cursor = base.limit; + var /** number */ v_2 = base.limit - base.cursor; + r_main_suffix(); + base.cursor = base.limit - v_2; + var /** number */ v_3 = base.limit - base.cursor; + r_consonant_pair(); + base.cursor = base.limit - v_3; + var /** number */ v_4 = base.limit - base.cursor; + r_other_suffix(); + base.cursor = base.limit - v_4; + var /** number */ v_5 = base.limit - base.cursor; + r_undouble(); + base.cursor = base.limit - v_5; + base.cursor = base.limit_backward; + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/sphinx/search/non-minified-js/dutch-stemmer.js b/sphinx/search/non-minified-js/dutch-stemmer.js new file mode 100644 index 0000000..0ad11e2 --- /dev/null +++ b/sphinx/search/non-minified-js/dutch-stemmer.js @@ -0,0 +1,685 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +DutchStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["", -1, 6], + ["\u00E1", 0, 1], + ["\u00E4", 0, 1], + ["\u00E9", 0, 2], + ["\u00EB", 0, 2], + ["\u00ED", 0, 3], + ["\u00EF", 0, 3], + ["\u00F3", 0, 4], + ["\u00F6", 0, 4], + ["\u00FA", 0, 5], + ["\u00FC", 0, 5] + ]; + + /** @const */ var a_1 = [ + ["", -1, 3], + ["I", 0, 2], + ["Y", 0, 1] + ]; + + /** @const */ var a_2 = [ + ["dd", -1, -1], + ["kk", -1, -1], + ["tt", -1, -1] + ]; + + /** @const */ var a_3 = [ + ["ene", -1, 2], + ["se", -1, 3], + ["en", -1, 2], + ["heden", 2, 1], + ["s", -1, 3] + ]; + + /** @const */ var a_4 = [ + ["end", -1, 1], + ["ig", -1, 2], + ["ing", -1, 1], + ["lijk", -1, 3], + ["baar", -1, 4], + ["bar", -1, 5] + ]; + + /** @const */ var a_5 = [ + ["aa", -1, -1], + ["ee", -1, -1], + ["oo", -1, -1], + ["uu", -1, -1] + ]; + + /** @const */ var /** Array */ g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128]; + + /** @const */ var /** Array */ g_v_I = [1, 0, 0, 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128]; + + /** @const */ var /** Array */ g_v_j = [17, 67, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128]; + + var /** number */ I_p2 = 0; + var /** number */ I_p1 = 0; + var /** boolean */ B_e_found = false; + + + /** @return {boolean} */ + function r_prelude() { + var /** number */ among_var; + var /** number */ v_1 = base.cursor; + while(true) + { + var /** number */ v_2 = base.cursor; + lab0: { + base.bra = base.cursor; + among_var = base.find_among(a_0); + if (among_var == 0) + { + break lab0; + } + base.ket = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_from("a")) + { + return false; + } + break; + case 2: + if (!base.slice_from("e")) + { + return false; + } + break; + case 3: + if (!base.slice_from("i")) + { + return false; + } + break; + case 4: + if (!base.slice_from("o")) + { + return false; + } + break; + case 5: + if (!base.slice_from("u")) + { + return false; + } + break; + case 6: + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + break; + } + continue; + } + base.cursor = v_2; + break; + } + base.cursor = v_1; + var /** number */ v_3 = base.cursor; + lab1: { + base.bra = base.cursor; + if (!(base.eq_s("y"))) + { + base.cursor = v_3; + break lab1; + } + base.ket = base.cursor; + if (!base.slice_from("Y")) + { + return false; + } + } + while(true) + { + var /** number */ v_4 = base.cursor; + lab2: { + golab3: while(true) + { + var /** number */ v_5 = base.cursor; + lab4: { + if (!(base.in_grouping(g_v, 97, 232))) + { + break lab4; + } + base.bra = base.cursor; + lab5: { + var /** number */ v_6 = base.cursor; + lab6: { + if (!(base.eq_s("i"))) + { + break lab6; + } + base.ket = base.cursor; + if (!(base.in_grouping(g_v, 97, 232))) + { + break lab6; + } + if (!base.slice_from("I")) + { + return false; + } + break lab5; + } + base.cursor = v_6; + if (!(base.eq_s("y"))) + { + break lab4; + } + base.ket = base.cursor; + if (!base.slice_from("Y")) + { + return false; + } + } + base.cursor = v_5; + break golab3; + } + base.cursor = v_5; + if (base.cursor >= base.limit) + { + break lab2; + } + base.cursor++; + } + continue; + } + base.cursor = v_4; + break; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_regions() { + I_p1 = base.limit; + I_p2 = base.limit; + golab0: while(true) + { + lab1: { + if (!(base.in_grouping(g_v, 97, 232))) + { + break lab1; + } + break golab0; + } + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + golab2: while(true) + { + lab3: { + if (!(base.out_grouping(g_v, 97, 232))) + { + break lab3; + } + break golab2; + } + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + I_p1 = base.cursor; + lab4: { + if (!(I_p1 < 3)) + { + break lab4; + } + I_p1 = 3; + } + golab5: while(true) + { + lab6: { + if (!(base.in_grouping(g_v, 97, 232))) + { + break lab6; + } + break golab5; + } + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + golab7: while(true) + { + lab8: { + if (!(base.out_grouping(g_v, 97, 232))) + { + break lab8; + } + break golab7; + } + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + I_p2 = base.cursor; + return true; + }; + + /** @return {boolean} */ + function r_postlude() { + var /** number */ among_var; + while(true) + { + var /** number */ v_1 = base.cursor; + lab0: { + base.bra = base.cursor; + among_var = base.find_among(a_1); + if (among_var == 0) + { + break lab0; + } + base.ket = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_from("y")) + { + return false; + } + break; + case 2: + if (!base.slice_from("i")) + { + return false; + } + break; + case 3: + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + break; + } + continue; + } + base.cursor = v_1; + break; + } + return true; + }; + + /** @return {boolean} */ + function r_R1() { + if (!(I_p1 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R2() { + if (!(I_p2 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_undouble() { + var /** number */ v_1 = base.limit - base.cursor; + if (base.find_among_b(a_2) == 0) + { + return false; + } + base.cursor = base.limit - v_1; + base.ket = base.cursor; + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_e_ending() { + B_e_found = false; + base.ket = base.cursor; + if (!(base.eq_s_b("e"))) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + var /** number */ v_1 = base.limit - base.cursor; + if (!(base.out_grouping_b(g_v, 97, 232))) + { + return false; + } + base.cursor = base.limit - v_1; + if (!base.slice_del()) + { + return false; + } + B_e_found = true; + if (!r_undouble()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_en_ending() { + if (!r_R1()) + { + return false; + } + var /** number */ v_1 = base.limit - base.cursor; + if (!(base.out_grouping_b(g_v, 97, 232))) + { + return false; + } + base.cursor = base.limit - v_1; + { + var /** number */ v_2 = base.limit - base.cursor; + lab0: { + if (!(base.eq_s_b("gem"))) + { + break lab0; + } + return false; + } + base.cursor = base.limit - v_2; + } + if (!base.slice_del()) + { + return false; + } + if (!r_undouble()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_standard_suffix() { + var /** number */ among_var; + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + among_var = base.find_among_b(a_3); + if (among_var == 0) + { + break lab0; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_R1()) + { + break lab0; + } + if (!base.slice_from("heid")) + { + return false; + } + break; + case 2: + if (!r_en_ending()) + { + break lab0; + } + break; + case 3: + if (!r_R1()) + { + break lab0; + } + if (!(base.out_grouping_b(g_v_j, 97, 232))) + { + break lab0; + } + if (!base.slice_del()) + { + return false; + } + break; + } + } + base.cursor = base.limit - v_1; + var /** number */ v_2 = base.limit - base.cursor; + r_e_ending(); + base.cursor = base.limit - v_2; + var /** number */ v_3 = base.limit - base.cursor; + lab1: { + base.ket = base.cursor; + if (!(base.eq_s_b("heid"))) + { + break lab1; + } + base.bra = base.cursor; + if (!r_R2()) + { + break lab1; + } + { + var /** number */ v_4 = base.limit - base.cursor; + lab2: { + if (!(base.eq_s_b("c"))) + { + break lab2; + } + break lab1; + } + base.cursor = base.limit - v_4; + } + if (!base.slice_del()) + { + return false; + } + base.ket = base.cursor; + if (!(base.eq_s_b("en"))) + { + break lab1; + } + base.bra = base.cursor; + if (!r_en_ending()) + { + break lab1; + } + } + base.cursor = base.limit - v_3; + var /** number */ v_5 = base.limit - base.cursor; + lab3: { + base.ket = base.cursor; + among_var = base.find_among_b(a_4); + if (among_var == 0) + { + break lab3; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + { + break lab3; + } + if (!base.slice_del()) + { + return false; + } + lab4: { + var /** number */ v_6 = base.limit - base.cursor; + lab5: { + base.ket = base.cursor; + if (!(base.eq_s_b("ig"))) + { + break lab5; + } + base.bra = base.cursor; + if (!r_R2()) + { + break lab5; + } + { + var /** number */ v_7 = base.limit - base.cursor; + lab6: { + if (!(base.eq_s_b("e"))) + { + break lab6; + } + break lab5; + } + base.cursor = base.limit - v_7; + } + if (!base.slice_del()) + { + return false; + } + break lab4; + } + base.cursor = base.limit - v_6; + if (!r_undouble()) + { + break lab3; + } + } + break; + case 2: + if (!r_R2()) + { + break lab3; + } + { + var /** number */ v_8 = base.limit - base.cursor; + lab7: { + if (!(base.eq_s_b("e"))) + { + break lab7; + } + break lab3; + } + base.cursor = base.limit - v_8; + } + if (!base.slice_del()) + { + return false; + } + break; + case 3: + if (!r_R2()) + { + break lab3; + } + if (!base.slice_del()) + { + return false; + } + if (!r_e_ending()) + { + break lab3; + } + break; + case 4: + if (!r_R2()) + { + break lab3; + } + if (!base.slice_del()) + { + return false; + } + break; + case 5: + if (!r_R2()) + { + break lab3; + } + if (!B_e_found) + { + break lab3; + } + if (!base.slice_del()) + { + return false; + } + break; + } + } + base.cursor = base.limit - v_5; + var /** number */ v_9 = base.limit - base.cursor; + lab8: { + if (!(base.out_grouping_b(g_v_I, 73, 232))) + { + break lab8; + } + var /** number */ v_10 = base.limit - base.cursor; + if (base.find_among_b(a_5) == 0) + { + break lab8; + } + if (!(base.out_grouping_b(g_v, 97, 232))) + { + break lab8; + } + base.cursor = base.limit - v_10; + base.ket = base.cursor; + if (base.cursor <= base.limit_backward) + { + break lab8; + } + base.cursor--; + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + } + base.cursor = base.limit - v_9; + return true; + }; + + this.stem = /** @return {boolean} */ function() { + var /** number */ v_1 = base.cursor; + r_prelude(); + base.cursor = v_1; + var /** number */ v_2 = base.cursor; + r_mark_regions(); + base.cursor = v_2; + base.limit_backward = base.cursor; base.cursor = base.limit; + r_standard_suffix(); + base.cursor = base.limit_backward; + var /** number */ v_4 = base.cursor; + r_postlude(); + base.cursor = v_4; + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/sphinx/search/non-minified-js/finnish-stemmer.js b/sphinx/search/non-minified-js/finnish-stemmer.js new file mode 100644 index 0000000..c907c4a --- /dev/null +++ b/sphinx/search/non-minified-js/finnish-stemmer.js @@ -0,0 +1,790 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +FinnishStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["pa", -1, 1], + ["sti", -1, 2], + ["kaan", -1, 1], + ["han", -1, 1], + ["kin", -1, 1], + ["h\u00E4n", -1, 1], + ["k\u00E4\u00E4n", -1, 1], + ["ko", -1, 1], + ["p\u00E4", -1, 1], + ["k\u00F6", -1, 1] + ]; + + /** @const */ var a_1 = [ + ["lla", -1, -1], + ["na", -1, -1], + ["ssa", -1, -1], + ["ta", -1, -1], + ["lta", 3, -1], + ["sta", 3, -1] + ]; + + /** @const */ var a_2 = [ + ["ll\u00E4", -1, -1], + ["n\u00E4", -1, -1], + ["ss\u00E4", -1, -1], + ["t\u00E4", -1, -1], + ["lt\u00E4", 3, -1], + ["st\u00E4", 3, -1] + ]; + + /** @const */ var a_3 = [ + ["lle", -1, -1], + ["ine", -1, -1] + ]; + + /** @const */ var a_4 = [ + ["nsa", -1, 3], + ["mme", -1, 3], + ["nne", -1, 3], + ["ni", -1, 2], + ["si", -1, 1], + ["an", -1, 4], + ["en", -1, 6], + ["\u00E4n", -1, 5], + ["ns\u00E4", -1, 3] + ]; + + /** @const */ var a_5 = [ + ["aa", -1, -1], + ["ee", -1, -1], + ["ii", -1, -1], + ["oo", -1, -1], + ["uu", -1, -1], + ["\u00E4\u00E4", -1, -1], + ["\u00F6\u00F6", -1, -1] + ]; + + /** @const */ var a_6 = [ + ["a", -1, 8], + ["lla", 0, -1], + ["na", 0, -1], + ["ssa", 0, -1], + ["ta", 0, -1], + ["lta", 4, -1], + ["sta", 4, -1], + ["tta", 4, 2], + ["lle", -1, -1], + ["ine", -1, -1], + ["ksi", -1, -1], + ["n", -1, 7], + ["han", 11, 1], + ["den", 11, -1, r_VI], + ["seen", 11, -1, r_LONG], + ["hen", 11, 2], + ["tten", 11, -1, r_VI], + ["hin", 11, 3], + ["siin", 11, -1, r_VI], + ["hon", 11, 4], + ["h\u00E4n", 11, 5], + ["h\u00F6n", 11, 6], + ["\u00E4", -1, 8], + ["ll\u00E4", 22, -1], + ["n\u00E4", 22, -1], + ["ss\u00E4", 22, -1], + ["t\u00E4", 22, -1], + ["lt\u00E4", 26, -1], + ["st\u00E4", 26, -1], + ["tt\u00E4", 26, 2] + ]; + + /** @const */ var a_7 = [ + ["eja", -1, -1], + ["mma", -1, 1], + ["imma", 1, -1], + ["mpa", -1, 1], + ["impa", 3, -1], + ["mmi", -1, 1], + ["immi", 5, -1], + ["mpi", -1, 1], + ["impi", 7, -1], + ["ej\u00E4", -1, -1], + ["mm\u00E4", -1, 1], + ["imm\u00E4", 10, -1], + ["mp\u00E4", -1, 1], + ["imp\u00E4", 12, -1] + ]; + + /** @const */ var a_8 = [ + ["i", -1, -1], + ["j", -1, -1] + ]; + + /** @const */ var a_9 = [ + ["mma", -1, 1], + ["imma", 0, -1] + ]; + + /** @const */ var /** Array */ g_AEI = [17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8]; + + /** @const */ var /** Array */ g_C = [119, 223, 119, 1]; + + /** @const */ var /** Array */ g_V1 = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32]; + + /** @const */ var /** Array */ g_V2 = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32]; + + /** @const */ var /** Array */ g_particle_end = [17, 97, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32]; + + var /** boolean */ B_ending_removed = false; + var /** string */ S_x = ''; + var /** number */ I_p2 = 0; + var /** number */ I_p1 = 0; + + + /** @return {boolean} */ + function r_mark_regions() { + I_p1 = base.limit; + I_p2 = base.limit; + golab0: while(true) + { + var /** number */ v_1 = base.cursor; + lab1: { + if (!(base.in_grouping(g_V1, 97, 246))) + { + break lab1; + } + base.cursor = v_1; + break golab0; + } + base.cursor = v_1; + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + golab2: while(true) + { + lab3: { + if (!(base.out_grouping(g_V1, 97, 246))) + { + break lab3; + } + break golab2; + } + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + I_p1 = base.cursor; + golab4: while(true) + { + var /** number */ v_3 = base.cursor; + lab5: { + if (!(base.in_grouping(g_V1, 97, 246))) + { + break lab5; + } + base.cursor = v_3; + break golab4; + } + base.cursor = v_3; + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + golab6: while(true) + { + lab7: { + if (!(base.out_grouping(g_V1, 97, 246))) + { + break lab7; + } + break golab6; + } + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + I_p2 = base.cursor; + return true; + }; + + /** @return {boolean} */ + function r_R2() { + if (!(I_p2 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_particle_etc() { + var /** number */ among_var; + if (base.cursor < I_p1) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_p1; + base.ket = base.cursor; + among_var = base.find_among_b(a_0); + if (among_var == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + base.limit_backward = v_2; + switch (among_var) { + case 1: + if (!(base.in_grouping_b(g_particle_end, 97, 246))) + { + return false; + } + break; + case 2: + if (!r_R2()) + { + return false; + } + break; + } + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_possessive() { + var /** number */ among_var; + if (base.cursor < I_p1) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_p1; + base.ket = base.cursor; + among_var = base.find_among_b(a_4); + if (among_var == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + base.limit_backward = v_2; + switch (among_var) { + case 1: + { + var /** number */ v_3 = base.limit - base.cursor; + lab0: { + if (!(base.eq_s_b("k"))) + { + break lab0; + } + return false; + } + base.cursor = base.limit - v_3; + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_del()) + { + return false; + } + base.ket = base.cursor; + if (!(base.eq_s_b("kse"))) + { + return false; + } + base.bra = base.cursor; + if (!base.slice_from("ksi")) + { + return false; + } + break; + case 3: + if (!base.slice_del()) + { + return false; + } + break; + case 4: + if (base.find_among_b(a_1) == 0) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 5: + if (base.find_among_b(a_2) == 0) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 6: + if (base.find_among_b(a_3) == 0) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_LONG() { + if (base.find_among_b(a_5) == 0) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_VI() { + if (!(base.eq_s_b("i"))) + { + return false; + } + if (!(base.in_grouping_b(g_V2, 97, 246))) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_case_ending() { + var /** number */ among_var; + if (base.cursor < I_p1) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_p1; + base.ket = base.cursor; + among_var = base.find_among_b(a_6); + if (among_var == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + base.limit_backward = v_2; + switch (among_var) { + case 1: + if (!(base.eq_s_b("a"))) + { + return false; + } + break; + case 2: + if (!(base.eq_s_b("e"))) + { + return false; + } + break; + case 3: + if (!(base.eq_s_b("i"))) + { + return false; + } + break; + case 4: + if (!(base.eq_s_b("o"))) + { + return false; + } + break; + case 5: + if (!(base.eq_s_b("\u00E4"))) + { + return false; + } + break; + case 6: + if (!(base.eq_s_b("\u00F6"))) + { + return false; + } + break; + case 7: + var /** number */ v_3 = base.limit - base.cursor; + lab0: { + var /** number */ v_4 = base.limit - base.cursor; + lab1: { + var /** number */ v_5 = base.limit - base.cursor; + lab2: { + if (!r_LONG()) + { + break lab2; + } + break lab1; + } + base.cursor = base.limit - v_5; + if (!(base.eq_s_b("ie"))) + { + base.cursor = base.limit - v_3; + break lab0; + } + } + base.cursor = base.limit - v_4; + if (base.cursor <= base.limit_backward) + { + base.cursor = base.limit - v_3; + break lab0; + } + base.cursor--; + base.bra = base.cursor; + } + break; + case 8: + if (!(base.in_grouping_b(g_V1, 97, 246))) + { + return false; + } + if (!(base.in_grouping_b(g_C, 98, 122))) + { + return false; + } + break; + } + if (!base.slice_del()) + { + return false; + } + B_ending_removed = true; + return true; + }; + + /** @return {boolean} */ + function r_other_endings() { + var /** number */ among_var; + if (base.cursor < I_p2) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_p2; + base.ket = base.cursor; + among_var = base.find_among_b(a_7); + if (among_var == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + base.limit_backward = v_2; + switch (among_var) { + case 1: + { + var /** number */ v_3 = base.limit - base.cursor; + lab0: { + if (!(base.eq_s_b("po"))) + { + break lab0; + } + return false; + } + base.cursor = base.limit - v_3; + } + break; + } + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_i_plural() { + if (base.cursor < I_p1) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_p1; + base.ket = base.cursor; + if (base.find_among_b(a_8) == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + base.limit_backward = v_2; + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_t_plural() { + var /** number */ among_var; + if (base.cursor < I_p1) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_p1; + base.ket = base.cursor; + if (!(base.eq_s_b("t"))) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + var /** number */ v_3 = base.limit - base.cursor; + if (!(base.in_grouping_b(g_V1, 97, 246))) + { + base.limit_backward = v_2; + return false; + } + base.cursor = base.limit - v_3; + if (!base.slice_del()) + { + return false; + } + base.limit_backward = v_2; + if (base.cursor < I_p2) + { + return false; + } + var /** number */ v_5 = base.limit_backward; + base.limit_backward = I_p2; + base.ket = base.cursor; + among_var = base.find_among_b(a_9); + if (among_var == 0) + { + base.limit_backward = v_5; + return false; + } + base.bra = base.cursor; + base.limit_backward = v_5; + switch (among_var) { + case 1: + { + var /** number */ v_6 = base.limit - base.cursor; + lab0: { + if (!(base.eq_s_b("po"))) + { + break lab0; + } + return false; + } + base.cursor = base.limit - v_6; + } + break; + } + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_tidy() { + if (base.cursor < I_p1) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_p1; + var /** number */ v_3 = base.limit - base.cursor; + lab0: { + var /** number */ v_4 = base.limit - base.cursor; + if (!r_LONG()) + { + break lab0; + } + base.cursor = base.limit - v_4; + base.ket = base.cursor; + if (base.cursor <= base.limit_backward) + { + break lab0; + } + base.cursor--; + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + } + base.cursor = base.limit - v_3; + var /** number */ v_5 = base.limit - base.cursor; + lab1: { + base.ket = base.cursor; + if (!(base.in_grouping_b(g_AEI, 97, 228))) + { + break lab1; + } + base.bra = base.cursor; + if (!(base.in_grouping_b(g_C, 98, 122))) + { + break lab1; + } + if (!base.slice_del()) + { + return false; + } + } + base.cursor = base.limit - v_5; + var /** number */ v_6 = base.limit - base.cursor; + lab2: { + base.ket = base.cursor; + if (!(base.eq_s_b("j"))) + { + break lab2; + } + base.bra = base.cursor; + lab3: { + var /** number */ v_7 = base.limit - base.cursor; + lab4: { + if (!(base.eq_s_b("o"))) + { + break lab4; + } + break lab3; + } + base.cursor = base.limit - v_7; + if (!(base.eq_s_b("u"))) + { + break lab2; + } + } + if (!base.slice_del()) + { + return false; + } + } + base.cursor = base.limit - v_6; + var /** number */ v_8 = base.limit - base.cursor; + lab5: { + base.ket = base.cursor; + if (!(base.eq_s_b("o"))) + { + break lab5; + } + base.bra = base.cursor; + if (!(base.eq_s_b("j"))) + { + break lab5; + } + if (!base.slice_del()) + { + return false; + } + } + base.cursor = base.limit - v_8; + base.limit_backward = v_2; + golab6: while(true) + { + var /** number */ v_9 = base.limit - base.cursor; + lab7: { + if (!(base.out_grouping_b(g_V1, 97, 246))) + { + break lab7; + } + base.cursor = base.limit - v_9; + break golab6; + } + base.cursor = base.limit - v_9; + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + } + base.ket = base.cursor; + if (!(base.in_grouping_b(g_C, 98, 122))) + { + return false; + } + base.bra = base.cursor; + S_x = base.slice_to(); + if (S_x == '') + { + return false; + } + if (!(base.eq_s_b(S_x))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + return true; + }; + + this.stem = /** @return {boolean} */ function() { + var /** number */ v_1 = base.cursor; + r_mark_regions(); + base.cursor = v_1; + B_ending_removed = false; + base.limit_backward = base.cursor; base.cursor = base.limit; + var /** number */ v_2 = base.limit - base.cursor; + r_particle_etc(); + base.cursor = base.limit - v_2; + var /** number */ v_3 = base.limit - base.cursor; + r_possessive(); + base.cursor = base.limit - v_3; + var /** number */ v_4 = base.limit - base.cursor; + r_case_ending(); + base.cursor = base.limit - v_4; + var /** number */ v_5 = base.limit - base.cursor; + r_other_endings(); + base.cursor = base.limit - v_5; + lab0: { + lab1: { + if (!B_ending_removed) + { + break lab1; + } + var /** number */ v_7 = base.limit - base.cursor; + r_i_plural(); + base.cursor = base.limit - v_7; + break lab0; + } + var /** number */ v_8 = base.limit - base.cursor; + r_t_plural(); + base.cursor = base.limit - v_8; + } + var /** number */ v_9 = base.limit - base.cursor; + r_tidy(); + base.cursor = base.limit - v_9; + base.cursor = base.limit_backward; + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/sphinx/search/non-minified-js/french-stemmer.js b/sphinx/search/non-minified-js/french-stemmer.js new file mode 100644 index 0000000..c970831 --- /dev/null +++ b/sphinx/search/non-minified-js/french-stemmer.js @@ -0,0 +1,1325 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +FrenchStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["col", -1, -1], + ["par", -1, -1], + ["tap", -1, -1] + ]; + + /** @const */ var a_1 = [ + ["", -1, 7], + ["H", 0, 6], + ["He", 1, 4], + ["Hi", 1, 5], + ["I", 0, 1], + ["U", 0, 2], + ["Y", 0, 3] + ]; + + /** @const */ var a_2 = [ + ["iqU", -1, 3], + ["abl", -1, 3], + ["I\u00E8r", -1, 4], + ["i\u00E8r", -1, 4], + ["eus", -1, 2], + ["iv", -1, 1] + ]; + + /** @const */ var a_3 = [ + ["ic", -1, 2], + ["abil", -1, 1], + ["iv", -1, 3] + ]; + + /** @const */ var a_4 = [ + ["iqUe", -1, 1], + ["atrice", -1, 2], + ["ance", -1, 1], + ["ence", -1, 5], + ["logie", -1, 3], + ["able", -1, 1], + ["isme", -1, 1], + ["euse", -1, 11], + ["iste", -1, 1], + ["ive", -1, 8], + ["if", -1, 8], + ["usion", -1, 4], + ["ation", -1, 2], + ["ution", -1, 4], + ["ateur", -1, 2], + ["iqUes", -1, 1], + ["atrices", -1, 2], + ["ances", -1, 1], + ["ences", -1, 5], + ["logies", -1, 3], + ["ables", -1, 1], + ["ismes", -1, 1], + ["euses", -1, 11], + ["istes", -1, 1], + ["ives", -1, 8], + ["ifs", -1, 8], + ["usions", -1, 4], + ["ations", -1, 2], + ["utions", -1, 4], + ["ateurs", -1, 2], + ["ments", -1, 15], + ["ements", 30, 6], + ["issements", 31, 12], + ["it\u00E9s", -1, 7], + ["ment", -1, 15], + ["ement", 34, 6], + ["issement", 35, 12], + ["amment", 34, 13], + ["emment", 34, 14], + ["aux", -1, 10], + ["eaux", 39, 9], + ["eux", -1, 1], + ["it\u00E9", -1, 7] + ]; + + /** @const */ var a_5 = [ + ["ira", -1, 1], + ["ie", -1, 1], + ["isse", -1, 1], + ["issante", -1, 1], + ["i", -1, 1], + ["irai", 4, 1], + ["ir", -1, 1], + ["iras", -1, 1], + ["ies", -1, 1], + ["\u00EEmes", -1, 1], + ["isses", -1, 1], + ["issantes", -1, 1], + ["\u00EEtes", -1, 1], + ["is", -1, 1], + ["irais", 13, 1], + ["issais", 13, 1], + ["irions", -1, 1], + ["issions", -1, 1], + ["irons", -1, 1], + ["issons", -1, 1], + ["issants", -1, 1], + ["it", -1, 1], + ["irait", 21, 1], + ["issait", 21, 1], + ["issant", -1, 1], + ["iraIent", -1, 1], + ["issaIent", -1, 1], + ["irent", -1, 1], + ["issent", -1, 1], + ["iront", -1, 1], + ["\u00EEt", -1, 1], + ["iriez", -1, 1], + ["issiez", -1, 1], + ["irez", -1, 1], + ["issez", -1, 1] + ]; + + /** @const */ var a_6 = [ + ["a", -1, 3], + ["era", 0, 2], + ["asse", -1, 3], + ["ante", -1, 3], + ["\u00E9e", -1, 2], + ["ai", -1, 3], + ["erai", 5, 2], + ["er", -1, 2], + ["as", -1, 3], + ["eras", 8, 2], + ["\u00E2mes", -1, 3], + ["asses", -1, 3], + ["antes", -1, 3], + ["\u00E2tes", -1, 3], + ["\u00E9es", -1, 2], + ["ais", -1, 3], + ["erais", 15, 2], + ["ions", -1, 1], + ["erions", 17, 2], + ["assions", 17, 3], + ["erons", -1, 2], + ["ants", -1, 3], + ["\u00E9s", -1, 2], + ["ait", -1, 3], + ["erait", 23, 2], + ["ant", -1, 3], + ["aIent", -1, 3], + ["eraIent", 26, 2], + ["\u00E8rent", -1, 2], + ["assent", -1, 3], + ["eront", -1, 2], + ["\u00E2t", -1, 3], + ["ez", -1, 2], + ["iez", 32, 2], + ["eriez", 33, 2], + ["assiez", 33, 3], + ["erez", 32, 2], + ["\u00E9", -1, 2] + ]; + + /** @const */ var a_7 = [ + ["e", -1, 3], + ["I\u00E8re", 0, 2], + ["i\u00E8re", 0, 2], + ["ion", -1, 1], + ["Ier", -1, 2], + ["ier", -1, 2] + ]; + + /** @const */ var a_8 = [ + ["ell", -1, -1], + ["eill", -1, -1], + ["enn", -1, -1], + ["onn", -1, -1], + ["ett", -1, -1] + ]; + + /** @const */ var /** Array */ g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 130, 103, 8, 5]; + + /** @const */ var /** Array */ g_keep_with_s = [1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128]; + + var /** number */ I_p2 = 0; + var /** number */ I_p1 = 0; + var /** number */ I_pV = 0; + + + /** @return {boolean} */ + function r_prelude() { + while(true) + { + var /** number */ v_1 = base.cursor; + lab0: { + golab1: while(true) + { + var /** number */ v_2 = base.cursor; + lab2: { + lab3: { + var /** number */ v_3 = base.cursor; + lab4: { + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab4; + } + base.bra = base.cursor; + lab5: { + var /** number */ v_4 = base.cursor; + lab6: { + if (!(base.eq_s("u"))) + { + break lab6; + } + base.ket = base.cursor; + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab6; + } + if (!base.slice_from("U")) + { + return false; + } + break lab5; + } + base.cursor = v_4; + lab7: { + if (!(base.eq_s("i"))) + { + break lab7; + } + base.ket = base.cursor; + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab7; + } + if (!base.slice_from("I")) + { + return false; + } + break lab5; + } + base.cursor = v_4; + if (!(base.eq_s("y"))) + { + break lab4; + } + base.ket = base.cursor; + if (!base.slice_from("Y")) + { + return false; + } + } + break lab3; + } + base.cursor = v_3; + lab8: { + base.bra = base.cursor; + if (!(base.eq_s("\u00EB"))) + { + break lab8; + } + base.ket = base.cursor; + if (!base.slice_from("He")) + { + return false; + } + break lab3; + } + base.cursor = v_3; + lab9: { + base.bra = base.cursor; + if (!(base.eq_s("\u00EF"))) + { + break lab9; + } + base.ket = base.cursor; + if (!base.slice_from("Hi")) + { + return false; + } + break lab3; + } + base.cursor = v_3; + lab10: { + base.bra = base.cursor; + if (!(base.eq_s("y"))) + { + break lab10; + } + base.ket = base.cursor; + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab10; + } + if (!base.slice_from("Y")) + { + return false; + } + break lab3; + } + base.cursor = v_3; + if (!(base.eq_s("q"))) + { + break lab2; + } + base.bra = base.cursor; + if (!(base.eq_s("u"))) + { + break lab2; + } + base.ket = base.cursor; + if (!base.slice_from("U")) + { + return false; + } + } + base.cursor = v_2; + break golab1; + } + base.cursor = v_2; + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + continue; + } + base.cursor = v_1; + break; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_regions() { + I_pV = base.limit; + I_p1 = base.limit; + I_p2 = base.limit; + var /** number */ v_1 = base.cursor; + lab0: { + lab1: { + var /** number */ v_2 = base.cursor; + lab2: { + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab2; + } + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab2; + } + if (base.cursor >= base.limit) + { + break lab2; + } + base.cursor++; + break lab1; + } + base.cursor = v_2; + lab3: { + if (base.find_among(a_0) == 0) + { + break lab3; + } + break lab1; + } + base.cursor = v_2; + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + golab4: while(true) + { + lab5: { + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab5; + } + break golab4; + } + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + } + I_pV = base.cursor; + } + base.cursor = v_1; + var /** number */ v_4 = base.cursor; + lab6: { + golab7: while(true) + { + lab8: { + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab8; + } + break golab7; + } + if (base.cursor >= base.limit) + { + break lab6; + } + base.cursor++; + } + golab9: while(true) + { + lab10: { + if (!(base.out_grouping(g_v, 97, 251))) + { + break lab10; + } + break golab9; + } + if (base.cursor >= base.limit) + { + break lab6; + } + base.cursor++; + } + I_p1 = base.cursor; + golab11: while(true) + { + lab12: { + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab12; + } + break golab11; + } + if (base.cursor >= base.limit) + { + break lab6; + } + base.cursor++; + } + golab13: while(true) + { + lab14: { + if (!(base.out_grouping(g_v, 97, 251))) + { + break lab14; + } + break golab13; + } + if (base.cursor >= base.limit) + { + break lab6; + } + base.cursor++; + } + I_p2 = base.cursor; + } + base.cursor = v_4; + return true; + }; + + /** @return {boolean} */ + function r_postlude() { + var /** number */ among_var; + while(true) + { + var /** number */ v_1 = base.cursor; + lab0: { + base.bra = base.cursor; + among_var = base.find_among(a_1); + if (among_var == 0) + { + break lab0; + } + base.ket = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_from("i")) + { + return false; + } + break; + case 2: + if (!base.slice_from("u")) + { + return false; + } + break; + case 3: + if (!base.slice_from("y")) + { + return false; + } + break; + case 4: + if (!base.slice_from("\u00EB")) + { + return false; + } + break; + case 5: + if (!base.slice_from("\u00EF")) + { + return false; + } + break; + case 6: + if (!base.slice_del()) + { + return false; + } + break; + case 7: + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + break; + } + continue; + } + base.cursor = v_1; + break; + } + return true; + }; + + /** @return {boolean} */ + function r_RV() { + if (!(I_pV <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R1() { + if (!(I_p1 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R2() { + if (!(I_p2 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_standard_suffix() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_4); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + if (!(base.eq_s_b("ic"))) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.bra = base.cursor; + lab1: { + var /** number */ v_2 = base.limit - base.cursor; + lab2: { + if (!r_R2()) + { + break lab2; + } + if (!base.slice_del()) + { + return false; + } + break lab1; + } + base.cursor = base.limit - v_2; + if (!base.slice_from("iqU")) + { + return false; + } + } + } + break; + case 3: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("log")) + { + return false; + } + break; + case 4: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("u")) + { + return false; + } + break; + case 5: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("ent")) + { + return false; + } + break; + case 6: + if (!r_RV()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_3 = base.limit - base.cursor; + lab3: { + base.ket = base.cursor; + among_var = base.find_among_b(a_2); + if (among_var == 0) + { + base.cursor = base.limit - v_3; + break lab3; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + { + base.cursor = base.limit - v_3; + break lab3; + } + if (!base.slice_del()) + { + return false; + } + base.ket = base.cursor; + if (!(base.eq_s_b("at"))) + { + base.cursor = base.limit - v_3; + break lab3; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_3; + break lab3; + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + lab4: { + var /** number */ v_4 = base.limit - base.cursor; + lab5: { + if (!r_R2()) + { + break lab5; + } + if (!base.slice_del()) + { + return false; + } + break lab4; + } + base.cursor = base.limit - v_4; + if (!r_R1()) + { + base.cursor = base.limit - v_3; + break lab3; + } + if (!base.slice_from("eux")) + { + return false; + } + } + break; + case 3: + if (!r_R2()) + { + base.cursor = base.limit - v_3; + break lab3; + } + if (!base.slice_del()) + { + return false; + } + break; + case 4: + if (!r_RV()) + { + base.cursor = base.limit - v_3; + break lab3; + } + if (!base.slice_from("i")) + { + return false; + } + break; + } + } + break; + case 7: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_5 = base.limit - base.cursor; + lab6: { + base.ket = base.cursor; + among_var = base.find_among_b(a_3); + if (among_var == 0) + { + base.cursor = base.limit - v_5; + break lab6; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + lab7: { + var /** number */ v_6 = base.limit - base.cursor; + lab8: { + if (!r_R2()) + { + break lab8; + } + if (!base.slice_del()) + { + return false; + } + break lab7; + } + base.cursor = base.limit - v_6; + if (!base.slice_from("abl")) + { + return false; + } + } + break; + case 2: + lab9: { + var /** number */ v_7 = base.limit - base.cursor; + lab10: { + if (!r_R2()) + { + break lab10; + } + if (!base.slice_del()) + { + return false; + } + break lab9; + } + base.cursor = base.limit - v_7; + if (!base.slice_from("iqU")) + { + return false; + } + } + break; + case 3: + if (!r_R2()) + { + base.cursor = base.limit - v_5; + break lab6; + } + if (!base.slice_del()) + { + return false; + } + break; + } + } + break; + case 8: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_8 = base.limit - base.cursor; + lab11: { + base.ket = base.cursor; + if (!(base.eq_s_b("at"))) + { + base.cursor = base.limit - v_8; + break lab11; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_8; + break lab11; + } + if (!base.slice_del()) + { + return false; + } + base.ket = base.cursor; + if (!(base.eq_s_b("ic"))) + { + base.cursor = base.limit - v_8; + break lab11; + } + base.bra = base.cursor; + lab12: { + var /** number */ v_9 = base.limit - base.cursor; + lab13: { + if (!r_R2()) + { + break lab13; + } + if (!base.slice_del()) + { + return false; + } + break lab12; + } + base.cursor = base.limit - v_9; + if (!base.slice_from("iqU")) + { + return false; + } + } + } + break; + case 9: + if (!base.slice_from("eau")) + { + return false; + } + break; + case 10: + if (!r_R1()) + { + return false; + } + if (!base.slice_from("al")) + { + return false; + } + break; + case 11: + lab14: { + var /** number */ v_10 = base.limit - base.cursor; + lab15: { + if (!r_R2()) + { + break lab15; + } + if (!base.slice_del()) + { + return false; + } + break lab14; + } + base.cursor = base.limit - v_10; + if (!r_R1()) + { + return false; + } + if (!base.slice_from("eux")) + { + return false; + } + } + break; + case 12: + if (!r_R1()) + { + return false; + } + if (!(base.out_grouping_b(g_v, 97, 251))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 13: + if (!r_RV()) + { + return false; + } + if (!base.slice_from("ant")) + { + return false; + } + return false; + case 14: + if (!r_RV()) + { + return false; + } + if (!base.slice_from("ent")) + { + return false; + } + return false; + case 15: + var /** number */ v_11 = base.limit - base.cursor; + if (!(base.in_grouping_b(g_v, 97, 251))) + { + return false; + } + if (!r_RV()) + { + return false; + } + base.cursor = base.limit - v_11; + if (!base.slice_del()) + { + return false; + } + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_i_verb_suffix() { + if (base.cursor < I_pV) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_pV; + base.ket = base.cursor; + if (base.find_among_b(a_5) == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + { + var /** number */ v_3 = base.limit - base.cursor; + lab0: { + if (!(base.eq_s_b("H"))) + { + break lab0; + } + base.limit_backward = v_2; + return false; + } + base.cursor = base.limit - v_3; + } + if (!(base.out_grouping_b(g_v, 97, 251))) + { + base.limit_backward = v_2; + return false; + } + if (!base.slice_del()) + { + return false; + } + base.limit_backward = v_2; + return true; + }; + + /** @return {boolean} */ + function r_verb_suffix() { + var /** number */ among_var; + if (base.cursor < I_pV) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_pV; + base.ket = base.cursor; + among_var = base.find_among_b(a_6); + if (among_var == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + { + base.limit_backward = v_2; + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_del()) + { + return false; + } + break; + case 3: + if (!base.slice_del()) + { + return false; + } + var /** number */ v_3 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + if (!(base.eq_s_b("e"))) + { + base.cursor = base.limit - v_3; + break lab0; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + } + break; + } + base.limit_backward = v_2; + return true; + }; + + /** @return {boolean} */ + function r_residual_suffix() { + var /** number */ among_var; + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + if (!(base.eq_s_b("s"))) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.bra = base.cursor; + var /** number */ v_2 = base.limit - base.cursor; + lab1: { + var /** number */ v_3 = base.limit - base.cursor; + lab2: { + if (!(base.eq_s_b("Hi"))) + { + break lab2; + } + break lab1; + } + base.cursor = base.limit - v_3; + if (!(base.out_grouping_b(g_keep_with_s, 97, 232))) + { + base.cursor = base.limit - v_1; + break lab0; + } + } + base.cursor = base.limit - v_2; + if (!base.slice_del()) + { + return false; + } + } + if (base.cursor < I_pV) + { + return false; + } + var /** number */ v_5 = base.limit_backward; + base.limit_backward = I_pV; + base.ket = base.cursor; + among_var = base.find_among_b(a_7); + if (among_var == 0) + { + base.limit_backward = v_5; + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + { + base.limit_backward = v_5; + return false; + } + lab3: { + var /** number */ v_6 = base.limit - base.cursor; + lab4: { + if (!(base.eq_s_b("s"))) + { + break lab4; + } + break lab3; + } + base.cursor = base.limit - v_6; + if (!(base.eq_s_b("t"))) + { + base.limit_backward = v_5; + return false; + } + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_from("i")) + { + return false; + } + break; + case 3: + if (!base.slice_del()) + { + return false; + } + break; + } + base.limit_backward = v_5; + return true; + }; + + /** @return {boolean} */ + function r_un_double() { + var /** number */ v_1 = base.limit - base.cursor; + if (base.find_among_b(a_8) == 0) + { + return false; + } + base.cursor = base.limit - v_1; + base.ket = base.cursor; + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_un_accent() { + { + var v_1 = 1; + while(true) + { + lab0: { + if (!(base.out_grouping_b(g_v, 97, 251))) + { + break lab0; + } + v_1--; + continue; + } + break; + } + if (v_1 > 0) + { + return false; + } + } + base.ket = base.cursor; + lab1: { + var /** number */ v_3 = base.limit - base.cursor; + lab2: { + if (!(base.eq_s_b("\u00E9"))) + { + break lab2; + } + break lab1; + } + base.cursor = base.limit - v_3; + if (!(base.eq_s_b("\u00E8"))) + { + return false; + } + } + base.bra = base.cursor; + if (!base.slice_from("e")) + { + return false; + } + return true; + }; + + this.stem = /** @return {boolean} */ function() { + var /** number */ v_1 = base.cursor; + r_prelude(); + base.cursor = v_1; + r_mark_regions(); + base.limit_backward = base.cursor; base.cursor = base.limit; + var /** number */ v_3 = base.limit - base.cursor; + lab0: { + lab1: { + var /** number */ v_4 = base.limit - base.cursor; + lab2: { + var /** number */ v_5 = base.limit - base.cursor; + lab3: { + var /** number */ v_6 = base.limit - base.cursor; + lab4: { + if (!r_standard_suffix()) + { + break lab4; + } + break lab3; + } + base.cursor = base.limit - v_6; + lab5: { + if (!r_i_verb_suffix()) + { + break lab5; + } + break lab3; + } + base.cursor = base.limit - v_6; + if (!r_verb_suffix()) + { + break lab2; + } + } + base.cursor = base.limit - v_5; + var /** number */ v_7 = base.limit - base.cursor; + lab6: { + base.ket = base.cursor; + lab7: { + var /** number */ v_8 = base.limit - base.cursor; + lab8: { + if (!(base.eq_s_b("Y"))) + { + break lab8; + } + base.bra = base.cursor; + if (!base.slice_from("i")) + { + return false; + } + break lab7; + } + base.cursor = base.limit - v_8; + if (!(base.eq_s_b("\u00E7"))) + { + base.cursor = base.limit - v_7; + break lab6; + } + base.bra = base.cursor; + if (!base.slice_from("c")) + { + return false; + } + } + } + break lab1; + } + base.cursor = base.limit - v_4; + if (!r_residual_suffix()) + { + break lab0; + } + } + } + base.cursor = base.limit - v_3; + var /** number */ v_9 = base.limit - base.cursor; + r_un_double(); + base.cursor = base.limit - v_9; + var /** number */ v_10 = base.limit - base.cursor; + r_un_accent(); + base.cursor = base.limit - v_10; + base.cursor = base.limit_backward; + var /** number */ v_11 = base.cursor; + r_postlude(); + base.cursor = v_11; + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/sphinx/search/non-minified-js/german-stemmer.js b/sphinx/search/non-minified-js/german-stemmer.js new file mode 100644 index 0000000..f5ff81b --- /dev/null +++ b/sphinx/search/non-minified-js/german-stemmer.js @@ -0,0 +1,577 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +GermanStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["", -1, 5], + ["U", 0, 2], + ["Y", 0, 1], + ["\u00E4", 0, 3], + ["\u00F6", 0, 4], + ["\u00FC", 0, 2] + ]; + + /** @const */ var a_1 = [ + ["e", -1, 2], + ["em", -1, 1], + ["en", -1, 2], + ["ern", -1, 1], + ["er", -1, 1], + ["s", -1, 3], + ["es", 5, 2] + ]; + + /** @const */ var a_2 = [ + ["en", -1, 1], + ["er", -1, 1], + ["st", -1, 2], + ["est", 2, 1] + ]; + + /** @const */ var a_3 = [ + ["ig", -1, 1], + ["lich", -1, 1] + ]; + + /** @const */ var a_4 = [ + ["end", -1, 1], + ["ig", -1, 2], + ["ung", -1, 1], + ["lich", -1, 3], + ["isch", -1, 2], + ["ik", -1, 2], + ["heit", -1, 3], + ["keit", -1, 4] + ]; + + /** @const */ var /** Array */ g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32, 8]; + + /** @const */ var /** Array */ g_s_ending = [117, 30, 5]; + + /** @const */ var /** Array */ g_st_ending = [117, 30, 4]; + + var /** number */ I_x = 0; + var /** number */ I_p2 = 0; + var /** number */ I_p1 = 0; + + + /** @return {boolean} */ + function r_prelude() { + var /** number */ v_1 = base.cursor; + while(true) + { + var /** number */ v_2 = base.cursor; + lab0: { + lab1: { + var /** number */ v_3 = base.cursor; + lab2: { + base.bra = base.cursor; + if (!(base.eq_s("\u00DF"))) + { + break lab2; + } + base.ket = base.cursor; + if (!base.slice_from("ss")) + { + return false; + } + break lab1; + } + base.cursor = v_3; + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + continue; + } + base.cursor = v_2; + break; + } + base.cursor = v_1; + while(true) + { + var /** number */ v_4 = base.cursor; + lab3: { + golab4: while(true) + { + var /** number */ v_5 = base.cursor; + lab5: { + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab5; + } + base.bra = base.cursor; + lab6: { + var /** number */ v_6 = base.cursor; + lab7: { + if (!(base.eq_s("u"))) + { + break lab7; + } + base.ket = base.cursor; + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab7; + } + if (!base.slice_from("U")) + { + return false; + } + break lab6; + } + base.cursor = v_6; + if (!(base.eq_s("y"))) + { + break lab5; + } + base.ket = base.cursor; + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab5; + } + if (!base.slice_from("Y")) + { + return false; + } + } + base.cursor = v_5; + break golab4; + } + base.cursor = v_5; + if (base.cursor >= base.limit) + { + break lab3; + } + base.cursor++; + } + continue; + } + base.cursor = v_4; + break; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_regions() { + I_p1 = base.limit; + I_p2 = base.limit; + var /** number */ v_1 = base.cursor; + { + var /** number */ c1 = base.cursor + 3; + if (c1 > base.limit) + { + return false; + } + base.cursor = c1; + } + I_x = base.cursor; + base.cursor = v_1; + golab0: while(true) + { + lab1: { + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab1; + } + break golab0; + } + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + golab2: while(true) + { + lab3: { + if (!(base.out_grouping(g_v, 97, 252))) + { + break lab3; + } + break golab2; + } + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + I_p1 = base.cursor; + lab4: { + if (!(I_p1 < I_x)) + { + break lab4; + } + I_p1 = I_x; + } + golab5: while(true) + { + lab6: { + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab6; + } + break golab5; + } + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + golab7: while(true) + { + lab8: { + if (!(base.out_grouping(g_v, 97, 252))) + { + break lab8; + } + break golab7; + } + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + I_p2 = base.cursor; + return true; + }; + + /** @return {boolean} */ + function r_postlude() { + var /** number */ among_var; + while(true) + { + var /** number */ v_1 = base.cursor; + lab0: { + base.bra = base.cursor; + among_var = base.find_among(a_0); + if (among_var == 0) + { + break lab0; + } + base.ket = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_from("y")) + { + return false; + } + break; + case 2: + if (!base.slice_from("u")) + { + return false; + } + break; + case 3: + if (!base.slice_from("a")) + { + return false; + } + break; + case 4: + if (!base.slice_from("o")) + { + return false; + } + break; + case 5: + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + break; + } + continue; + } + base.cursor = v_1; + break; + } + return true; + }; + + /** @return {boolean} */ + function r_R1() { + if (!(I_p1 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R2() { + if (!(I_p2 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_standard_suffix() { + var /** number */ among_var; + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + among_var = base.find_among_b(a_1); + if (among_var == 0) + { + break lab0; + } + base.bra = base.cursor; + if (!r_R1()) + { + break lab0; + } + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_del()) + { + return false; + } + var /** number */ v_2 = base.limit - base.cursor; + lab1: { + base.ket = base.cursor; + if (!(base.eq_s_b("s"))) + { + base.cursor = base.limit - v_2; + break lab1; + } + base.bra = base.cursor; + if (!(base.eq_s_b("nis"))) + { + base.cursor = base.limit - v_2; + break lab1; + } + if (!base.slice_del()) + { + return false; + } + } + break; + case 3: + if (!(base.in_grouping_b(g_s_ending, 98, 116))) + { + break lab0; + } + if (!base.slice_del()) + { + return false; + } + break; + } + } + base.cursor = base.limit - v_1; + var /** number */ v_3 = base.limit - base.cursor; + lab2: { + base.ket = base.cursor; + among_var = base.find_among_b(a_2); + if (among_var == 0) + { + break lab2; + } + base.bra = base.cursor; + if (!r_R1()) + { + break lab2; + } + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!(base.in_grouping_b(g_st_ending, 98, 116))) + { + break lab2; + } + { + var /** number */ c1 = base.cursor - 3; + if (c1 < base.limit_backward) + { + break lab2; + } + base.cursor = c1; + } + if (!base.slice_del()) + { + return false; + } + break; + } + } + base.cursor = base.limit - v_3; + var /** number */ v_4 = base.limit - base.cursor; + lab3: { + base.ket = base.cursor; + among_var = base.find_among_b(a_4); + if (among_var == 0) + { + break lab3; + } + base.bra = base.cursor; + if (!r_R2()) + { + break lab3; + } + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + var /** number */ v_5 = base.limit - base.cursor; + lab4: { + base.ket = base.cursor; + if (!(base.eq_s_b("ig"))) + { + base.cursor = base.limit - v_5; + break lab4; + } + base.bra = base.cursor; + { + var /** number */ v_6 = base.limit - base.cursor; + lab5: { + if (!(base.eq_s_b("e"))) + { + break lab5; + } + base.cursor = base.limit - v_5; + break lab4; + } + base.cursor = base.limit - v_6; + } + if (!r_R2()) + { + base.cursor = base.limit - v_5; + break lab4; + } + if (!base.slice_del()) + { + return false; + } + } + break; + case 2: + { + var /** number */ v_7 = base.limit - base.cursor; + lab6: { + if (!(base.eq_s_b("e"))) + { + break lab6; + } + break lab3; + } + base.cursor = base.limit - v_7; + } + if (!base.slice_del()) + { + return false; + } + break; + case 3: + if (!base.slice_del()) + { + return false; + } + var /** number */ v_8 = base.limit - base.cursor; + lab7: { + base.ket = base.cursor; + lab8: { + var /** number */ v_9 = base.limit - base.cursor; + lab9: { + if (!(base.eq_s_b("er"))) + { + break lab9; + } + break lab8; + } + base.cursor = base.limit - v_9; + if (!(base.eq_s_b("en"))) + { + base.cursor = base.limit - v_8; + break lab7; + } + } + base.bra = base.cursor; + if (!r_R1()) + { + base.cursor = base.limit - v_8; + break lab7; + } + if (!base.slice_del()) + { + return false; + } + } + break; + case 4: + if (!base.slice_del()) + { + return false; + } + var /** number */ v_10 = base.limit - base.cursor; + lab10: { + base.ket = base.cursor; + if (base.find_among_b(a_3) == 0) + { + base.cursor = base.limit - v_10; + break lab10; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_10; + break lab10; + } + if (!base.slice_del()) + { + return false; + } + } + break; + } + } + base.cursor = base.limit - v_4; + return true; + }; + + this.stem = /** @return {boolean} */ function() { + var /** number */ v_1 = base.cursor; + r_prelude(); + base.cursor = v_1; + var /** number */ v_2 = base.cursor; + r_mark_regions(); + base.cursor = v_2; + base.limit_backward = base.cursor; base.cursor = base.limit; + r_standard_suffix(); + base.cursor = base.limit_backward; + var /** number */ v_4 = base.cursor; + r_postlude(); + base.cursor = v_4; + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/sphinx/search/non-minified-js/hungarian-stemmer.js b/sphinx/search/non-minified-js/hungarian-stemmer.js new file mode 100644 index 0000000..2c550ac --- /dev/null +++ b/sphinx/search/non-minified-js/hungarian-stemmer.js @@ -0,0 +1,711 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +HungarianStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["cs", -1, -1], + ["dzs", -1, -1], + ["gy", -1, -1], + ["ly", -1, -1], + ["ny", -1, -1], + ["sz", -1, -1], + ["ty", -1, -1], + ["zs", -1, -1] + ]; + + /** @const */ var a_1 = [ + ["\u00E1", -1, 1], + ["\u00E9", -1, 2] + ]; + + /** @const */ var a_2 = [ + ["bb", -1, -1], + ["cc", -1, -1], + ["dd", -1, -1], + ["ff", -1, -1], + ["gg", -1, -1], + ["jj", -1, -1], + ["kk", -1, -1], + ["ll", -1, -1], + ["mm", -1, -1], + ["nn", -1, -1], + ["pp", -1, -1], + ["rr", -1, -1], + ["ccs", -1, -1], + ["ss", -1, -1], + ["zzs", -1, -1], + ["tt", -1, -1], + ["vv", -1, -1], + ["ggy", -1, -1], + ["lly", -1, -1], + ["nny", -1, -1], + ["tty", -1, -1], + ["ssz", -1, -1], + ["zz", -1, -1] + ]; + + /** @const */ var a_3 = [ + ["al", -1, 1], + ["el", -1, 1] + ]; + + /** @const */ var a_4 = [ + ["ba", -1, -1], + ["ra", -1, -1], + ["be", -1, -1], + ["re", -1, -1], + ["ig", -1, -1], + ["nak", -1, -1], + ["nek", -1, -1], + ["val", -1, -1], + ["vel", -1, -1], + ["ul", -1, -1], + ["n\u00E1l", -1, -1], + ["n\u00E9l", -1, -1], + ["b\u00F3l", -1, -1], + ["r\u00F3l", -1, -1], + ["t\u00F3l", -1, -1], + ["\u00FCl", -1, -1], + ["b\u0151l", -1, -1], + ["r\u0151l", -1, -1], + ["t\u0151l", -1, -1], + ["n", -1, -1], + ["an", 19, -1], + ["ban", 20, -1], + ["en", 19, -1], + ["ben", 22, -1], + ["k\u00E9ppen", 22, -1], + ["on", 19, -1], + ["\u00F6n", 19, -1], + ["k\u00E9pp", -1, -1], + ["kor", -1, -1], + ["t", -1, -1], + ["at", 29, -1], + ["et", 29, -1], + ["k\u00E9nt", 29, -1], + ["ank\u00E9nt", 32, -1], + ["enk\u00E9nt", 32, -1], + ["onk\u00E9nt", 32, -1], + ["ot", 29, -1], + ["\u00E9rt", 29, -1], + ["\u00F6t", 29, -1], + ["hez", -1, -1], + ["hoz", -1, -1], + ["h\u00F6z", -1, -1], + ["v\u00E1", -1, -1], + ["v\u00E9", -1, -1] + ]; + + /** @const */ var a_5 = [ + ["\u00E1n", -1, 2], + ["\u00E9n", -1, 1], + ["\u00E1nk\u00E9nt", -1, 2] + ]; + + /** @const */ var a_6 = [ + ["stul", -1, 1], + ["astul", 0, 1], + ["\u00E1stul", 0, 2], + ["st\u00FCl", -1, 1], + ["est\u00FCl", 3, 1], + ["\u00E9st\u00FCl", 3, 3] + ]; + + /** @const */ var a_7 = [ + ["\u00E1", -1, 1], + ["\u00E9", -1, 1] + ]; + + /** @const */ var a_8 = [ + ["k", -1, 3], + ["ak", 0, 3], + ["ek", 0, 3], + ["ok", 0, 3], + ["\u00E1k", 0, 1], + ["\u00E9k", 0, 2], + ["\u00F6k", 0, 3] + ]; + + /** @const */ var a_9 = [ + ["\u00E9i", -1, 1], + ["\u00E1\u00E9i", 0, 3], + ["\u00E9\u00E9i", 0, 2], + ["\u00E9", -1, 1], + ["k\u00E9", 3, 1], + ["ak\u00E9", 4, 1], + ["ek\u00E9", 4, 1], + ["ok\u00E9", 4, 1], + ["\u00E1k\u00E9", 4, 3], + ["\u00E9k\u00E9", 4, 2], + ["\u00F6k\u00E9", 4, 1], + ["\u00E9\u00E9", 3, 2] + ]; + + /** @const */ var a_10 = [ + ["a", -1, 1], + ["ja", 0, 1], + ["d", -1, 1], + ["ad", 2, 1], + ["ed", 2, 1], + ["od", 2, 1], + ["\u00E1d", 2, 2], + ["\u00E9d", 2, 3], + ["\u00F6d", 2, 1], + ["e", -1, 1], + ["je", 9, 1], + ["nk", -1, 1], + ["unk", 11, 1], + ["\u00E1nk", 11, 2], + ["\u00E9nk", 11, 3], + ["\u00FCnk", 11, 1], + ["uk", -1, 1], + ["juk", 16, 1], + ["\u00E1juk", 17, 2], + ["\u00FCk", -1, 1], + ["j\u00FCk", 19, 1], + ["\u00E9j\u00FCk", 20, 3], + ["m", -1, 1], + ["am", 22, 1], + ["em", 22, 1], + ["om", 22, 1], + ["\u00E1m", 22, 2], + ["\u00E9m", 22, 3], + ["o", -1, 1], + ["\u00E1", -1, 2], + ["\u00E9", -1, 3] + ]; + + /** @const */ var a_11 = [ + ["id", -1, 1], + ["aid", 0, 1], + ["jaid", 1, 1], + ["eid", 0, 1], + ["jeid", 3, 1], + ["\u00E1id", 0, 2], + ["\u00E9id", 0, 3], + ["i", -1, 1], + ["ai", 7, 1], + ["jai", 8, 1], + ["ei", 7, 1], + ["jei", 10, 1], + ["\u00E1i", 7, 2], + ["\u00E9i", 7, 3], + ["itek", -1, 1], + ["eitek", 14, 1], + ["jeitek", 15, 1], + ["\u00E9itek", 14, 3], + ["ik", -1, 1], + ["aik", 18, 1], + ["jaik", 19, 1], + ["eik", 18, 1], + ["jeik", 21, 1], + ["\u00E1ik", 18, 2], + ["\u00E9ik", 18, 3], + ["ink", -1, 1], + ["aink", 25, 1], + ["jaink", 26, 1], + ["eink", 25, 1], + ["jeink", 28, 1], + ["\u00E1ink", 25, 2], + ["\u00E9ink", 25, 3], + ["aitok", -1, 1], + ["jaitok", 32, 1], + ["\u00E1itok", -1, 2], + ["im", -1, 1], + ["aim", 35, 1], + ["jaim", 36, 1], + ["eim", 35, 1], + ["jeim", 38, 1], + ["\u00E1im", 35, 2], + ["\u00E9im", 35, 3] + ]; + + /** @const */ var /** Array */ g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 36, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1]; + + var /** number */ I_p1 = 0; + + + /** @return {boolean} */ + function r_mark_regions() { + I_p1 = base.limit; + lab0: { + var /** number */ v_1 = base.cursor; + lab1: { + if (!(base.in_grouping(g_v, 97, 369))) + { + break lab1; + } + golab2: while(true) + { + var /** number */ v_2 = base.cursor; + lab3: { + if (!(base.out_grouping(g_v, 97, 369))) + { + break lab3; + } + base.cursor = v_2; + break golab2; + } + base.cursor = v_2; + if (base.cursor >= base.limit) + { + break lab1; + } + base.cursor++; + } + lab4: { + var /** number */ v_3 = base.cursor; + lab5: { + if (base.find_among(a_0) == 0) + { + break lab5; + } + break lab4; + } + base.cursor = v_3; + if (base.cursor >= base.limit) + { + break lab1; + } + base.cursor++; + } + I_p1 = base.cursor; + break lab0; + } + base.cursor = v_1; + if (!(base.out_grouping(g_v, 97, 369))) + { + return false; + } + golab6: while(true) + { + lab7: { + if (!(base.in_grouping(g_v, 97, 369))) + { + break lab7; + } + break golab6; + } + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + I_p1 = base.cursor; + } + return true; + }; + + /** @return {boolean} */ + function r_R1() { + if (!(I_p1 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_v_ending() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_1); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_from("a")) + { + return false; + } + break; + case 2: + if (!base.slice_from("e")) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_double() { + var /** number */ v_1 = base.limit - base.cursor; + if (base.find_among_b(a_2) == 0) + { + return false; + } + base.cursor = base.limit - v_1; + return true; + }; + + /** @return {boolean} */ + function r_undouble() { + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + base.ket = base.cursor; + { + var /** number */ c1 = base.cursor - 1; + if (c1 < base.limit_backward) + { + return false; + } + base.cursor = c1; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_instrum() { + base.ket = base.cursor; + if (base.find_among_b(a_3) == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + if (!r_double()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + if (!r_undouble()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_case() { + base.ket = base.cursor; + if (base.find_among_b(a_4) == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + if (!r_v_ending()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_case_special() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_5); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_from("e")) + { + return false; + } + break; + case 2: + if (!base.slice_from("a")) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_case_other() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_6); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_from("a")) + { + return false; + } + break; + case 3: + if (!base.slice_from("e")) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_factive() { + base.ket = base.cursor; + if (base.find_among_b(a_7) == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + if (!r_double()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + if (!r_undouble()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_plural() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_8); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_from("a")) + { + return false; + } + break; + case 2: + if (!base.slice_from("e")) + { + return false; + } + break; + case 3: + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_owned() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_9); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_from("e")) + { + return false; + } + break; + case 3: + if (!base.slice_from("a")) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_sing_owner() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_10); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_from("a")) + { + return false; + } + break; + case 3: + if (!base.slice_from("e")) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_plur_owner() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_11); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_from("a")) + { + return false; + } + break; + case 3: + if (!base.slice_from("e")) + { + return false; + } + break; + } + return true; + }; + + this.stem = /** @return {boolean} */ function() { + var /** number */ v_1 = base.cursor; + r_mark_regions(); + base.cursor = v_1; + base.limit_backward = base.cursor; base.cursor = base.limit; + var /** number */ v_2 = base.limit - base.cursor; + r_instrum(); + base.cursor = base.limit - v_2; + var /** number */ v_3 = base.limit - base.cursor; + r_case(); + base.cursor = base.limit - v_3; + var /** number */ v_4 = base.limit - base.cursor; + r_case_special(); + base.cursor = base.limit - v_4; + var /** number */ v_5 = base.limit - base.cursor; + r_case_other(); + base.cursor = base.limit - v_5; + var /** number */ v_6 = base.limit - base.cursor; + r_factive(); + base.cursor = base.limit - v_6; + var /** number */ v_7 = base.limit - base.cursor; + r_owned(); + base.cursor = base.limit - v_7; + var /** number */ v_8 = base.limit - base.cursor; + r_sing_owner(); + base.cursor = base.limit - v_8; + var /** number */ v_9 = base.limit - base.cursor; + r_plur_owner(); + base.cursor = base.limit - v_9; + var /** number */ v_10 = base.limit - base.cursor; + r_plural(); + base.cursor = base.limit - v_10; + base.cursor = base.limit_backward; + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/sphinx/search/non-minified-js/italian-stemmer.js b/sphinx/search/non-minified-js/italian-stemmer.js new file mode 100644 index 0000000..df6ddfd --- /dev/null +++ b/sphinx/search/non-minified-js/italian-stemmer.js @@ -0,0 +1,996 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +ItalianStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["", -1, 7], + ["qu", 0, 6], + ["\u00E1", 0, 1], + ["\u00E9", 0, 2], + ["\u00ED", 0, 3], + ["\u00F3", 0, 4], + ["\u00FA", 0, 5] + ]; + + /** @const */ var a_1 = [ + ["", -1, 3], + ["I", 0, 1], + ["U", 0, 2] + ]; + + /** @const */ var a_2 = [ + ["la", -1, -1], + ["cela", 0, -1], + ["gliela", 0, -1], + ["mela", 0, -1], + ["tela", 0, -1], + ["vela", 0, -1], + ["le", -1, -1], + ["cele", 6, -1], + ["gliele", 6, -1], + ["mele", 6, -1], + ["tele", 6, -1], + ["vele", 6, -1], + ["ne", -1, -1], + ["cene", 12, -1], + ["gliene", 12, -1], + ["mene", 12, -1], + ["sene", 12, -1], + ["tene", 12, -1], + ["vene", 12, -1], + ["ci", -1, -1], + ["li", -1, -1], + ["celi", 20, -1], + ["glieli", 20, -1], + ["meli", 20, -1], + ["teli", 20, -1], + ["veli", 20, -1], + ["gli", 20, -1], + ["mi", -1, -1], + ["si", -1, -1], + ["ti", -1, -1], + ["vi", -1, -1], + ["lo", -1, -1], + ["celo", 31, -1], + ["glielo", 31, -1], + ["melo", 31, -1], + ["telo", 31, -1], + ["velo", 31, -1] + ]; + + /** @const */ var a_3 = [ + ["ando", -1, 1], + ["endo", -1, 1], + ["ar", -1, 2], + ["er", -1, 2], + ["ir", -1, 2] + ]; + + /** @const */ var a_4 = [ + ["ic", -1, -1], + ["abil", -1, -1], + ["os", -1, -1], + ["iv", -1, 1] + ]; + + /** @const */ var a_5 = [ + ["ic", -1, 1], + ["abil", -1, 1], + ["iv", -1, 1] + ]; + + /** @const */ var a_6 = [ + ["ica", -1, 1], + ["logia", -1, 3], + ["osa", -1, 1], + ["ista", -1, 1], + ["iva", -1, 9], + ["anza", -1, 1], + ["enza", -1, 5], + ["ice", -1, 1], + ["atrice", 7, 1], + ["iche", -1, 1], + ["logie", -1, 3], + ["abile", -1, 1], + ["ibile", -1, 1], + ["usione", -1, 4], + ["azione", -1, 2], + ["uzione", -1, 4], + ["atore", -1, 2], + ["ose", -1, 1], + ["ante", -1, 1], + ["mente", -1, 1], + ["amente", 19, 7], + ["iste", -1, 1], + ["ive", -1, 9], + ["anze", -1, 1], + ["enze", -1, 5], + ["ici", -1, 1], + ["atrici", 25, 1], + ["ichi", -1, 1], + ["abili", -1, 1], + ["ibili", -1, 1], + ["ismi", -1, 1], + ["usioni", -1, 4], + ["azioni", -1, 2], + ["uzioni", -1, 4], + ["atori", -1, 2], + ["osi", -1, 1], + ["anti", -1, 1], + ["amenti", -1, 6], + ["imenti", -1, 6], + ["isti", -1, 1], + ["ivi", -1, 9], + ["ico", -1, 1], + ["ismo", -1, 1], + ["oso", -1, 1], + ["amento", -1, 6], + ["imento", -1, 6], + ["ivo", -1, 9], + ["it\u00E0", -1, 8], + ["ist\u00E0", -1, 1], + ["ist\u00E8", -1, 1], + ["ist\u00EC", -1, 1] + ]; + + /** @const */ var a_7 = [ + ["isca", -1, 1], + ["enda", -1, 1], + ["ata", -1, 1], + ["ita", -1, 1], + ["uta", -1, 1], + ["ava", -1, 1], + ["eva", -1, 1], + ["iva", -1, 1], + ["erebbe", -1, 1], + ["irebbe", -1, 1], + ["isce", -1, 1], + ["ende", -1, 1], + ["are", -1, 1], + ["ere", -1, 1], + ["ire", -1, 1], + ["asse", -1, 1], + ["ate", -1, 1], + ["avate", 16, 1], + ["evate", 16, 1], + ["ivate", 16, 1], + ["ete", -1, 1], + ["erete", 20, 1], + ["irete", 20, 1], + ["ite", -1, 1], + ["ereste", -1, 1], + ["ireste", -1, 1], + ["ute", -1, 1], + ["erai", -1, 1], + ["irai", -1, 1], + ["isci", -1, 1], + ["endi", -1, 1], + ["erei", -1, 1], + ["irei", -1, 1], + ["assi", -1, 1], + ["ati", -1, 1], + ["iti", -1, 1], + ["eresti", -1, 1], + ["iresti", -1, 1], + ["uti", -1, 1], + ["avi", -1, 1], + ["evi", -1, 1], + ["ivi", -1, 1], + ["isco", -1, 1], + ["ando", -1, 1], + ["endo", -1, 1], + ["Yamo", -1, 1], + ["iamo", -1, 1], + ["avamo", -1, 1], + ["evamo", -1, 1], + ["ivamo", -1, 1], + ["eremo", -1, 1], + ["iremo", -1, 1], + ["assimo", -1, 1], + ["ammo", -1, 1], + ["emmo", -1, 1], + ["eremmo", 54, 1], + ["iremmo", 54, 1], + ["immo", -1, 1], + ["ano", -1, 1], + ["iscano", 58, 1], + ["avano", 58, 1], + ["evano", 58, 1], + ["ivano", 58, 1], + ["eranno", -1, 1], + ["iranno", -1, 1], + ["ono", -1, 1], + ["iscono", 65, 1], + ["arono", 65, 1], + ["erono", 65, 1], + ["irono", 65, 1], + ["erebbero", -1, 1], + ["irebbero", -1, 1], + ["assero", -1, 1], + ["essero", -1, 1], + ["issero", -1, 1], + ["ato", -1, 1], + ["ito", -1, 1], + ["uto", -1, 1], + ["avo", -1, 1], + ["evo", -1, 1], + ["ivo", -1, 1], + ["ar", -1, 1], + ["ir", -1, 1], + ["er\u00E0", -1, 1], + ["ir\u00E0", -1, 1], + ["er\u00F2", -1, 1], + ["ir\u00F2", -1, 1] + ]; + + /** @const */ var /** Array */ g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2, 1]; + + /** @const */ var /** Array */ g_AEIO = [17, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2]; + + /** @const */ var /** Array */ g_CG = [17]; + + var /** number */ I_p2 = 0; + var /** number */ I_p1 = 0; + var /** number */ I_pV = 0; + + + /** @return {boolean} */ + function r_prelude() { + var /** number */ among_var; + var /** number */ v_1 = base.cursor; + while(true) + { + var /** number */ v_2 = base.cursor; + lab0: { + base.bra = base.cursor; + among_var = base.find_among(a_0); + if (among_var == 0) + { + break lab0; + } + base.ket = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_from("\u00E0")) + { + return false; + } + break; + case 2: + if (!base.slice_from("\u00E8")) + { + return false; + } + break; + case 3: + if (!base.slice_from("\u00EC")) + { + return false; + } + break; + case 4: + if (!base.slice_from("\u00F2")) + { + return false; + } + break; + case 5: + if (!base.slice_from("\u00F9")) + { + return false; + } + break; + case 6: + if (!base.slice_from("qU")) + { + return false; + } + break; + case 7: + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + break; + } + continue; + } + base.cursor = v_2; + break; + } + base.cursor = v_1; + while(true) + { + var /** number */ v_3 = base.cursor; + lab1: { + golab2: while(true) + { + var /** number */ v_4 = base.cursor; + lab3: { + if (!(base.in_grouping(g_v, 97, 249))) + { + break lab3; + } + base.bra = base.cursor; + lab4: { + var /** number */ v_5 = base.cursor; + lab5: { + if (!(base.eq_s("u"))) + { + break lab5; + } + base.ket = base.cursor; + if (!(base.in_grouping(g_v, 97, 249))) + { + break lab5; + } + if (!base.slice_from("U")) + { + return false; + } + break lab4; + } + base.cursor = v_5; + if (!(base.eq_s("i"))) + { + break lab3; + } + base.ket = base.cursor; + if (!(base.in_grouping(g_v, 97, 249))) + { + break lab3; + } + if (!base.slice_from("I")) + { + return false; + } + } + base.cursor = v_4; + break golab2; + } + base.cursor = v_4; + if (base.cursor >= base.limit) + { + break lab1; + } + base.cursor++; + } + continue; + } + base.cursor = v_3; + break; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_regions() { + I_pV = base.limit; + I_p1 = base.limit; + I_p2 = base.limit; + var /** number */ v_1 = base.cursor; + lab0: { + lab1: { + var /** number */ v_2 = base.cursor; + lab2: { + if (!(base.in_grouping(g_v, 97, 249))) + { + break lab2; + } + lab3: { + var /** number */ v_3 = base.cursor; + lab4: { + if (!(base.out_grouping(g_v, 97, 249))) + { + break lab4; + } + golab5: while(true) + { + lab6: { + if (!(base.in_grouping(g_v, 97, 249))) + { + break lab6; + } + break golab5; + } + if (base.cursor >= base.limit) + { + break lab4; + } + base.cursor++; + } + break lab3; + } + base.cursor = v_3; + if (!(base.in_grouping(g_v, 97, 249))) + { + break lab2; + } + golab7: while(true) + { + lab8: { + if (!(base.out_grouping(g_v, 97, 249))) + { + break lab8; + } + break golab7; + } + if (base.cursor >= base.limit) + { + break lab2; + } + base.cursor++; + } + } + break lab1; + } + base.cursor = v_2; + if (!(base.out_grouping(g_v, 97, 249))) + { + break lab0; + } + lab9: { + var /** number */ v_6 = base.cursor; + lab10: { + if (!(base.out_grouping(g_v, 97, 249))) + { + break lab10; + } + golab11: while(true) + { + lab12: { + if (!(base.in_grouping(g_v, 97, 249))) + { + break lab12; + } + break golab11; + } + if (base.cursor >= base.limit) + { + break lab10; + } + base.cursor++; + } + break lab9; + } + base.cursor = v_6; + if (!(base.in_grouping(g_v, 97, 249))) + { + break lab0; + } + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + } + I_pV = base.cursor; + } + base.cursor = v_1; + var /** number */ v_8 = base.cursor; + lab13: { + golab14: while(true) + { + lab15: { + if (!(base.in_grouping(g_v, 97, 249))) + { + break lab15; + } + break golab14; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + golab16: while(true) + { + lab17: { + if (!(base.out_grouping(g_v, 97, 249))) + { + break lab17; + } + break golab16; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + I_p1 = base.cursor; + golab18: while(true) + { + lab19: { + if (!(base.in_grouping(g_v, 97, 249))) + { + break lab19; + } + break golab18; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + golab20: while(true) + { + lab21: { + if (!(base.out_grouping(g_v, 97, 249))) + { + break lab21; + } + break golab20; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + I_p2 = base.cursor; + } + base.cursor = v_8; + return true; + }; + + /** @return {boolean} */ + function r_postlude() { + var /** number */ among_var; + while(true) + { + var /** number */ v_1 = base.cursor; + lab0: { + base.bra = base.cursor; + among_var = base.find_among(a_1); + if (among_var == 0) + { + break lab0; + } + base.ket = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_from("i")) + { + return false; + } + break; + case 2: + if (!base.slice_from("u")) + { + return false; + } + break; + case 3: + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + break; + } + continue; + } + base.cursor = v_1; + break; + } + return true; + }; + + /** @return {boolean} */ + function r_RV() { + if (!(I_pV <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R1() { + if (!(I_p1 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R2() { + if (!(I_p2 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_attached_pronoun() { + var /** number */ among_var; + base.ket = base.cursor; + if (base.find_among_b(a_2) == 0) + { + return false; + } + base.bra = base.cursor; + among_var = base.find_among_b(a_3); + if (among_var == 0) + { + return false; + } + if (!r_RV()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_from("e")) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_standard_suffix() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_6); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + if (!(base.eq_s_b("ic"))) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_1; + break lab0; + } + if (!base.slice_del()) + { + return false; + } + } + break; + case 3: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("log")) + { + return false; + } + break; + case 4: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("u")) + { + return false; + } + break; + case 5: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("ente")) + { + return false; + } + break; + case 6: + if (!r_RV()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 7: + if (!r_R1()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_2 = base.limit - base.cursor; + lab1: { + base.ket = base.cursor; + among_var = base.find_among_b(a_4); + if (among_var == 0) + { + base.cursor = base.limit - v_2; + break lab1; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_2; + break lab1; + } + if (!base.slice_del()) + { + return false; + } + switch (among_var) { + case 1: + base.ket = base.cursor; + if (!(base.eq_s_b("at"))) + { + base.cursor = base.limit - v_2; + break lab1; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_2; + break lab1; + } + if (!base.slice_del()) + { + return false; + } + break; + } + } + break; + case 8: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_3 = base.limit - base.cursor; + lab2: { + base.ket = base.cursor; + if (base.find_among_b(a_5) == 0) + { + base.cursor = base.limit - v_3; + break lab2; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_3; + break lab2; + } + if (!base.slice_del()) + { + return false; + } + } + break; + case 9: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_4 = base.limit - base.cursor; + lab3: { + base.ket = base.cursor; + if (!(base.eq_s_b("at"))) + { + base.cursor = base.limit - v_4; + break lab3; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_4; + break lab3; + } + if (!base.slice_del()) + { + return false; + } + base.ket = base.cursor; + if (!(base.eq_s_b("ic"))) + { + base.cursor = base.limit - v_4; + break lab3; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_4; + break lab3; + } + if (!base.slice_del()) + { + return false; + } + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_verb_suffix() { + if (base.cursor < I_pV) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_pV; + base.ket = base.cursor; + if (base.find_among_b(a_7) == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + base.limit_backward = v_2; + return true; + }; + + /** @return {boolean} */ + function r_vowel_suffix() { + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + if (!(base.in_grouping_b(g_AEIO, 97, 242))) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.bra = base.cursor; + if (!r_RV()) + { + base.cursor = base.limit - v_1; + break lab0; + } + if (!base.slice_del()) + { + return false; + } + base.ket = base.cursor; + if (!(base.eq_s_b("i"))) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.bra = base.cursor; + if (!r_RV()) + { + base.cursor = base.limit - v_1; + break lab0; + } + if (!base.slice_del()) + { + return false; + } + } + var /** number */ v_2 = base.limit - base.cursor; + lab1: { + base.ket = base.cursor; + if (!(base.eq_s_b("h"))) + { + base.cursor = base.limit - v_2; + break lab1; + } + base.bra = base.cursor; + if (!(base.in_grouping_b(g_CG, 99, 103))) + { + base.cursor = base.limit - v_2; + break lab1; + } + if (!r_RV()) + { + base.cursor = base.limit - v_2; + break lab1; + } + if (!base.slice_del()) + { + return false; + } + } + return true; + }; + + this.stem = /** @return {boolean} */ function() { + var /** number */ v_1 = base.cursor; + r_prelude(); + base.cursor = v_1; + r_mark_regions(); + base.limit_backward = base.cursor; base.cursor = base.limit; + var /** number */ v_3 = base.limit - base.cursor; + r_attached_pronoun(); + base.cursor = base.limit - v_3; + var /** number */ v_4 = base.limit - base.cursor; + lab0: { + lab1: { + var /** number */ v_5 = base.limit - base.cursor; + lab2: { + if (!r_standard_suffix()) + { + break lab2; + } + break lab1; + } + base.cursor = base.limit - v_5; + if (!r_verb_suffix()) + { + break lab0; + } + } + } + base.cursor = base.limit - v_4; + var /** number */ v_6 = base.limit - base.cursor; + r_vowel_suffix(); + base.cursor = base.limit - v_6; + base.cursor = base.limit_backward; + var /** number */ v_7 = base.cursor; + r_postlude(); + base.cursor = v_7; + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/sphinx/search/non-minified-js/norwegian-stemmer.js b/sphinx/search/non-minified-js/norwegian-stemmer.js new file mode 100644 index 0000000..e176063 --- /dev/null +++ b/sphinx/search/non-minified-js/norwegian-stemmer.js @@ -0,0 +1,261 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +NorwegianStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["a", -1, 1], + ["e", -1, 1], + ["ede", 1, 1], + ["ande", 1, 1], + ["ende", 1, 1], + ["ane", 1, 1], + ["ene", 1, 1], + ["hetene", 6, 1], + ["erte", 1, 3], + ["en", -1, 1], + ["heten", 9, 1], + ["ar", -1, 1], + ["er", -1, 1], + ["heter", 12, 1], + ["s", -1, 2], + ["as", 14, 1], + ["es", 14, 1], + ["edes", 16, 1], + ["endes", 16, 1], + ["enes", 16, 1], + ["hetenes", 19, 1], + ["ens", 14, 1], + ["hetens", 21, 1], + ["ers", 14, 1], + ["ets", 14, 1], + ["et", -1, 1], + ["het", 25, 1], + ["ert", -1, 3], + ["ast", -1, 1] + ]; + + /** @const */ var a_1 = [ + ["dt", -1, -1], + ["vt", -1, -1] + ]; + + /** @const */ var a_2 = [ + ["leg", -1, 1], + ["eleg", 0, 1], + ["ig", -1, 1], + ["eig", 2, 1], + ["lig", 2, 1], + ["elig", 4, 1], + ["els", -1, 1], + ["lov", -1, 1], + ["elov", 7, 1], + ["slov", 7, 1], + ["hetslov", 9, 1] + ]; + + /** @const */ var /** Array */ g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128]; + + /** @const */ var /** Array */ g_s_ending = [119, 125, 149, 1]; + + var /** number */ I_x = 0; + var /** number */ I_p1 = 0; + + + /** @return {boolean} */ + function r_mark_regions() { + I_p1 = base.limit; + var /** number */ v_1 = base.cursor; + { + var /** number */ c1 = base.cursor + 3; + if (c1 > base.limit) + { + return false; + } + base.cursor = c1; + } + I_x = base.cursor; + base.cursor = v_1; + golab0: while(true) + { + var /** number */ v_2 = base.cursor; + lab1: { + if (!(base.in_grouping(g_v, 97, 248))) + { + break lab1; + } + base.cursor = v_2; + break golab0; + } + base.cursor = v_2; + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + golab2: while(true) + { + lab3: { + if (!(base.out_grouping(g_v, 97, 248))) + { + break lab3; + } + break golab2; + } + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + I_p1 = base.cursor; + lab4: { + if (!(I_p1 < I_x)) + { + break lab4; + } + I_p1 = I_x; + } + return true; + }; + + /** @return {boolean} */ + function r_main_suffix() { + var /** number */ among_var; + if (base.cursor < I_p1) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_p1; + base.ket = base.cursor; + among_var = base.find_among_b(a_0); + if (among_var == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + base.limit_backward = v_2; + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + break; + case 2: + lab0: { + var /** number */ v_3 = base.limit - base.cursor; + lab1: { + if (!(base.in_grouping_b(g_s_ending, 98, 122))) + { + break lab1; + } + break lab0; + } + base.cursor = base.limit - v_3; + if (!(base.eq_s_b("k"))) + { + return false; + } + if (!(base.out_grouping_b(g_v, 97, 248))) + { + return false; + } + } + if (!base.slice_del()) + { + return false; + } + break; + case 3: + if (!base.slice_from("er")) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_consonant_pair() { + var /** number */ v_1 = base.limit - base.cursor; + if (base.cursor < I_p1) + { + return false; + } + var /** number */ v_3 = base.limit_backward; + base.limit_backward = I_p1; + base.ket = base.cursor; + if (base.find_among_b(a_1) == 0) + { + base.limit_backward = v_3; + return false; + } + base.bra = base.cursor; + base.limit_backward = v_3; + base.cursor = base.limit - v_1; + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_other_suffix() { + if (base.cursor < I_p1) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_p1; + base.ket = base.cursor; + if (base.find_among_b(a_2) == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + base.limit_backward = v_2; + if (!base.slice_del()) + { + return false; + } + return true; + }; + + this.stem = /** @return {boolean} */ function() { + var /** number */ v_1 = base.cursor; + r_mark_regions(); + base.cursor = v_1; + base.limit_backward = base.cursor; base.cursor = base.limit; + var /** number */ v_2 = base.limit - base.cursor; + r_main_suffix(); + base.cursor = base.limit - v_2; + var /** number */ v_3 = base.limit - base.cursor; + r_consonant_pair(); + base.cursor = base.limit - v_3; + var /** number */ v_4 = base.limit - base.cursor; + r_other_suffix(); + base.cursor = base.limit - v_4; + base.cursor = base.limit_backward; + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/sphinx/search/non-minified-js/porter-stemmer.js b/sphinx/search/non-minified-js/porter-stemmer.js new file mode 100644 index 0000000..0747d2c --- /dev/null +++ b/sphinx/search/non-minified-js/porter-stemmer.js @@ -0,0 +1,749 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +PorterStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["s", -1, 3], + ["ies", 0, 2], + ["sses", 0, 1], + ["ss", 0, -1] + ]; + + /** @const */ var a_1 = [ + ["", -1, 3], + ["bb", 0, 2], + ["dd", 0, 2], + ["ff", 0, 2], + ["gg", 0, 2], + ["bl", 0, 1], + ["mm", 0, 2], + ["nn", 0, 2], + ["pp", 0, 2], + ["rr", 0, 2], + ["at", 0, 1], + ["tt", 0, 2], + ["iz", 0, 1] + ]; + + /** @const */ var a_2 = [ + ["ed", -1, 2], + ["eed", 0, 1], + ["ing", -1, 2] + ]; + + /** @const */ var a_3 = [ + ["anci", -1, 3], + ["enci", -1, 2], + ["abli", -1, 4], + ["eli", -1, 6], + ["alli", -1, 9], + ["ousli", -1, 11], + ["entli", -1, 5], + ["aliti", -1, 9], + ["biliti", -1, 13], + ["iviti", -1, 12], + ["tional", -1, 1], + ["ational", 10, 8], + ["alism", -1, 9], + ["ation", -1, 8], + ["ization", 13, 7], + ["izer", -1, 7], + ["ator", -1, 8], + ["iveness", -1, 12], + ["fulness", -1, 10], + ["ousness", -1, 11] + ]; + + /** @const */ var a_4 = [ + ["icate", -1, 2], + ["ative", -1, 3], + ["alize", -1, 1], + ["iciti", -1, 2], + ["ical", -1, 2], + ["ful", -1, 3], + ["ness", -1, 3] + ]; + + /** @const */ var a_5 = [ + ["ic", -1, 1], + ["ance", -1, 1], + ["ence", -1, 1], + ["able", -1, 1], + ["ible", -1, 1], + ["ate", -1, 1], + ["ive", -1, 1], + ["ize", -1, 1], + ["iti", -1, 1], + ["al", -1, 1], + ["ism", -1, 1], + ["ion", -1, 2], + ["er", -1, 1], + ["ous", -1, 1], + ["ant", -1, 1], + ["ent", -1, 1], + ["ment", 15, 1], + ["ement", 16, 1], + ["ou", -1, 1] + ]; + + /** @const */ var /** Array */ g_v = [17, 65, 16, 1]; + + /** @const */ var /** Array */ g_v_WXY = [1, 17, 65, 208, 1]; + + var /** boolean */ B_Y_found = false; + var /** number */ I_p2 = 0; + var /** number */ I_p1 = 0; + + + /** @return {boolean} */ + function r_shortv() { + if (!(base.out_grouping_b(g_v_WXY, 89, 121))) + { + return false; + } + if (!(base.in_grouping_b(g_v, 97, 121))) + { + return false; + } + if (!(base.out_grouping_b(g_v, 97, 121))) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R1() { + if (!(I_p1 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R2() { + if (!(I_p2 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_1a() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_0); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_from("ss")) + { + return false; + } + break; + case 2: + if (!base.slice_from("i")) + { + return false; + } + break; + case 3: + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_1b() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_2); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_R1()) + { + return false; + } + if (!base.slice_from("ee")) + { + return false; + } + break; + case 2: + var /** number */ v_1 = base.limit - base.cursor; + golab0: while(true) + { + lab1: { + if (!(base.in_grouping_b(g_v, 97, 121))) + { + break lab1; + } + break golab0; + } + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + } + base.cursor = base.limit - v_1; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_3 = base.limit - base.cursor; + among_var = base.find_among_b(a_1); + if (among_var == 0) + { + return false; + } + base.cursor = base.limit - v_3; + switch (among_var) { + case 1: + { + var /** number */ c1 = base.cursor; + base.insert(base.cursor, base.cursor, "e"); + base.cursor = c1; + } + break; + case 2: + base.ket = base.cursor; + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + break; + case 3: + if (base.cursor != I_p1) + { + return false; + } + var /** number */ v_4 = base.limit - base.cursor; + if (!r_shortv()) + { + return false; + } + base.cursor = base.limit - v_4; + { + var /** number */ c2 = base.cursor; + base.insert(base.cursor, base.cursor, "e"); + base.cursor = c2; + } + break; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_1c() { + base.ket = base.cursor; + lab0: { + var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!(base.eq_s_b("y"))) + { + break lab1; + } + break lab0; + } + base.cursor = base.limit - v_1; + if (!(base.eq_s_b("Y"))) + { + return false; + } + } + base.bra = base.cursor; + golab2: while(true) + { + lab3: { + if (!(base.in_grouping_b(g_v, 97, 121))) + { + break lab3; + } + break golab2; + } + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + } + if (!base.slice_from("i")) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_2() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_3); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_from("tion")) + { + return false; + } + break; + case 2: + if (!base.slice_from("ence")) + { + return false; + } + break; + case 3: + if (!base.slice_from("ance")) + { + return false; + } + break; + case 4: + if (!base.slice_from("able")) + { + return false; + } + break; + case 5: + if (!base.slice_from("ent")) + { + return false; + } + break; + case 6: + if (!base.slice_from("e")) + { + return false; + } + break; + case 7: + if (!base.slice_from("ize")) + { + return false; + } + break; + case 8: + if (!base.slice_from("ate")) + { + return false; + } + break; + case 9: + if (!base.slice_from("al")) + { + return false; + } + break; + case 10: + if (!base.slice_from("ful")) + { + return false; + } + break; + case 11: + if (!base.slice_from("ous")) + { + return false; + } + break; + case 12: + if (!base.slice_from("ive")) + { + return false; + } + break; + case 13: + if (!base.slice_from("ble")) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_3() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_4); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_from("al")) + { + return false; + } + break; + case 2: + if (!base.slice_from("ic")) + { + return false; + } + break; + case 3: + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_4() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_5); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R2()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + break; + case 2: + lab0: { + var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!(base.eq_s_b("s"))) + { + break lab1; + } + break lab0; + } + base.cursor = base.limit - v_1; + if (!(base.eq_s_b("t"))) + { + return false; + } + } + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_5a() { + base.ket = base.cursor; + if (!(base.eq_s_b("e"))) + { + return false; + } + base.bra = base.cursor; + lab0: { + var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!r_R2()) + { + break lab1; + } + break lab0; + } + base.cursor = base.limit - v_1; + if (!r_R1()) + { + return false; + } + { + var /** number */ v_2 = base.limit - base.cursor; + lab2: { + if (!r_shortv()) + { + break lab2; + } + return false; + } + base.cursor = base.limit - v_2; + } + } + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_5b() { + base.ket = base.cursor; + if (!(base.eq_s_b("l"))) + { + return false; + } + base.bra = base.cursor; + if (!r_R2()) + { + return false; + } + if (!(base.eq_s_b("l"))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + return true; + }; + + this.stem = /** @return {boolean} */ function() { + B_Y_found = false; + var /** number */ v_1 = base.cursor; + lab0: { + base.bra = base.cursor; + if (!(base.eq_s("y"))) + { + break lab0; + } + base.ket = base.cursor; + if (!base.slice_from("Y")) + { + return false; + } + B_Y_found = true; + } + base.cursor = v_1; + var /** number */ v_2 = base.cursor; + lab1: { + while(true) + { + var /** number */ v_3 = base.cursor; + lab2: { + golab3: while(true) + { + var /** number */ v_4 = base.cursor; + lab4: { + if (!(base.in_grouping(g_v, 97, 121))) + { + break lab4; + } + base.bra = base.cursor; + if (!(base.eq_s("y"))) + { + break lab4; + } + base.ket = base.cursor; + base.cursor = v_4; + break golab3; + } + base.cursor = v_4; + if (base.cursor >= base.limit) + { + break lab2; + } + base.cursor++; + } + if (!base.slice_from("Y")) + { + return false; + } + B_Y_found = true; + continue; + } + base.cursor = v_3; + break; + } + } + base.cursor = v_2; + I_p1 = base.limit; + I_p2 = base.limit; + var /** number */ v_5 = base.cursor; + lab5: { + golab6: while(true) + { + lab7: { + if (!(base.in_grouping(g_v, 97, 121))) + { + break lab7; + } + break golab6; + } + if (base.cursor >= base.limit) + { + break lab5; + } + base.cursor++; + } + golab8: while(true) + { + lab9: { + if (!(base.out_grouping(g_v, 97, 121))) + { + break lab9; + } + break golab8; + } + if (base.cursor >= base.limit) + { + break lab5; + } + base.cursor++; + } + I_p1 = base.cursor; + golab10: while(true) + { + lab11: { + if (!(base.in_grouping(g_v, 97, 121))) + { + break lab11; + } + break golab10; + } + if (base.cursor >= base.limit) + { + break lab5; + } + base.cursor++; + } + golab12: while(true) + { + lab13: { + if (!(base.out_grouping(g_v, 97, 121))) + { + break lab13; + } + break golab12; + } + if (base.cursor >= base.limit) + { + break lab5; + } + base.cursor++; + } + I_p2 = base.cursor; + } + base.cursor = v_5; + base.limit_backward = base.cursor; base.cursor = base.limit; + var /** number */ v_10 = base.limit - base.cursor; + r_Step_1a(); + base.cursor = base.limit - v_10; + var /** number */ v_11 = base.limit - base.cursor; + r_Step_1b(); + base.cursor = base.limit - v_11; + var /** number */ v_12 = base.limit - base.cursor; + r_Step_1c(); + base.cursor = base.limit - v_12; + var /** number */ v_13 = base.limit - base.cursor; + r_Step_2(); + base.cursor = base.limit - v_13; + var /** number */ v_14 = base.limit - base.cursor; + r_Step_3(); + base.cursor = base.limit - v_14; + var /** number */ v_15 = base.limit - base.cursor; + r_Step_4(); + base.cursor = base.limit - v_15; + var /** number */ v_16 = base.limit - base.cursor; + r_Step_5a(); + base.cursor = base.limit - v_16; + var /** number */ v_17 = base.limit - base.cursor; + r_Step_5b(); + base.cursor = base.limit - v_17; + base.cursor = base.limit_backward; + var /** number */ v_18 = base.cursor; + lab14: { + if (!B_Y_found) + { + break lab14; + } + while(true) + { + var /** number */ v_19 = base.cursor; + lab15: { + golab16: while(true) + { + var /** number */ v_20 = base.cursor; + lab17: { + base.bra = base.cursor; + if (!(base.eq_s("Y"))) + { + break lab17; + } + base.ket = base.cursor; + base.cursor = v_20; + break golab16; + } + base.cursor = v_20; + if (base.cursor >= base.limit) + { + break lab15; + } + base.cursor++; + } + if (!base.slice_from("y")) + { + return false; + } + continue; + } + base.cursor = v_19; + break; + } + } + base.cursor = v_18; + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/sphinx/search/non-minified-js/portuguese-stemmer.js b/sphinx/search/non-minified-js/portuguese-stemmer.js new file mode 100644 index 0000000..662b976 --- /dev/null +++ b/sphinx/search/non-minified-js/portuguese-stemmer.js @@ -0,0 +1,914 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +PortugueseStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["", -1, 3], + ["\u00E3", 0, 1], + ["\u00F5", 0, 2] + ]; + + /** @const */ var a_1 = [ + ["", -1, 3], + ["a~", 0, 1], + ["o~", 0, 2] + ]; + + /** @const */ var a_2 = [ + ["ic", -1, -1], + ["ad", -1, -1], + ["os", -1, -1], + ["iv", -1, 1] + ]; + + /** @const */ var a_3 = [ + ["ante", -1, 1], + ["avel", -1, 1], + ["\u00EDvel", -1, 1] + ]; + + /** @const */ var a_4 = [ + ["ic", -1, 1], + ["abil", -1, 1], + ["iv", -1, 1] + ]; + + /** @const */ var a_5 = [ + ["ica", -1, 1], + ["\u00E2ncia", -1, 1], + ["\u00EAncia", -1, 4], + ["logia", -1, 2], + ["ira", -1, 9], + ["adora", -1, 1], + ["osa", -1, 1], + ["ista", -1, 1], + ["iva", -1, 8], + ["eza", -1, 1], + ["idade", -1, 7], + ["ante", -1, 1], + ["mente", -1, 6], + ["amente", 12, 5], + ["\u00E1vel", -1, 1], + ["\u00EDvel", -1, 1], + ["ico", -1, 1], + ["ismo", -1, 1], + ["oso", -1, 1], + ["amento", -1, 1], + ["imento", -1, 1], + ["ivo", -1, 8], + ["a\u00E7a~o", -1, 1], + ["u\u00E7a~o", -1, 3], + ["ador", -1, 1], + ["icas", -1, 1], + ["\u00EAncias", -1, 4], + ["logias", -1, 2], + ["iras", -1, 9], + ["adoras", -1, 1], + ["osas", -1, 1], + ["istas", -1, 1], + ["ivas", -1, 8], + ["ezas", -1, 1], + ["idades", -1, 7], + ["adores", -1, 1], + ["antes", -1, 1], + ["a\u00E7o~es", -1, 1], + ["u\u00E7o~es", -1, 3], + ["icos", -1, 1], + ["ismos", -1, 1], + ["osos", -1, 1], + ["amentos", -1, 1], + ["imentos", -1, 1], + ["ivos", -1, 8] + ]; + + /** @const */ var a_6 = [ + ["ada", -1, 1], + ["ida", -1, 1], + ["ia", -1, 1], + ["aria", 2, 1], + ["eria", 2, 1], + ["iria", 2, 1], + ["ara", -1, 1], + ["era", -1, 1], + ["ira", -1, 1], + ["ava", -1, 1], + ["asse", -1, 1], + ["esse", -1, 1], + ["isse", -1, 1], + ["aste", -1, 1], + ["este", -1, 1], + ["iste", -1, 1], + ["ei", -1, 1], + ["arei", 16, 1], + ["erei", 16, 1], + ["irei", 16, 1], + ["am", -1, 1], + ["iam", 20, 1], + ["ariam", 21, 1], + ["eriam", 21, 1], + ["iriam", 21, 1], + ["aram", 20, 1], + ["eram", 20, 1], + ["iram", 20, 1], + ["avam", 20, 1], + ["em", -1, 1], + ["arem", 29, 1], + ["erem", 29, 1], + ["irem", 29, 1], + ["assem", 29, 1], + ["essem", 29, 1], + ["issem", 29, 1], + ["ado", -1, 1], + ["ido", -1, 1], + ["ando", -1, 1], + ["endo", -1, 1], + ["indo", -1, 1], + ["ara~o", -1, 1], + ["era~o", -1, 1], + ["ira~o", -1, 1], + ["ar", -1, 1], + ["er", -1, 1], + ["ir", -1, 1], + ["as", -1, 1], + ["adas", 47, 1], + ["idas", 47, 1], + ["ias", 47, 1], + ["arias", 50, 1], + ["erias", 50, 1], + ["irias", 50, 1], + ["aras", 47, 1], + ["eras", 47, 1], + ["iras", 47, 1], + ["avas", 47, 1], + ["es", -1, 1], + ["ardes", 58, 1], + ["erdes", 58, 1], + ["irdes", 58, 1], + ["ares", 58, 1], + ["eres", 58, 1], + ["ires", 58, 1], + ["asses", 58, 1], + ["esses", 58, 1], + ["isses", 58, 1], + ["astes", 58, 1], + ["estes", 58, 1], + ["istes", 58, 1], + ["is", -1, 1], + ["ais", 71, 1], + ["eis", 71, 1], + ["areis", 73, 1], + ["ereis", 73, 1], + ["ireis", 73, 1], + ["\u00E1reis", 73, 1], + ["\u00E9reis", 73, 1], + ["\u00EDreis", 73, 1], + ["\u00E1sseis", 73, 1], + ["\u00E9sseis", 73, 1], + ["\u00EDsseis", 73, 1], + ["\u00E1veis", 73, 1], + ["\u00EDeis", 73, 1], + ["ar\u00EDeis", 84, 1], + ["er\u00EDeis", 84, 1], + ["ir\u00EDeis", 84, 1], + ["ados", -1, 1], + ["idos", -1, 1], + ["amos", -1, 1], + ["\u00E1ramos", 90, 1], + ["\u00E9ramos", 90, 1], + ["\u00EDramos", 90, 1], + ["\u00E1vamos", 90, 1], + ["\u00EDamos", 90, 1], + ["ar\u00EDamos", 95, 1], + ["er\u00EDamos", 95, 1], + ["ir\u00EDamos", 95, 1], + ["emos", -1, 1], + ["aremos", 99, 1], + ["eremos", 99, 1], + ["iremos", 99, 1], + ["\u00E1ssemos", 99, 1], + ["\u00EAssemos", 99, 1], + ["\u00EDssemos", 99, 1], + ["imos", -1, 1], + ["armos", -1, 1], + ["ermos", -1, 1], + ["irmos", -1, 1], + ["\u00E1mos", -1, 1], + ["ar\u00E1s", -1, 1], + ["er\u00E1s", -1, 1], + ["ir\u00E1s", -1, 1], + ["eu", -1, 1], + ["iu", -1, 1], + ["ou", -1, 1], + ["ar\u00E1", -1, 1], + ["er\u00E1", -1, 1], + ["ir\u00E1", -1, 1] + ]; + + /** @const */ var a_7 = [ + ["a", -1, 1], + ["i", -1, 1], + ["o", -1, 1], + ["os", -1, 1], + ["\u00E1", -1, 1], + ["\u00ED", -1, 1], + ["\u00F3", -1, 1] + ]; + + /** @const */ var a_8 = [ + ["e", -1, 1], + ["\u00E7", -1, 2], + ["\u00E9", -1, 1], + ["\u00EA", -1, 1] + ]; + + /** @const */ var /** Array */ g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 12, 2]; + + var /** number */ I_p2 = 0; + var /** number */ I_p1 = 0; + var /** number */ I_pV = 0; + + + /** @return {boolean} */ + function r_prelude() { + var /** number */ among_var; + while(true) + { + var /** number */ v_1 = base.cursor; + lab0: { + base.bra = base.cursor; + among_var = base.find_among(a_0); + if (among_var == 0) + { + break lab0; + } + base.ket = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_from("a~")) + { + return false; + } + break; + case 2: + if (!base.slice_from("o~")) + { + return false; + } + break; + case 3: + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + break; + } + continue; + } + base.cursor = v_1; + break; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_regions() { + I_pV = base.limit; + I_p1 = base.limit; + I_p2 = base.limit; + var /** number */ v_1 = base.cursor; + lab0: { + lab1: { + var /** number */ v_2 = base.cursor; + lab2: { + if (!(base.in_grouping(g_v, 97, 250))) + { + break lab2; + } + lab3: { + var /** number */ v_3 = base.cursor; + lab4: { + if (!(base.out_grouping(g_v, 97, 250))) + { + break lab4; + } + golab5: while(true) + { + lab6: { + if (!(base.in_grouping(g_v, 97, 250))) + { + break lab6; + } + break golab5; + } + if (base.cursor >= base.limit) + { + break lab4; + } + base.cursor++; + } + break lab3; + } + base.cursor = v_3; + if (!(base.in_grouping(g_v, 97, 250))) + { + break lab2; + } + golab7: while(true) + { + lab8: { + if (!(base.out_grouping(g_v, 97, 250))) + { + break lab8; + } + break golab7; + } + if (base.cursor >= base.limit) + { + break lab2; + } + base.cursor++; + } + } + break lab1; + } + base.cursor = v_2; + if (!(base.out_grouping(g_v, 97, 250))) + { + break lab0; + } + lab9: { + var /** number */ v_6 = base.cursor; + lab10: { + if (!(base.out_grouping(g_v, 97, 250))) + { + break lab10; + } + golab11: while(true) + { + lab12: { + if (!(base.in_grouping(g_v, 97, 250))) + { + break lab12; + } + break golab11; + } + if (base.cursor >= base.limit) + { + break lab10; + } + base.cursor++; + } + break lab9; + } + base.cursor = v_6; + if (!(base.in_grouping(g_v, 97, 250))) + { + break lab0; + } + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + } + I_pV = base.cursor; + } + base.cursor = v_1; + var /** number */ v_8 = base.cursor; + lab13: { + golab14: while(true) + { + lab15: { + if (!(base.in_grouping(g_v, 97, 250))) + { + break lab15; + } + break golab14; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + golab16: while(true) + { + lab17: { + if (!(base.out_grouping(g_v, 97, 250))) + { + break lab17; + } + break golab16; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + I_p1 = base.cursor; + golab18: while(true) + { + lab19: { + if (!(base.in_grouping(g_v, 97, 250))) + { + break lab19; + } + break golab18; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + golab20: while(true) + { + lab21: { + if (!(base.out_grouping(g_v, 97, 250))) + { + break lab21; + } + break golab20; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + I_p2 = base.cursor; + } + base.cursor = v_8; + return true; + }; + + /** @return {boolean} */ + function r_postlude() { + var /** number */ among_var; + while(true) + { + var /** number */ v_1 = base.cursor; + lab0: { + base.bra = base.cursor; + among_var = base.find_among(a_1); + if (among_var == 0) + { + break lab0; + } + base.ket = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_from("\u00E3")) + { + return false; + } + break; + case 2: + if (!base.slice_from("\u00F5")) + { + return false; + } + break; + case 3: + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + break; + } + continue; + } + base.cursor = v_1; + break; + } + return true; + }; + + /** @return {boolean} */ + function r_RV() { + if (!(I_pV <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R1() { + if (!(I_p1 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R2() { + if (!(I_p2 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_standard_suffix() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_5); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("log")) + { + return false; + } + break; + case 3: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("u")) + { + return false; + } + break; + case 4: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("ente")) + { + return false; + } + break; + case 5: + if (!r_R1()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + among_var = base.find_among_b(a_2); + if (among_var == 0) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_1; + break lab0; + } + if (!base.slice_del()) + { + return false; + } + switch (among_var) { + case 1: + base.ket = base.cursor; + if (!(base.eq_s_b("at"))) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_1; + break lab0; + } + if (!base.slice_del()) + { + return false; + } + break; + } + } + break; + case 6: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_2 = base.limit - base.cursor; + lab1: { + base.ket = base.cursor; + if (base.find_among_b(a_3) == 0) + { + base.cursor = base.limit - v_2; + break lab1; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_2; + break lab1; + } + if (!base.slice_del()) + { + return false; + } + } + break; + case 7: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_3 = base.limit - base.cursor; + lab2: { + base.ket = base.cursor; + if (base.find_among_b(a_4) == 0) + { + base.cursor = base.limit - v_3; + break lab2; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_3; + break lab2; + } + if (!base.slice_del()) + { + return false; + } + } + break; + case 8: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_4 = base.limit - base.cursor; + lab3: { + base.ket = base.cursor; + if (!(base.eq_s_b("at"))) + { + base.cursor = base.limit - v_4; + break lab3; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_4; + break lab3; + } + if (!base.slice_del()) + { + return false; + } + } + break; + case 9: + if (!r_RV()) + { + return false; + } + if (!(base.eq_s_b("e"))) + { + return false; + } + if (!base.slice_from("ir")) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_verb_suffix() { + if (base.cursor < I_pV) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_pV; + base.ket = base.cursor; + if (base.find_among_b(a_6) == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + base.limit_backward = v_2; + return true; + }; + + /** @return {boolean} */ + function r_residual_suffix() { + base.ket = base.cursor; + if (base.find_among_b(a_7) == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_RV()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_residual_form() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_8); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_RV()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + base.ket = base.cursor; + lab0: { + var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!(base.eq_s_b("u"))) + { + break lab1; + } + base.bra = base.cursor; + var /** number */ v_2 = base.limit - base.cursor; + if (!(base.eq_s_b("g"))) + { + break lab1; + } + base.cursor = base.limit - v_2; + break lab0; + } + base.cursor = base.limit - v_1; + if (!(base.eq_s_b("i"))) + { + return false; + } + base.bra = base.cursor; + var /** number */ v_3 = base.limit - base.cursor; + if (!(base.eq_s_b("c"))) + { + return false; + } + base.cursor = base.limit - v_3; + } + if (!r_RV()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_from("c")) + { + return false; + } + break; + } + return true; + }; + + this.stem = /** @return {boolean} */ function() { + var /** number */ v_1 = base.cursor; + r_prelude(); + base.cursor = v_1; + r_mark_regions(); + base.limit_backward = base.cursor; base.cursor = base.limit; + var /** number */ v_3 = base.limit - base.cursor; + lab0: { + lab1: { + var /** number */ v_4 = base.limit - base.cursor; + lab2: { + var /** number */ v_5 = base.limit - base.cursor; + lab3: { + var /** number */ v_6 = base.limit - base.cursor; + lab4: { + if (!r_standard_suffix()) + { + break lab4; + } + break lab3; + } + base.cursor = base.limit - v_6; + if (!r_verb_suffix()) + { + break lab2; + } + } + base.cursor = base.limit - v_5; + var /** number */ v_7 = base.limit - base.cursor; + lab5: { + base.ket = base.cursor; + if (!(base.eq_s_b("i"))) + { + break lab5; + } + base.bra = base.cursor; + var /** number */ v_8 = base.limit - base.cursor; + if (!(base.eq_s_b("c"))) + { + break lab5; + } + base.cursor = base.limit - v_8; + if (!r_RV()) + { + break lab5; + } + if (!base.slice_del()) + { + return false; + } + } + base.cursor = base.limit - v_7; + break lab1; + } + base.cursor = base.limit - v_4; + if (!r_residual_suffix()) + { + break lab0; + } + } + } + base.cursor = base.limit - v_3; + var /** number */ v_9 = base.limit - base.cursor; + r_residual_form(); + base.cursor = base.limit - v_9; + base.cursor = base.limit_backward; + var /** number */ v_10 = base.cursor; + r_postlude(); + base.cursor = v_10; + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/sphinx/search/non-minified-js/romanian-stemmer.js b/sphinx/search/non-minified-js/romanian-stemmer.js new file mode 100644 index 0000000..67538f1 --- /dev/null +++ b/sphinx/search/non-minified-js/romanian-stemmer.js @@ -0,0 +1,872 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +RomanianStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["", -1, 3], + ["I", 0, 1], + ["U", 0, 2] + ]; + + /** @const */ var a_1 = [ + ["ea", -1, 3], + ["a\u0163ia", -1, 7], + ["aua", -1, 2], + ["iua", -1, 4], + ["a\u0163ie", -1, 7], + ["ele", -1, 3], + ["ile", -1, 5], + ["iile", 6, 4], + ["iei", -1, 4], + ["atei", -1, 6], + ["ii", -1, 4], + ["ului", -1, 1], + ["ul", -1, 1], + ["elor", -1, 3], + ["ilor", -1, 4], + ["iilor", 14, 4] + ]; + + /** @const */ var a_2 = [ + ["icala", -1, 4], + ["iciva", -1, 4], + ["ativa", -1, 5], + ["itiva", -1, 6], + ["icale", -1, 4], + ["a\u0163iune", -1, 5], + ["i\u0163iune", -1, 6], + ["atoare", -1, 5], + ["itoare", -1, 6], + ["\u0103toare", -1, 5], + ["icitate", -1, 4], + ["abilitate", -1, 1], + ["ibilitate", -1, 2], + ["ivitate", -1, 3], + ["icive", -1, 4], + ["ative", -1, 5], + ["itive", -1, 6], + ["icali", -1, 4], + ["atori", -1, 5], + ["icatori", 18, 4], + ["itori", -1, 6], + ["\u0103tori", -1, 5], + ["icitati", -1, 4], + ["abilitati", -1, 1], + ["ivitati", -1, 3], + ["icivi", -1, 4], + ["ativi", -1, 5], + ["itivi", -1, 6], + ["icit\u0103i", -1, 4], + ["abilit\u0103i", -1, 1], + ["ivit\u0103i", -1, 3], + ["icit\u0103\u0163i", -1, 4], + ["abilit\u0103\u0163i", -1, 1], + ["ivit\u0103\u0163i", -1, 3], + ["ical", -1, 4], + ["ator", -1, 5], + ["icator", 35, 4], + ["itor", -1, 6], + ["\u0103tor", -1, 5], + ["iciv", -1, 4], + ["ativ", -1, 5], + ["itiv", -1, 6], + ["ical\u0103", -1, 4], + ["iciv\u0103", -1, 4], + ["ativ\u0103", -1, 5], + ["itiv\u0103", -1, 6] + ]; + + /** @const */ var a_3 = [ + ["ica", -1, 1], + ["abila", -1, 1], + ["ibila", -1, 1], + ["oasa", -1, 1], + ["ata", -1, 1], + ["ita", -1, 1], + ["anta", -1, 1], + ["ista", -1, 3], + ["uta", -1, 1], + ["iva", -1, 1], + ["ic", -1, 1], + ["ice", -1, 1], + ["abile", -1, 1], + ["ibile", -1, 1], + ["isme", -1, 3], + ["iune", -1, 2], + ["oase", -1, 1], + ["ate", -1, 1], + ["itate", 17, 1], + ["ite", -1, 1], + ["ante", -1, 1], + ["iste", -1, 3], + ["ute", -1, 1], + ["ive", -1, 1], + ["ici", -1, 1], + ["abili", -1, 1], + ["ibili", -1, 1], + ["iuni", -1, 2], + ["atori", -1, 1], + ["osi", -1, 1], + ["ati", -1, 1], + ["itati", 30, 1], + ["iti", -1, 1], + ["anti", -1, 1], + ["isti", -1, 3], + ["uti", -1, 1], + ["i\u015Fti", -1, 3], + ["ivi", -1, 1], + ["it\u0103i", -1, 1], + ["o\u015Fi", -1, 1], + ["it\u0103\u0163i", -1, 1], + ["abil", -1, 1], + ["ibil", -1, 1], + ["ism", -1, 3], + ["ator", -1, 1], + ["os", -1, 1], + ["at", -1, 1], + ["it", -1, 1], + ["ant", -1, 1], + ["ist", -1, 3], + ["ut", -1, 1], + ["iv", -1, 1], + ["ic\u0103", -1, 1], + ["abil\u0103", -1, 1], + ["ibil\u0103", -1, 1], + ["oas\u0103", -1, 1], + ["at\u0103", -1, 1], + ["it\u0103", -1, 1], + ["ant\u0103", -1, 1], + ["ist\u0103", -1, 3], + ["ut\u0103", -1, 1], + ["iv\u0103", -1, 1] + ]; + + /** @const */ var a_4 = [ + ["ea", -1, 1], + ["ia", -1, 1], + ["esc", -1, 1], + ["\u0103sc", -1, 1], + ["ind", -1, 1], + ["\u00E2nd", -1, 1], + ["are", -1, 1], + ["ere", -1, 1], + ["ire", -1, 1], + ["\u00E2re", -1, 1], + ["se", -1, 2], + ["ase", 10, 1], + ["sese", 10, 2], + ["ise", 10, 1], + ["use", 10, 1], + ["\u00E2se", 10, 1], + ["e\u015Fte", -1, 1], + ["\u0103\u015Fte", -1, 1], + ["eze", -1, 1], + ["ai", -1, 1], + ["eai", 19, 1], + ["iai", 19, 1], + ["sei", -1, 2], + ["e\u015Fti", -1, 1], + ["\u0103\u015Fti", -1, 1], + ["ui", -1, 1], + ["ezi", -1, 1], + ["\u00E2i", -1, 1], + ["a\u015Fi", -1, 1], + ["se\u015Fi", -1, 2], + ["ase\u015Fi", 29, 1], + ["sese\u015Fi", 29, 2], + ["ise\u015Fi", 29, 1], + ["use\u015Fi", 29, 1], + ["\u00E2se\u015Fi", 29, 1], + ["i\u015Fi", -1, 1], + ["u\u015Fi", -1, 1], + ["\u00E2\u015Fi", -1, 1], + ["a\u0163i", -1, 2], + ["ea\u0163i", 38, 1], + ["ia\u0163i", 38, 1], + ["e\u0163i", -1, 2], + ["i\u0163i", -1, 2], + ["\u00E2\u0163i", -1, 2], + ["ar\u0103\u0163i", -1, 1], + ["ser\u0103\u0163i", -1, 2], + ["aser\u0103\u0163i", 45, 1], + ["seser\u0103\u0163i", 45, 2], + ["iser\u0103\u0163i", 45, 1], + ["user\u0103\u0163i", 45, 1], + ["\u00E2ser\u0103\u0163i", 45, 1], + ["ir\u0103\u0163i", -1, 1], + ["ur\u0103\u0163i", -1, 1], + ["\u00E2r\u0103\u0163i", -1, 1], + ["am", -1, 1], + ["eam", 54, 1], + ["iam", 54, 1], + ["em", -1, 2], + ["asem", 57, 1], + ["sesem", 57, 2], + ["isem", 57, 1], + ["usem", 57, 1], + ["\u00E2sem", 57, 1], + ["im", -1, 2], + ["\u00E2m", -1, 2], + ["\u0103m", -1, 2], + ["ar\u0103m", 65, 1], + ["ser\u0103m", 65, 2], + ["aser\u0103m", 67, 1], + ["seser\u0103m", 67, 2], + ["iser\u0103m", 67, 1], + ["user\u0103m", 67, 1], + ["\u00E2ser\u0103m", 67, 1], + ["ir\u0103m", 65, 1], + ["ur\u0103m", 65, 1], + ["\u00E2r\u0103m", 65, 1], + ["au", -1, 1], + ["eau", 76, 1], + ["iau", 76, 1], + ["indu", -1, 1], + ["\u00E2ndu", -1, 1], + ["ez", -1, 1], + ["easc\u0103", -1, 1], + ["ar\u0103", -1, 1], + ["ser\u0103", -1, 2], + ["aser\u0103", 84, 1], + ["seser\u0103", 84, 2], + ["iser\u0103", 84, 1], + ["user\u0103", 84, 1], + ["\u00E2ser\u0103", 84, 1], + ["ir\u0103", -1, 1], + ["ur\u0103", -1, 1], + ["\u00E2r\u0103", -1, 1], + ["eaz\u0103", -1, 1] + ]; + + /** @const */ var a_5 = [ + ["a", -1, 1], + ["e", -1, 1], + ["ie", 1, 1], + ["i", -1, 1], + ["\u0103", -1, 1] + ]; + + /** @const */ var /** Array */ g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 32, 0, 0, 4]; + + var /** boolean */ B_standard_suffix_removed = false; + var /** number */ I_p2 = 0; + var /** number */ I_p1 = 0; + var /** number */ I_pV = 0; + + + /** @return {boolean} */ + function r_prelude() { + while(true) + { + var /** number */ v_1 = base.cursor; + lab0: { + golab1: while(true) + { + var /** number */ v_2 = base.cursor; + lab2: { + if (!(base.in_grouping(g_v, 97, 259))) + { + break lab2; + } + base.bra = base.cursor; + lab3: { + var /** number */ v_3 = base.cursor; + lab4: { + if (!(base.eq_s("u"))) + { + break lab4; + } + base.ket = base.cursor; + if (!(base.in_grouping(g_v, 97, 259))) + { + break lab4; + } + if (!base.slice_from("U")) + { + return false; + } + break lab3; + } + base.cursor = v_3; + if (!(base.eq_s("i"))) + { + break lab2; + } + base.ket = base.cursor; + if (!(base.in_grouping(g_v, 97, 259))) + { + break lab2; + } + if (!base.slice_from("I")) + { + return false; + } + } + base.cursor = v_2; + break golab1; + } + base.cursor = v_2; + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + continue; + } + base.cursor = v_1; + break; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_regions() { + I_pV = base.limit; + I_p1 = base.limit; + I_p2 = base.limit; + var /** number */ v_1 = base.cursor; + lab0: { + lab1: { + var /** number */ v_2 = base.cursor; + lab2: { + if (!(base.in_grouping(g_v, 97, 259))) + { + break lab2; + } + lab3: { + var /** number */ v_3 = base.cursor; + lab4: { + if (!(base.out_grouping(g_v, 97, 259))) + { + break lab4; + } + golab5: while(true) + { + lab6: { + if (!(base.in_grouping(g_v, 97, 259))) + { + break lab6; + } + break golab5; + } + if (base.cursor >= base.limit) + { + break lab4; + } + base.cursor++; + } + break lab3; + } + base.cursor = v_3; + if (!(base.in_grouping(g_v, 97, 259))) + { + break lab2; + } + golab7: while(true) + { + lab8: { + if (!(base.out_grouping(g_v, 97, 259))) + { + break lab8; + } + break golab7; + } + if (base.cursor >= base.limit) + { + break lab2; + } + base.cursor++; + } + } + break lab1; + } + base.cursor = v_2; + if (!(base.out_grouping(g_v, 97, 259))) + { + break lab0; + } + lab9: { + var /** number */ v_6 = base.cursor; + lab10: { + if (!(base.out_grouping(g_v, 97, 259))) + { + break lab10; + } + golab11: while(true) + { + lab12: { + if (!(base.in_grouping(g_v, 97, 259))) + { + break lab12; + } + break golab11; + } + if (base.cursor >= base.limit) + { + break lab10; + } + base.cursor++; + } + break lab9; + } + base.cursor = v_6; + if (!(base.in_grouping(g_v, 97, 259))) + { + break lab0; + } + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + } + I_pV = base.cursor; + } + base.cursor = v_1; + var /** number */ v_8 = base.cursor; + lab13: { + golab14: while(true) + { + lab15: { + if (!(base.in_grouping(g_v, 97, 259))) + { + break lab15; + } + break golab14; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + golab16: while(true) + { + lab17: { + if (!(base.out_grouping(g_v, 97, 259))) + { + break lab17; + } + break golab16; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + I_p1 = base.cursor; + golab18: while(true) + { + lab19: { + if (!(base.in_grouping(g_v, 97, 259))) + { + break lab19; + } + break golab18; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + golab20: while(true) + { + lab21: { + if (!(base.out_grouping(g_v, 97, 259))) + { + break lab21; + } + break golab20; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + I_p2 = base.cursor; + } + base.cursor = v_8; + return true; + }; + + /** @return {boolean} */ + function r_postlude() { + var /** number */ among_var; + while(true) + { + var /** number */ v_1 = base.cursor; + lab0: { + base.bra = base.cursor; + among_var = base.find_among(a_0); + if (among_var == 0) + { + break lab0; + } + base.ket = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_from("i")) + { + return false; + } + break; + case 2: + if (!base.slice_from("u")) + { + return false; + } + break; + case 3: + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + break; + } + continue; + } + base.cursor = v_1; + break; + } + return true; + }; + + /** @return {boolean} */ + function r_RV() { + if (!(I_pV <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R1() { + if (!(I_p1 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R2() { + if (!(I_p2 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_step_0() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_1); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_from("a")) + { + return false; + } + break; + case 3: + if (!base.slice_from("e")) + { + return false; + } + break; + case 4: + if (!base.slice_from("i")) + { + return false; + } + break; + case 5: + { + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + if (!(base.eq_s_b("ab"))) + { + break lab0; + } + return false; + } + base.cursor = base.limit - v_1; + } + if (!base.slice_from("i")) + { + return false; + } + break; + case 6: + if (!base.slice_from("at")) + { + return false; + } + break; + case 7: + if (!base.slice_from("a\u0163i")) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_combo_suffix() { + var /** number */ among_var; + var /** number */ v_1 = base.limit - base.cursor; + base.ket = base.cursor; + among_var = base.find_among_b(a_2); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_from("abil")) + { + return false; + } + break; + case 2: + if (!base.slice_from("ibil")) + { + return false; + } + break; + case 3: + if (!base.slice_from("iv")) + { + return false; + } + break; + case 4: + if (!base.slice_from("ic")) + { + return false; + } + break; + case 5: + if (!base.slice_from("at")) + { + return false; + } + break; + case 6: + if (!base.slice_from("it")) + { + return false; + } + break; + } + B_standard_suffix_removed = true; + base.cursor = base.limit - v_1; + return true; + }; + + /** @return {boolean} */ + function r_standard_suffix() { + var /** number */ among_var; + B_standard_suffix_removed = false; + while(true) + { + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + if (!r_combo_suffix()) + { + break lab0; + } + continue; + } + base.cursor = base.limit - v_1; + break; + } + base.ket = base.cursor; + among_var = base.find_among_b(a_3); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R2()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!(base.eq_s_b("\u0163"))) + { + return false; + } + base.bra = base.cursor; + if (!base.slice_from("t")) + { + return false; + } + break; + case 3: + if (!base.slice_from("ist")) + { + return false; + } + break; + } + B_standard_suffix_removed = true; + return true; + }; + + /** @return {boolean} */ + function r_verb_suffix() { + var /** number */ among_var; + if (base.cursor < I_pV) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_pV; + base.ket = base.cursor; + among_var = base.find_among_b(a_4); + if (among_var == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + lab0: { + var /** number */ v_3 = base.limit - base.cursor; + lab1: { + if (!(base.out_grouping_b(g_v, 97, 259))) + { + break lab1; + } + break lab0; + } + base.cursor = base.limit - v_3; + if (!(base.eq_s_b("u"))) + { + base.limit_backward = v_2; + return false; + } + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_del()) + { + return false; + } + break; + } + base.limit_backward = v_2; + return true; + }; + + /** @return {boolean} */ + function r_vowel_suffix() { + base.ket = base.cursor; + if (base.find_among_b(a_5) == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_RV()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + return true; + }; + + this.stem = /** @return {boolean} */ function() { + var /** number */ v_1 = base.cursor; + r_prelude(); + base.cursor = v_1; + r_mark_regions(); + base.limit_backward = base.cursor; base.cursor = base.limit; + var /** number */ v_3 = base.limit - base.cursor; + r_step_0(); + base.cursor = base.limit - v_3; + var /** number */ v_4 = base.limit - base.cursor; + r_standard_suffix(); + base.cursor = base.limit - v_4; + var /** number */ v_5 = base.limit - base.cursor; + lab0: { + lab1: { + var /** number */ v_6 = base.limit - base.cursor; + lab2: { + if (!B_standard_suffix_removed) + { + break lab2; + } + break lab1; + } + base.cursor = base.limit - v_6; + if (!r_verb_suffix()) + { + break lab0; + } + } + } + base.cursor = base.limit - v_5; + var /** number */ v_7 = base.limit - base.cursor; + r_vowel_suffix(); + base.cursor = base.limit - v_7; + base.cursor = base.limit_backward; + var /** number */ v_8 = base.cursor; + r_postlude(); + base.cursor = v_8; + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/sphinx/search/non-minified-js/russian-stemmer.js b/sphinx/search/non-minified-js/russian-stemmer.js new file mode 100644 index 0000000..28ded5f --- /dev/null +++ b/sphinx/search/non-minified-js/russian-stemmer.js @@ -0,0 +1,624 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +RussianStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["\u0432", -1, 1], + ["\u0438\u0432", 0, 2], + ["\u044B\u0432", 0, 2], + ["\u0432\u0448\u0438", -1, 1], + ["\u0438\u0432\u0448\u0438", 3, 2], + ["\u044B\u0432\u0448\u0438", 3, 2], + ["\u0432\u0448\u0438\u0441\u044C", -1, 1], + ["\u0438\u0432\u0448\u0438\u0441\u044C", 6, 2], + ["\u044B\u0432\u0448\u0438\u0441\u044C", 6, 2] + ]; + + /** @const */ var a_1 = [ + ["\u0435\u0435", -1, 1], + ["\u0438\u0435", -1, 1], + ["\u043E\u0435", -1, 1], + ["\u044B\u0435", -1, 1], + ["\u0438\u043C\u0438", -1, 1], + ["\u044B\u043C\u0438", -1, 1], + ["\u0435\u0439", -1, 1], + ["\u0438\u0439", -1, 1], + ["\u043E\u0439", -1, 1], + ["\u044B\u0439", -1, 1], + ["\u0435\u043C", -1, 1], + ["\u0438\u043C", -1, 1], + ["\u043E\u043C", -1, 1], + ["\u044B\u043C", -1, 1], + ["\u0435\u0433\u043E", -1, 1], + ["\u043E\u0433\u043E", -1, 1], + ["\u0435\u043C\u0443", -1, 1], + ["\u043E\u043C\u0443", -1, 1], + ["\u0438\u0445", -1, 1], + ["\u044B\u0445", -1, 1], + ["\u0435\u044E", -1, 1], + ["\u043E\u044E", -1, 1], + ["\u0443\u044E", -1, 1], + ["\u044E\u044E", -1, 1], + ["\u0430\u044F", -1, 1], + ["\u044F\u044F", -1, 1] + ]; + + /** @const */ var a_2 = [ + ["\u0435\u043C", -1, 1], + ["\u043D\u043D", -1, 1], + ["\u0432\u0448", -1, 1], + ["\u0438\u0432\u0448", 2, 2], + ["\u044B\u0432\u0448", 2, 2], + ["\u0449", -1, 1], + ["\u044E\u0449", 5, 1], + ["\u0443\u044E\u0449", 6, 2] + ]; + + /** @const */ var a_3 = [ + ["\u0441\u044C", -1, 1], + ["\u0441\u044F", -1, 1] + ]; + + /** @const */ var a_4 = [ + ["\u043B\u0430", -1, 1], + ["\u0438\u043B\u0430", 0, 2], + ["\u044B\u043B\u0430", 0, 2], + ["\u043D\u0430", -1, 1], + ["\u0435\u043D\u0430", 3, 2], + ["\u0435\u0442\u0435", -1, 1], + ["\u0438\u0442\u0435", -1, 2], + ["\u0439\u0442\u0435", -1, 1], + ["\u0435\u0439\u0442\u0435", 7, 2], + ["\u0443\u0439\u0442\u0435", 7, 2], + ["\u043B\u0438", -1, 1], + ["\u0438\u043B\u0438", 10, 2], + ["\u044B\u043B\u0438", 10, 2], + ["\u0439", -1, 1], + ["\u0435\u0439", 13, 2], + ["\u0443\u0439", 13, 2], + ["\u043B", -1, 1], + ["\u0438\u043B", 16, 2], + ["\u044B\u043B", 16, 2], + ["\u0435\u043C", -1, 1], + ["\u0438\u043C", -1, 2], + ["\u044B\u043C", -1, 2], + ["\u043D", -1, 1], + ["\u0435\u043D", 22, 2], + ["\u043B\u043E", -1, 1], + ["\u0438\u043B\u043E", 24, 2], + ["\u044B\u043B\u043E", 24, 2], + ["\u043D\u043E", -1, 1], + ["\u0435\u043D\u043E", 27, 2], + ["\u043D\u043D\u043E", 27, 1], + ["\u0435\u0442", -1, 1], + ["\u0443\u0435\u0442", 30, 2], + ["\u0438\u0442", -1, 2], + ["\u044B\u0442", -1, 2], + ["\u044E\u0442", -1, 1], + ["\u0443\u044E\u0442", 34, 2], + ["\u044F\u0442", -1, 2], + ["\u043D\u044B", -1, 1], + ["\u0435\u043D\u044B", 37, 2], + ["\u0442\u044C", -1, 1], + ["\u0438\u0442\u044C", 39, 2], + ["\u044B\u0442\u044C", 39, 2], + ["\u0435\u0448\u044C", -1, 1], + ["\u0438\u0448\u044C", -1, 2], + ["\u044E", -1, 2], + ["\u0443\u044E", 44, 2] + ]; + + /** @const */ var a_5 = [ + ["\u0430", -1, 1], + ["\u0435\u0432", -1, 1], + ["\u043E\u0432", -1, 1], + ["\u0435", -1, 1], + ["\u0438\u0435", 3, 1], + ["\u044C\u0435", 3, 1], + ["\u0438", -1, 1], + ["\u0435\u0438", 6, 1], + ["\u0438\u0438", 6, 1], + ["\u0430\u043C\u0438", 6, 1], + ["\u044F\u043C\u0438", 6, 1], + ["\u0438\u044F\u043C\u0438", 10, 1], + ["\u0439", -1, 1], + ["\u0435\u0439", 12, 1], + ["\u0438\u0435\u0439", 13, 1], + ["\u0438\u0439", 12, 1], + ["\u043E\u0439", 12, 1], + ["\u0430\u043C", -1, 1], + ["\u0435\u043C", -1, 1], + ["\u0438\u0435\u043C", 18, 1], + ["\u043E\u043C", -1, 1], + ["\u044F\u043C", -1, 1], + ["\u0438\u044F\u043C", 21, 1], + ["\u043E", -1, 1], + ["\u0443", -1, 1], + ["\u0430\u0445", -1, 1], + ["\u044F\u0445", -1, 1], + ["\u0438\u044F\u0445", 26, 1], + ["\u044B", -1, 1], + ["\u044C", -1, 1], + ["\u044E", -1, 1], + ["\u0438\u044E", 30, 1], + ["\u044C\u044E", 30, 1], + ["\u044F", -1, 1], + ["\u0438\u044F", 33, 1], + ["\u044C\u044F", 33, 1] + ]; + + /** @const */ var a_6 = [ + ["\u043E\u0441\u0442", -1, 1], + ["\u043E\u0441\u0442\u044C", -1, 1] + ]; + + /** @const */ var a_7 = [ + ["\u0435\u0439\u0448\u0435", -1, 1], + ["\u043D", -1, 2], + ["\u0435\u0439\u0448", -1, 1], + ["\u044C", -1, 3] + ]; + + /** @const */ var /** Array */ g_v = [33, 65, 8, 232]; + + var /** number */ I_p2 = 0; + var /** number */ I_pV = 0; + + + /** @return {boolean} */ + function r_mark_regions() { + I_pV = base.limit; + I_p2 = base.limit; + var /** number */ v_1 = base.cursor; + lab0: { + golab1: while(true) + { + lab2: { + if (!(base.in_grouping(g_v, 1072, 1103))) + { + break lab2; + } + break golab1; + } + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + I_pV = base.cursor; + golab3: while(true) + { + lab4: { + if (!(base.out_grouping(g_v, 1072, 1103))) + { + break lab4; + } + break golab3; + } + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + golab5: while(true) + { + lab6: { + if (!(base.in_grouping(g_v, 1072, 1103))) + { + break lab6; + } + break golab5; + } + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + golab7: while(true) + { + lab8: { + if (!(base.out_grouping(g_v, 1072, 1103))) + { + break lab8; + } + break golab7; + } + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + I_p2 = base.cursor; + } + base.cursor = v_1; + return true; + }; + + /** @return {boolean} */ + function r_R2() { + if (!(I_p2 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_perfective_gerund() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_0); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + lab0: { + var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!(base.eq_s_b("\u0430"))) + { + break lab1; + } + break lab0; + } + base.cursor = base.limit - v_1; + if (!(base.eq_s_b("\u044F"))) + { + return false; + } + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_adjective() { + base.ket = base.cursor; + if (base.find_among_b(a_1) == 0) + { + return false; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_adjectival() { + var /** number */ among_var; + if (!r_adjective()) + { + return false; + } + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + among_var = base.find_among_b(a_2); + if (among_var == 0) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + lab1: { + var /** number */ v_2 = base.limit - base.cursor; + lab2: { + if (!(base.eq_s_b("\u0430"))) + { + break lab2; + } + break lab1; + } + base.cursor = base.limit - v_2; + if (!(base.eq_s_b("\u044F"))) + { + base.cursor = base.limit - v_1; + break lab0; + } + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_del()) + { + return false; + } + break; + } + } + return true; + }; + + /** @return {boolean} */ + function r_reflexive() { + base.ket = base.cursor; + if (base.find_among_b(a_3) == 0) + { + return false; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_verb() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_4); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + lab0: { + var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!(base.eq_s_b("\u0430"))) + { + break lab1; + } + break lab0; + } + base.cursor = base.limit - v_1; + if (!(base.eq_s_b("\u044F"))) + { + return false; + } + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_noun() { + base.ket = base.cursor; + if (base.find_among_b(a_5) == 0) + { + return false; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_derivational() { + base.ket = base.cursor; + if (base.find_among_b(a_6) == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_tidy_up() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_7); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + base.ket = base.cursor; + if (!(base.eq_s_b("\u043D"))) + { + return false; + } + base.bra = base.cursor; + if (!(base.eq_s_b("\u043D"))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!(base.eq_s_b("\u043D"))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 3: + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + this.stem = /** @return {boolean} */ function() { + var /** number */ v_1 = base.cursor; + lab0: { + while(true) + { + var /** number */ v_2 = base.cursor; + lab1: { + golab2: while(true) + { + var /** number */ v_3 = base.cursor; + lab3: { + base.bra = base.cursor; + if (!(base.eq_s("\u0451"))) + { + break lab3; + } + base.ket = base.cursor; + base.cursor = v_3; + break golab2; + } + base.cursor = v_3; + if (base.cursor >= base.limit) + { + break lab1; + } + base.cursor++; + } + if (!base.slice_from("\u0435")) + { + return false; + } + continue; + } + base.cursor = v_2; + break; + } + } + base.cursor = v_1; + r_mark_regions(); + base.limit_backward = base.cursor; base.cursor = base.limit; + if (base.cursor < I_pV) + { + return false; + } + var /** number */ v_6 = base.limit_backward; + base.limit_backward = I_pV; + var /** number */ v_7 = base.limit - base.cursor; + lab4: { + lab5: { + var /** number */ v_8 = base.limit - base.cursor; + lab6: { + if (!r_perfective_gerund()) + { + break lab6; + } + break lab5; + } + base.cursor = base.limit - v_8; + var /** number */ v_9 = base.limit - base.cursor; + lab7: { + if (!r_reflexive()) + { + base.cursor = base.limit - v_9; + break lab7; + } + } + lab8: { + var /** number */ v_10 = base.limit - base.cursor; + lab9: { + if (!r_adjectival()) + { + break lab9; + } + break lab8; + } + base.cursor = base.limit - v_10; + lab10: { + if (!r_verb()) + { + break lab10; + } + break lab8; + } + base.cursor = base.limit - v_10; + if (!r_noun()) + { + break lab4; + } + } + } + } + base.cursor = base.limit - v_7; + var /** number */ v_11 = base.limit - base.cursor; + lab11: { + base.ket = base.cursor; + if (!(base.eq_s_b("\u0438"))) + { + base.cursor = base.limit - v_11; + break lab11; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + } + var /** number */ v_12 = base.limit - base.cursor; + r_derivational(); + base.cursor = base.limit - v_12; + var /** number */ v_13 = base.limit - base.cursor; + r_tidy_up(); + base.cursor = base.limit - v_13; + base.limit_backward = v_6; + base.cursor = base.limit_backward; + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/sphinx/search/non-minified-js/spanish-stemmer.js b/sphinx/search/non-minified-js/spanish-stemmer.js new file mode 100644 index 0000000..fffd616 --- /dev/null +++ b/sphinx/search/non-minified-js/spanish-stemmer.js @@ -0,0 +1,990 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +SpanishStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["", -1, 6], + ["\u00E1", 0, 1], + ["\u00E9", 0, 2], + ["\u00ED", 0, 3], + ["\u00F3", 0, 4], + ["\u00FA", 0, 5] + ]; + + /** @const */ var a_1 = [ + ["la", -1, -1], + ["sela", 0, -1], + ["le", -1, -1], + ["me", -1, -1], + ["se", -1, -1], + ["lo", -1, -1], + ["selo", 5, -1], + ["las", -1, -1], + ["selas", 7, -1], + ["les", -1, -1], + ["los", -1, -1], + ["selos", 10, -1], + ["nos", -1, -1] + ]; + + /** @const */ var a_2 = [ + ["ando", -1, 6], + ["iendo", -1, 6], + ["yendo", -1, 7], + ["\u00E1ndo", -1, 2], + ["i\u00E9ndo", -1, 1], + ["ar", -1, 6], + ["er", -1, 6], + ["ir", -1, 6], + ["\u00E1r", -1, 3], + ["\u00E9r", -1, 4], + ["\u00EDr", -1, 5] + ]; + + /** @const */ var a_3 = [ + ["ic", -1, -1], + ["ad", -1, -1], + ["os", -1, -1], + ["iv", -1, 1] + ]; + + /** @const */ var a_4 = [ + ["able", -1, 1], + ["ible", -1, 1], + ["ante", -1, 1] + ]; + + /** @const */ var a_5 = [ + ["ic", -1, 1], + ["abil", -1, 1], + ["iv", -1, 1] + ]; + + /** @const */ var a_6 = [ + ["ica", -1, 1], + ["ancia", -1, 2], + ["encia", -1, 5], + ["adora", -1, 2], + ["osa", -1, 1], + ["ista", -1, 1], + ["iva", -1, 9], + ["anza", -1, 1], + ["log\u00EDa", -1, 3], + ["idad", -1, 8], + ["able", -1, 1], + ["ible", -1, 1], + ["ante", -1, 2], + ["mente", -1, 7], + ["amente", 13, 6], + ["aci\u00F3n", -1, 2], + ["uci\u00F3n", -1, 4], + ["ico", -1, 1], + ["ismo", -1, 1], + ["oso", -1, 1], + ["amiento", -1, 1], + ["imiento", -1, 1], + ["ivo", -1, 9], + ["ador", -1, 2], + ["icas", -1, 1], + ["ancias", -1, 2], + ["encias", -1, 5], + ["adoras", -1, 2], + ["osas", -1, 1], + ["istas", -1, 1], + ["ivas", -1, 9], + ["anzas", -1, 1], + ["log\u00EDas", -1, 3], + ["idades", -1, 8], + ["ables", -1, 1], + ["ibles", -1, 1], + ["aciones", -1, 2], + ["uciones", -1, 4], + ["adores", -1, 2], + ["antes", -1, 2], + ["icos", -1, 1], + ["ismos", -1, 1], + ["osos", -1, 1], + ["amientos", -1, 1], + ["imientos", -1, 1], + ["ivos", -1, 9] + ]; + + /** @const */ var a_7 = [ + ["ya", -1, 1], + ["ye", -1, 1], + ["yan", -1, 1], + ["yen", -1, 1], + ["yeron", -1, 1], + ["yendo", -1, 1], + ["yo", -1, 1], + ["yas", -1, 1], + ["yes", -1, 1], + ["yais", -1, 1], + ["yamos", -1, 1], + ["y\u00F3", -1, 1] + ]; + + /** @const */ var a_8 = [ + ["aba", -1, 2], + ["ada", -1, 2], + ["ida", -1, 2], + ["ara", -1, 2], + ["iera", -1, 2], + ["\u00EDa", -1, 2], + ["ar\u00EDa", 5, 2], + ["er\u00EDa", 5, 2], + ["ir\u00EDa", 5, 2], + ["ad", -1, 2], + ["ed", -1, 2], + ["id", -1, 2], + ["ase", -1, 2], + ["iese", -1, 2], + ["aste", -1, 2], + ["iste", -1, 2], + ["an", -1, 2], + ["aban", 16, 2], + ["aran", 16, 2], + ["ieran", 16, 2], + ["\u00EDan", 16, 2], + ["ar\u00EDan", 20, 2], + ["er\u00EDan", 20, 2], + ["ir\u00EDan", 20, 2], + ["en", -1, 1], + ["asen", 24, 2], + ["iesen", 24, 2], + ["aron", -1, 2], + ["ieron", -1, 2], + ["ar\u00E1n", -1, 2], + ["er\u00E1n", -1, 2], + ["ir\u00E1n", -1, 2], + ["ado", -1, 2], + ["ido", -1, 2], + ["ando", -1, 2], + ["iendo", -1, 2], + ["ar", -1, 2], + ["er", -1, 2], + ["ir", -1, 2], + ["as", -1, 2], + ["abas", 39, 2], + ["adas", 39, 2], + ["idas", 39, 2], + ["aras", 39, 2], + ["ieras", 39, 2], + ["\u00EDas", 39, 2], + ["ar\u00EDas", 45, 2], + ["er\u00EDas", 45, 2], + ["ir\u00EDas", 45, 2], + ["es", -1, 1], + ["ases", 49, 2], + ["ieses", 49, 2], + ["abais", -1, 2], + ["arais", -1, 2], + ["ierais", -1, 2], + ["\u00EDais", -1, 2], + ["ar\u00EDais", 55, 2], + ["er\u00EDais", 55, 2], + ["ir\u00EDais", 55, 2], + ["aseis", -1, 2], + ["ieseis", -1, 2], + ["asteis", -1, 2], + ["isteis", -1, 2], + ["\u00E1is", -1, 2], + ["\u00E9is", -1, 1], + ["ar\u00E9is", 64, 2], + ["er\u00E9is", 64, 2], + ["ir\u00E9is", 64, 2], + ["ados", -1, 2], + ["idos", -1, 2], + ["amos", -1, 2], + ["\u00E1bamos", 70, 2], + ["\u00E1ramos", 70, 2], + ["i\u00E9ramos", 70, 2], + ["\u00EDamos", 70, 2], + ["ar\u00EDamos", 74, 2], + ["er\u00EDamos", 74, 2], + ["ir\u00EDamos", 74, 2], + ["emos", -1, 1], + ["aremos", 78, 2], + ["eremos", 78, 2], + ["iremos", 78, 2], + ["\u00E1semos", 78, 2], + ["i\u00E9semos", 78, 2], + ["imos", -1, 2], + ["ar\u00E1s", -1, 2], + ["er\u00E1s", -1, 2], + ["ir\u00E1s", -1, 2], + ["\u00EDs", -1, 2], + ["ar\u00E1", -1, 2], + ["er\u00E1", -1, 2], + ["ir\u00E1", -1, 2], + ["ar\u00E9", -1, 2], + ["er\u00E9", -1, 2], + ["ir\u00E9", -1, 2], + ["i\u00F3", -1, 2] + ]; + + /** @const */ var a_9 = [ + ["a", -1, 1], + ["e", -1, 2], + ["o", -1, 1], + ["os", -1, 1], + ["\u00E1", -1, 1], + ["\u00E9", -1, 2], + ["\u00ED", -1, 1], + ["\u00F3", -1, 1] + ]; + + /** @const */ var /** Array */ g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10]; + + var /** number */ I_p2 = 0; + var /** number */ I_p1 = 0; + var /** number */ I_pV = 0; + + + /** @return {boolean} */ + function r_mark_regions() { + I_pV = base.limit; + I_p1 = base.limit; + I_p2 = base.limit; + var /** number */ v_1 = base.cursor; + lab0: { + lab1: { + var /** number */ v_2 = base.cursor; + lab2: { + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab2; + } + lab3: { + var /** number */ v_3 = base.cursor; + lab4: { + if (!(base.out_grouping(g_v, 97, 252))) + { + break lab4; + } + golab5: while(true) + { + lab6: { + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab6; + } + break golab5; + } + if (base.cursor >= base.limit) + { + break lab4; + } + base.cursor++; + } + break lab3; + } + base.cursor = v_3; + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab2; + } + golab7: while(true) + { + lab8: { + if (!(base.out_grouping(g_v, 97, 252))) + { + break lab8; + } + break golab7; + } + if (base.cursor >= base.limit) + { + break lab2; + } + base.cursor++; + } + } + break lab1; + } + base.cursor = v_2; + if (!(base.out_grouping(g_v, 97, 252))) + { + break lab0; + } + lab9: { + var /** number */ v_6 = base.cursor; + lab10: { + if (!(base.out_grouping(g_v, 97, 252))) + { + break lab10; + } + golab11: while(true) + { + lab12: { + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab12; + } + break golab11; + } + if (base.cursor >= base.limit) + { + break lab10; + } + base.cursor++; + } + break lab9; + } + base.cursor = v_6; + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab0; + } + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + } + I_pV = base.cursor; + } + base.cursor = v_1; + var /** number */ v_8 = base.cursor; + lab13: { + golab14: while(true) + { + lab15: { + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab15; + } + break golab14; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + golab16: while(true) + { + lab17: { + if (!(base.out_grouping(g_v, 97, 252))) + { + break lab17; + } + break golab16; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + I_p1 = base.cursor; + golab18: while(true) + { + lab19: { + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab19; + } + break golab18; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + golab20: while(true) + { + lab21: { + if (!(base.out_grouping(g_v, 97, 252))) + { + break lab21; + } + break golab20; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + I_p2 = base.cursor; + } + base.cursor = v_8; + return true; + }; + + /** @return {boolean} */ + function r_postlude() { + var /** number */ among_var; + while(true) + { + var /** number */ v_1 = base.cursor; + lab0: { + base.bra = base.cursor; + among_var = base.find_among(a_0); + if (among_var == 0) + { + break lab0; + } + base.ket = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_from("a")) + { + return false; + } + break; + case 2: + if (!base.slice_from("e")) + { + return false; + } + break; + case 3: + if (!base.slice_from("i")) + { + return false; + } + break; + case 4: + if (!base.slice_from("o")) + { + return false; + } + break; + case 5: + if (!base.slice_from("u")) + { + return false; + } + break; + case 6: + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + break; + } + continue; + } + base.cursor = v_1; + break; + } + return true; + }; + + /** @return {boolean} */ + function r_RV() { + if (!(I_pV <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R1() { + if (!(I_p1 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R2() { + if (!(I_p2 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_attached_pronoun() { + var /** number */ among_var; + base.ket = base.cursor; + if (base.find_among_b(a_1) == 0) + { + return false; + } + base.bra = base.cursor; + among_var = base.find_among_b(a_2); + if (among_var == 0) + { + return false; + } + if (!r_RV()) + { + return false; + } + switch (among_var) { + case 1: + base.bra = base.cursor; + if (!base.slice_from("iendo")) + { + return false; + } + break; + case 2: + base.bra = base.cursor; + if (!base.slice_from("ando")) + { + return false; + } + break; + case 3: + base.bra = base.cursor; + if (!base.slice_from("ar")) + { + return false; + } + break; + case 4: + base.bra = base.cursor; + if (!base.slice_from("er")) + { + return false; + } + break; + case 5: + base.bra = base.cursor; + if (!base.slice_from("ir")) + { + return false; + } + break; + case 6: + if (!base.slice_del()) + { + return false; + } + break; + case 7: + if (!(base.eq_s_b("u"))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_standard_suffix() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_6); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + if (!(base.eq_s_b("ic"))) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_1; + break lab0; + } + if (!base.slice_del()) + { + return false; + } + } + break; + case 3: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("log")) + { + return false; + } + break; + case 4: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("u")) + { + return false; + } + break; + case 5: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("ente")) + { + return false; + } + break; + case 6: + if (!r_R1()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_2 = base.limit - base.cursor; + lab1: { + base.ket = base.cursor; + among_var = base.find_among_b(a_3); + if (among_var == 0) + { + base.cursor = base.limit - v_2; + break lab1; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_2; + break lab1; + } + if (!base.slice_del()) + { + return false; + } + switch (among_var) { + case 1: + base.ket = base.cursor; + if (!(base.eq_s_b("at"))) + { + base.cursor = base.limit - v_2; + break lab1; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_2; + break lab1; + } + if (!base.slice_del()) + { + return false; + } + break; + } + } + break; + case 7: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_3 = base.limit - base.cursor; + lab2: { + base.ket = base.cursor; + if (base.find_among_b(a_4) == 0) + { + base.cursor = base.limit - v_3; + break lab2; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_3; + break lab2; + } + if (!base.slice_del()) + { + return false; + } + } + break; + case 8: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_4 = base.limit - base.cursor; + lab3: { + base.ket = base.cursor; + if (base.find_among_b(a_5) == 0) + { + base.cursor = base.limit - v_4; + break lab3; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_4; + break lab3; + } + if (!base.slice_del()) + { + return false; + } + } + break; + case 9: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_5 = base.limit - base.cursor; + lab4: { + base.ket = base.cursor; + if (!(base.eq_s_b("at"))) + { + base.cursor = base.limit - v_5; + break lab4; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_5; + break lab4; + } + if (!base.slice_del()) + { + return false; + } + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_y_verb_suffix() { + if (base.cursor < I_pV) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_pV; + base.ket = base.cursor; + if (base.find_among_b(a_7) == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + base.limit_backward = v_2; + if (!(base.eq_s_b("u"))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_verb_suffix() { + var /** number */ among_var; + if (base.cursor < I_pV) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_pV; + base.ket = base.cursor; + among_var = base.find_among_b(a_8); + if (among_var == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + base.limit_backward = v_2; + switch (among_var) { + case 1: + var /** number */ v_3 = base.limit - base.cursor; + lab0: { + if (!(base.eq_s_b("u"))) + { + base.cursor = base.limit - v_3; + break lab0; + } + var /** number */ v_4 = base.limit - base.cursor; + if (!(base.eq_s_b("g"))) + { + base.cursor = base.limit - v_3; + break lab0; + } + base.cursor = base.limit - v_4; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_residual_suffix() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_9); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_RV()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!r_RV()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + if (!(base.eq_s_b("u"))) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.bra = base.cursor; + var /** number */ v_2 = base.limit - base.cursor; + if (!(base.eq_s_b("g"))) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.cursor = base.limit - v_2; + if (!r_RV()) + { + base.cursor = base.limit - v_1; + break lab0; + } + if (!base.slice_del()) + { + return false; + } + } + break; + } + return true; + }; + + this.stem = /** @return {boolean} */ function() { + r_mark_regions(); + base.limit_backward = base.cursor; base.cursor = base.limit; + var /** number */ v_2 = base.limit - base.cursor; + r_attached_pronoun(); + base.cursor = base.limit - v_2; + var /** number */ v_3 = base.limit - base.cursor; + lab0: { + lab1: { + var /** number */ v_4 = base.limit - base.cursor; + lab2: { + if (!r_standard_suffix()) + { + break lab2; + } + break lab1; + } + base.cursor = base.limit - v_4; + lab3: { + if (!r_y_verb_suffix()) + { + break lab3; + } + break lab1; + } + base.cursor = base.limit - v_4; + if (!r_verb_suffix()) + { + break lab0; + } + } + } + base.cursor = base.limit - v_3; + var /** number */ v_5 = base.limit - base.cursor; + r_residual_suffix(); + base.cursor = base.limit - v_5; + base.cursor = base.limit_backward; + var /** number */ v_6 = base.cursor; + r_postlude(); + base.cursor = v_6; + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/sphinx/search/non-minified-js/swedish-stemmer.js b/sphinx/search/non-minified-js/swedish-stemmer.js new file mode 100644 index 0000000..4d7d49f --- /dev/null +++ b/sphinx/search/non-minified-js/swedish-stemmer.js @@ -0,0 +1,265 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +SwedishStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["a", -1, 1], + ["arna", 0, 1], + ["erna", 0, 1], + ["heterna", 2, 1], + ["orna", 0, 1], + ["ad", -1, 1], + ["e", -1, 1], + ["ade", 6, 1], + ["ande", 6, 1], + ["arne", 6, 1], + ["are", 6, 1], + ["aste", 6, 1], + ["en", -1, 1], + ["anden", 12, 1], + ["aren", 12, 1], + ["heten", 12, 1], + ["ern", -1, 1], + ["ar", -1, 1], + ["er", -1, 1], + ["heter", 18, 1], + ["or", -1, 1], + ["s", -1, 2], + ["as", 21, 1], + ["arnas", 22, 1], + ["ernas", 22, 1], + ["ornas", 22, 1], + ["es", 21, 1], + ["ades", 26, 1], + ["andes", 26, 1], + ["ens", 21, 1], + ["arens", 29, 1], + ["hetens", 29, 1], + ["erns", 21, 1], + ["at", -1, 1], + ["andet", -1, 1], + ["het", -1, 1], + ["ast", -1, 1] + ]; + + /** @const */ var a_1 = [ + ["dd", -1, -1], + ["gd", -1, -1], + ["nn", -1, -1], + ["dt", -1, -1], + ["gt", -1, -1], + ["kt", -1, -1], + ["tt", -1, -1] + ]; + + /** @const */ var a_2 = [ + ["ig", -1, 1], + ["lig", 0, 1], + ["els", -1, 1], + ["fullt", -1, 3], + ["l\u00F6st", -1, 2] + ]; + + /** @const */ var /** Array */ g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 32]; + + /** @const */ var /** Array */ g_s_ending = [119, 127, 149]; + + var /** number */ I_x = 0; + var /** number */ I_p1 = 0; + + + /** @return {boolean} */ + function r_mark_regions() { + I_p1 = base.limit; + var /** number */ v_1 = base.cursor; + { + var /** number */ c1 = base.cursor + 3; + if (c1 > base.limit) + { + return false; + } + base.cursor = c1; + } + I_x = base.cursor; + base.cursor = v_1; + golab0: while(true) + { + var /** number */ v_2 = base.cursor; + lab1: { + if (!(base.in_grouping(g_v, 97, 246))) + { + break lab1; + } + base.cursor = v_2; + break golab0; + } + base.cursor = v_2; + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + golab2: while(true) + { + lab3: { + if (!(base.out_grouping(g_v, 97, 246))) + { + break lab3; + } + break golab2; + } + if (base.cursor >= base.limit) + { + return false; + } + base.cursor++; + } + I_p1 = base.cursor; + lab4: { + if (!(I_p1 < I_x)) + { + break lab4; + } + I_p1 = I_x; + } + return true; + }; + + /** @return {boolean} */ + function r_main_suffix() { + var /** number */ among_var; + if (base.cursor < I_p1) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_p1; + base.ket = base.cursor; + among_var = base.find_among_b(a_0); + if (among_var == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + base.limit_backward = v_2; + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!(base.in_grouping_b(g_s_ending, 98, 121))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_consonant_pair() { + if (base.cursor < I_p1) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_p1; + var /** number */ v_3 = base.limit - base.cursor; + if (base.find_among_b(a_1) == 0) + { + base.limit_backward = v_2; + return false; + } + base.cursor = base.limit - v_3; + base.ket = base.cursor; + if (base.cursor <= base.limit_backward) + { + base.limit_backward = v_2; + return false; + } + base.cursor--; + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + base.limit_backward = v_2; + return true; + }; + + /** @return {boolean} */ + function r_other_suffix() { + var /** number */ among_var; + if (base.cursor < I_p1) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_p1; + base.ket = base.cursor; + among_var = base.find_among_b(a_2); + if (among_var == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_from("l\u00F6s")) + { + return false; + } + break; + case 3: + if (!base.slice_from("full")) + { + return false; + } + break; + } + base.limit_backward = v_2; + return true; + }; + + this.stem = /** @return {boolean} */ function() { + var /** number */ v_1 = base.cursor; + r_mark_regions(); + base.cursor = v_1; + base.limit_backward = base.cursor; base.cursor = base.limit; + var /** number */ v_2 = base.limit - base.cursor; + r_main_suffix(); + base.cursor = base.limit - v_2; + var /** number */ v_3 = base.limit - base.cursor; + r_consonant_pair(); + base.cursor = base.limit - v_3; + var /** number */ v_4 = base.limit - base.cursor; + r_other_suffix(); + base.cursor = base.limit - v_4; + base.cursor = base.limit_backward; + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/sphinx/search/non-minified-js/turkish-stemmer.js b/sphinx/search/non-minified-js/turkish-stemmer.js new file mode 100644 index 0000000..8ba74b9 --- /dev/null +++ b/sphinx/search/non-minified-js/turkish-stemmer.js @@ -0,0 +1,2439 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +TurkishStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["m", -1, -1], + ["n", -1, -1], + ["miz", -1, -1], + ["niz", -1, -1], + ["muz", -1, -1], + ["nuz", -1, -1], + ["m\u00FCz", -1, -1], + ["n\u00FCz", -1, -1], + ["m\u0131z", -1, -1], + ["n\u0131z", -1, -1] + ]; + + /** @const */ var a_1 = [ + ["leri", -1, -1], + ["lar\u0131", -1, -1] + ]; + + /** @const */ var a_2 = [ + ["ni", -1, -1], + ["nu", -1, -1], + ["n\u00FC", -1, -1], + ["n\u0131", -1, -1] + ]; + + /** @const */ var a_3 = [ + ["in", -1, -1], + ["un", -1, -1], + ["\u00FCn", -1, -1], + ["\u0131n", -1, -1] + ]; + + /** @const */ var a_4 = [ + ["a", -1, -1], + ["e", -1, -1] + ]; + + /** @const */ var a_5 = [ + ["na", -1, -1], + ["ne", -1, -1] + ]; + + /** @const */ var a_6 = [ + ["da", -1, -1], + ["ta", -1, -1], + ["de", -1, -1], + ["te", -1, -1] + ]; + + /** @const */ var a_7 = [ + ["nda", -1, -1], + ["nde", -1, -1] + ]; + + /** @const */ var a_8 = [ + ["dan", -1, -1], + ["tan", -1, -1], + ["den", -1, -1], + ["ten", -1, -1] + ]; + + /** @const */ var a_9 = [ + ["ndan", -1, -1], + ["nden", -1, -1] + ]; + + /** @const */ var a_10 = [ + ["la", -1, -1], + ["le", -1, -1] + ]; + + /** @const */ var a_11 = [ + ["ca", -1, -1], + ["ce", -1, -1] + ]; + + /** @const */ var a_12 = [ + ["im", -1, -1], + ["um", -1, -1], + ["\u00FCm", -1, -1], + ["\u0131m", -1, -1] + ]; + + /** @const */ var a_13 = [ + ["sin", -1, -1], + ["sun", -1, -1], + ["s\u00FCn", -1, -1], + ["s\u0131n", -1, -1] + ]; + + /** @const */ var a_14 = [ + ["iz", -1, -1], + ["uz", -1, -1], + ["\u00FCz", -1, -1], + ["\u0131z", -1, -1] + ]; + + /** @const */ var a_15 = [ + ["siniz", -1, -1], + ["sunuz", -1, -1], + ["s\u00FCn\u00FCz", -1, -1], + ["s\u0131n\u0131z", -1, -1] + ]; + + /** @const */ var a_16 = [ + ["lar", -1, -1], + ["ler", -1, -1] + ]; + + /** @const */ var a_17 = [ + ["niz", -1, -1], + ["nuz", -1, -1], + ["n\u00FCz", -1, -1], + ["n\u0131z", -1, -1] + ]; + + /** @const */ var a_18 = [ + ["dir", -1, -1], + ["tir", -1, -1], + ["dur", -1, -1], + ["tur", -1, -1], + ["d\u00FCr", -1, -1], + ["t\u00FCr", -1, -1], + ["d\u0131r", -1, -1], + ["t\u0131r", -1, -1] + ]; + + /** @const */ var a_19 = [ + ["cas\u0131na", -1, -1], + ["cesine", -1, -1] + ]; + + /** @const */ var a_20 = [ + ["di", -1, -1], + ["ti", -1, -1], + ["dik", -1, -1], + ["tik", -1, -1], + ["duk", -1, -1], + ["tuk", -1, -1], + ["d\u00FCk", -1, -1], + ["t\u00FCk", -1, -1], + ["d\u0131k", -1, -1], + ["t\u0131k", -1, -1], + ["dim", -1, -1], + ["tim", -1, -1], + ["dum", -1, -1], + ["tum", -1, -1], + ["d\u00FCm", -1, -1], + ["t\u00FCm", -1, -1], + ["d\u0131m", -1, -1], + ["t\u0131m", -1, -1], + ["din", -1, -1], + ["tin", -1, -1], + ["dun", -1, -1], + ["tun", -1, -1], + ["d\u00FCn", -1, -1], + ["t\u00FCn", -1, -1], + ["d\u0131n", -1, -1], + ["t\u0131n", -1, -1], + ["du", -1, -1], + ["tu", -1, -1], + ["d\u00FC", -1, -1], + ["t\u00FC", -1, -1], + ["d\u0131", -1, -1], + ["t\u0131", -1, -1] + ]; + + /** @const */ var a_21 = [ + ["sa", -1, -1], + ["se", -1, -1], + ["sak", -1, -1], + ["sek", -1, -1], + ["sam", -1, -1], + ["sem", -1, -1], + ["san", -1, -1], + ["sen", -1, -1] + ]; + + /** @const */ var a_22 = [ + ["mi\u015F", -1, -1], + ["mu\u015F", -1, -1], + ["m\u00FC\u015F", -1, -1], + ["m\u0131\u015F", -1, -1] + ]; + + /** @const */ var a_23 = [ + ["b", -1, 1], + ["c", -1, 2], + ["d", -1, 3], + ["\u011F", -1, 4] + ]; + + /** @const */ var /** Array */ g_vowel = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 1]; + + /** @const */ var /** Array */ g_U = [1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1]; + + /** @const */ var /** Array */ g_vowel1 = [1, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]; + + /** @const */ var /** Array */ g_vowel2 = [17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130]; + + /** @const */ var /** Array */ g_vowel3 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]; + + /** @const */ var /** Array */ g_vowel4 = [17]; + + /** @const */ var /** Array */ g_vowel5 = [65]; + + /** @const */ var /** Array */ g_vowel6 = [65]; + + var /** boolean */ B_continue_stemming_noun_suffixes = false; + + + /** @return {boolean} */ + function r_check_vowel_harmony() { + var /** number */ v_1 = base.limit - base.cursor; + golab0: while(true) + { + var /** number */ v_2 = base.limit - base.cursor; + lab1: { + if (!(base.in_grouping_b(g_vowel, 97, 305))) + { + break lab1; + } + base.cursor = base.limit - v_2; + break golab0; + } + base.cursor = base.limit - v_2; + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + } + lab2: { + var /** number */ v_3 = base.limit - base.cursor; + lab3: { + if (!(base.eq_s_b("a"))) + { + break lab3; + } + golab4: while(true) + { + var /** number */ v_4 = base.limit - base.cursor; + lab5: { + if (!(base.in_grouping_b(g_vowel1, 97, 305))) + { + break lab5; + } + base.cursor = base.limit - v_4; + break golab4; + } + base.cursor = base.limit - v_4; + if (base.cursor <= base.limit_backward) + { + break lab3; + } + base.cursor--; + } + break lab2; + } + base.cursor = base.limit - v_3; + lab6: { + if (!(base.eq_s_b("e"))) + { + break lab6; + } + golab7: while(true) + { + var /** number */ v_5 = base.limit - base.cursor; + lab8: { + if (!(base.in_grouping_b(g_vowel2, 101, 252))) + { + break lab8; + } + base.cursor = base.limit - v_5; + break golab7; + } + base.cursor = base.limit - v_5; + if (base.cursor <= base.limit_backward) + { + break lab6; + } + base.cursor--; + } + break lab2; + } + base.cursor = base.limit - v_3; + lab9: { + if (!(base.eq_s_b("\u0131"))) + { + break lab9; + } + golab10: while(true) + { + var /** number */ v_6 = base.limit - base.cursor; + lab11: { + if (!(base.in_grouping_b(g_vowel3, 97, 305))) + { + break lab11; + } + base.cursor = base.limit - v_6; + break golab10; + } + base.cursor = base.limit - v_6; + if (base.cursor <= base.limit_backward) + { + break lab9; + } + base.cursor--; + } + break lab2; + } + base.cursor = base.limit - v_3; + lab12: { + if (!(base.eq_s_b("i"))) + { + break lab12; + } + golab13: while(true) + { + var /** number */ v_7 = base.limit - base.cursor; + lab14: { + if (!(base.in_grouping_b(g_vowel4, 101, 105))) + { + break lab14; + } + base.cursor = base.limit - v_7; + break golab13; + } + base.cursor = base.limit - v_7; + if (base.cursor <= base.limit_backward) + { + break lab12; + } + base.cursor--; + } + break lab2; + } + base.cursor = base.limit - v_3; + lab15: { + if (!(base.eq_s_b("o"))) + { + break lab15; + } + golab16: while(true) + { + var /** number */ v_8 = base.limit - base.cursor; + lab17: { + if (!(base.in_grouping_b(g_vowel5, 111, 117))) + { + break lab17; + } + base.cursor = base.limit - v_8; + break golab16; + } + base.cursor = base.limit - v_8; + if (base.cursor <= base.limit_backward) + { + break lab15; + } + base.cursor--; + } + break lab2; + } + base.cursor = base.limit - v_3; + lab18: { + if (!(base.eq_s_b("\u00F6"))) + { + break lab18; + } + golab19: while(true) + { + var /** number */ v_9 = base.limit - base.cursor; + lab20: { + if (!(base.in_grouping_b(g_vowel6, 246, 252))) + { + break lab20; + } + base.cursor = base.limit - v_9; + break golab19; + } + base.cursor = base.limit - v_9; + if (base.cursor <= base.limit_backward) + { + break lab18; + } + base.cursor--; + } + break lab2; + } + base.cursor = base.limit - v_3; + lab21: { + if (!(base.eq_s_b("u"))) + { + break lab21; + } + golab22: while(true) + { + var /** number */ v_10 = base.limit - base.cursor; + lab23: { + if (!(base.in_grouping_b(g_vowel5, 111, 117))) + { + break lab23; + } + base.cursor = base.limit - v_10; + break golab22; + } + base.cursor = base.limit - v_10; + if (base.cursor <= base.limit_backward) + { + break lab21; + } + base.cursor--; + } + break lab2; + } + base.cursor = base.limit - v_3; + if (!(base.eq_s_b("\u00FC"))) + { + return false; + } + golab24: while(true) + { + var /** number */ v_11 = base.limit - base.cursor; + lab25: { + if (!(base.in_grouping_b(g_vowel6, 246, 252))) + { + break lab25; + } + base.cursor = base.limit - v_11; + break golab24; + } + base.cursor = base.limit - v_11; + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + } + } + base.cursor = base.limit - v_1; + return true; + }; + + /** @return {boolean} */ + function r_mark_suffix_with_optional_n_consonant() { + lab0: { + var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!(base.eq_s_b("n"))) + { + break lab1; + } + var /** number */ v_2 = base.limit - base.cursor; + if (!(base.in_grouping_b(g_vowel, 97, 305))) + { + break lab1; + } + base.cursor = base.limit - v_2; + break lab0; + } + base.cursor = base.limit - v_1; + { + var /** number */ v_3 = base.limit - base.cursor; + lab2: { + var /** number */ v_4 = base.limit - base.cursor; + if (!(base.eq_s_b("n"))) + { + break lab2; + } + base.cursor = base.limit - v_4; + return false; + } + base.cursor = base.limit - v_3; + } + var /** number */ v_5 = base.limit - base.cursor; + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + if (!(base.in_grouping_b(g_vowel, 97, 305))) + { + return false; + } + base.cursor = base.limit - v_5; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_suffix_with_optional_s_consonant() { + lab0: { + var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!(base.eq_s_b("s"))) + { + break lab1; + } + var /** number */ v_2 = base.limit - base.cursor; + if (!(base.in_grouping_b(g_vowel, 97, 305))) + { + break lab1; + } + base.cursor = base.limit - v_2; + break lab0; + } + base.cursor = base.limit - v_1; + { + var /** number */ v_3 = base.limit - base.cursor; + lab2: { + var /** number */ v_4 = base.limit - base.cursor; + if (!(base.eq_s_b("s"))) + { + break lab2; + } + base.cursor = base.limit - v_4; + return false; + } + base.cursor = base.limit - v_3; + } + var /** number */ v_5 = base.limit - base.cursor; + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + if (!(base.in_grouping_b(g_vowel, 97, 305))) + { + return false; + } + base.cursor = base.limit - v_5; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_suffix_with_optional_y_consonant() { + lab0: { + var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!(base.eq_s_b("y"))) + { + break lab1; + } + var /** number */ v_2 = base.limit - base.cursor; + if (!(base.in_grouping_b(g_vowel, 97, 305))) + { + break lab1; + } + base.cursor = base.limit - v_2; + break lab0; + } + base.cursor = base.limit - v_1; + { + var /** number */ v_3 = base.limit - base.cursor; + lab2: { + var /** number */ v_4 = base.limit - base.cursor; + if (!(base.eq_s_b("y"))) + { + break lab2; + } + base.cursor = base.limit - v_4; + return false; + } + base.cursor = base.limit - v_3; + } + var /** number */ v_5 = base.limit - base.cursor; + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + if (!(base.in_grouping_b(g_vowel, 97, 305))) + { + return false; + } + base.cursor = base.limit - v_5; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_suffix_with_optional_U_vowel() { + lab0: { + var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!(base.in_grouping_b(g_U, 105, 305))) + { + break lab1; + } + var /** number */ v_2 = base.limit - base.cursor; + if (!(base.out_grouping_b(g_vowel, 97, 305))) + { + break lab1; + } + base.cursor = base.limit - v_2; + break lab0; + } + base.cursor = base.limit - v_1; + { + var /** number */ v_3 = base.limit - base.cursor; + lab2: { + var /** number */ v_4 = base.limit - base.cursor; + if (!(base.in_grouping_b(g_U, 105, 305))) + { + break lab2; + } + base.cursor = base.limit - v_4; + return false; + } + base.cursor = base.limit - v_3; + } + var /** number */ v_5 = base.limit - base.cursor; + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + if (!(base.out_grouping_b(g_vowel, 97, 305))) + { + return false; + } + base.cursor = base.limit - v_5; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_possessives() { + if (base.find_among_b(a_0) == 0) + { + return false; + } + if (!r_mark_suffix_with_optional_U_vowel()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_sU() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (!(base.in_grouping_b(g_U, 105, 305))) + { + return false; + } + if (!r_mark_suffix_with_optional_s_consonant()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_lArI() { + if (base.find_among_b(a_1) == 0) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_yU() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (!(base.in_grouping_b(g_U, 105, 305))) + { + return false; + } + if (!r_mark_suffix_with_optional_y_consonant()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_nU() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_2) == 0) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_nUn() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_3) == 0) + { + return false; + } + if (!r_mark_suffix_with_optional_n_consonant()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_yA() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_4) == 0) + { + return false; + } + if (!r_mark_suffix_with_optional_y_consonant()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_nA() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_5) == 0) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_DA() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_6) == 0) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_ndA() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_7) == 0) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_DAn() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_8) == 0) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_ndAn() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_9) == 0) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_ylA() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_10) == 0) + { + return false; + } + if (!r_mark_suffix_with_optional_y_consonant()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_ki() { + if (!(base.eq_s_b("ki"))) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_ncA() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_11) == 0) + { + return false; + } + if (!r_mark_suffix_with_optional_n_consonant()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_yUm() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_12) == 0) + { + return false; + } + if (!r_mark_suffix_with_optional_y_consonant()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_sUn() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_13) == 0) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_yUz() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_14) == 0) + { + return false; + } + if (!r_mark_suffix_with_optional_y_consonant()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_sUnUz() { + if (base.find_among_b(a_15) == 0) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_lAr() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_16) == 0) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_nUz() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_17) == 0) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_DUr() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_18) == 0) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_cAsInA() { + if (base.find_among_b(a_19) == 0) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_yDU() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_20) == 0) + { + return false; + } + if (!r_mark_suffix_with_optional_y_consonant()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_ysA() { + if (base.find_among_b(a_21) == 0) + { + return false; + } + if (!r_mark_suffix_with_optional_y_consonant()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_ymUs_() { + if (!r_check_vowel_harmony()) + { + return false; + } + if (base.find_among_b(a_22) == 0) + { + return false; + } + if (!r_mark_suffix_with_optional_y_consonant()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_yken() { + if (!(base.eq_s_b("ken"))) + { + return false; + } + if (!r_mark_suffix_with_optional_y_consonant()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_stem_nominal_verb_suffixes() { + base.ket = base.cursor; + B_continue_stemming_noun_suffixes = true; + lab0: { + var /** number */ v_1 = base.limit - base.cursor; + lab1: { + lab2: { + var /** number */ v_2 = base.limit - base.cursor; + lab3: { + if (!r_mark_ymUs_()) + { + break lab3; + } + break lab2; + } + base.cursor = base.limit - v_2; + lab4: { + if (!r_mark_yDU()) + { + break lab4; + } + break lab2; + } + base.cursor = base.limit - v_2; + lab5: { + if (!r_mark_ysA()) + { + break lab5; + } + break lab2; + } + base.cursor = base.limit - v_2; + if (!r_mark_yken()) + { + break lab1; + } + } + break lab0; + } + base.cursor = base.limit - v_1; + lab6: { + if (!r_mark_cAsInA()) + { + break lab6; + } + lab7: { + var /** number */ v_3 = base.limit - base.cursor; + lab8: { + if (!r_mark_sUnUz()) + { + break lab8; + } + break lab7; + } + base.cursor = base.limit - v_3; + lab9: { + if (!r_mark_lAr()) + { + break lab9; + } + break lab7; + } + base.cursor = base.limit - v_3; + lab10: { + if (!r_mark_yUm()) + { + break lab10; + } + break lab7; + } + base.cursor = base.limit - v_3; + lab11: { + if (!r_mark_sUn()) + { + break lab11; + } + break lab7; + } + base.cursor = base.limit - v_3; + lab12: { + if (!r_mark_yUz()) + { + break lab12; + } + break lab7; + } + base.cursor = base.limit - v_3; + } + if (!r_mark_ymUs_()) + { + break lab6; + } + break lab0; + } + base.cursor = base.limit - v_1; + lab13: { + if (!r_mark_lAr()) + { + break lab13; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_4 = base.limit - base.cursor; + lab14: { + base.ket = base.cursor; + lab15: { + var /** number */ v_5 = base.limit - base.cursor; + lab16: { + if (!r_mark_DUr()) + { + break lab16; + } + break lab15; + } + base.cursor = base.limit - v_5; + lab17: { + if (!r_mark_yDU()) + { + break lab17; + } + break lab15; + } + base.cursor = base.limit - v_5; + lab18: { + if (!r_mark_ysA()) + { + break lab18; + } + break lab15; + } + base.cursor = base.limit - v_5; + if (!r_mark_ymUs_()) + { + base.cursor = base.limit - v_4; + break lab14; + } + } + } + B_continue_stemming_noun_suffixes = false; + break lab0; + } + base.cursor = base.limit - v_1; + lab19: { + if (!r_mark_nUz()) + { + break lab19; + } + lab20: { + var /** number */ v_6 = base.limit - base.cursor; + lab21: { + if (!r_mark_yDU()) + { + break lab21; + } + break lab20; + } + base.cursor = base.limit - v_6; + if (!r_mark_ysA()) + { + break lab19; + } + } + break lab0; + } + base.cursor = base.limit - v_1; + lab22: { + lab23: { + var /** number */ v_7 = base.limit - base.cursor; + lab24: { + if (!r_mark_sUnUz()) + { + break lab24; + } + break lab23; + } + base.cursor = base.limit - v_7; + lab25: { + if (!r_mark_yUz()) + { + break lab25; + } + break lab23; + } + base.cursor = base.limit - v_7; + lab26: { + if (!r_mark_sUn()) + { + break lab26; + } + break lab23; + } + base.cursor = base.limit - v_7; + if (!r_mark_yUm()) + { + break lab22; + } + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_8 = base.limit - base.cursor; + lab27: { + base.ket = base.cursor; + if (!r_mark_ymUs_()) + { + base.cursor = base.limit - v_8; + break lab27; + } + } + break lab0; + } + base.cursor = base.limit - v_1; + if (!r_mark_DUr()) + { + return false; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_9 = base.limit - base.cursor; + lab28: { + base.ket = base.cursor; + lab29: { + var /** number */ v_10 = base.limit - base.cursor; + lab30: { + if (!r_mark_sUnUz()) + { + break lab30; + } + break lab29; + } + base.cursor = base.limit - v_10; + lab31: { + if (!r_mark_lAr()) + { + break lab31; + } + break lab29; + } + base.cursor = base.limit - v_10; + lab32: { + if (!r_mark_yUm()) + { + break lab32; + } + break lab29; + } + base.cursor = base.limit - v_10; + lab33: { + if (!r_mark_sUn()) + { + break lab33; + } + break lab29; + } + base.cursor = base.limit - v_10; + lab34: { + if (!r_mark_yUz()) + { + break lab34; + } + break lab29; + } + base.cursor = base.limit - v_10; + } + if (!r_mark_ymUs_()) + { + base.cursor = base.limit - v_9; + break lab28; + } + } + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_stem_suffix_chain_before_ki() { + base.ket = base.cursor; + if (!r_mark_ki()) + { + return false; + } + lab0: { + var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!r_mark_DA()) + { + break lab1; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_2 = base.limit - base.cursor; + lab2: { + base.ket = base.cursor; + lab3: { + var /** number */ v_3 = base.limit - base.cursor; + lab4: { + if (!r_mark_lAr()) + { + break lab4; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_4 = base.limit - base.cursor; + lab5: { + if (!r_stem_suffix_chain_before_ki()) + { + base.cursor = base.limit - v_4; + break lab5; + } + } + break lab3; + } + base.cursor = base.limit - v_3; + if (!r_mark_possessives()) + { + base.cursor = base.limit - v_2; + break lab2; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_5 = base.limit - base.cursor; + lab6: { + base.ket = base.cursor; + if (!r_mark_lAr()) + { + base.cursor = base.limit - v_5; + break lab6; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + if (!r_stem_suffix_chain_before_ki()) + { + base.cursor = base.limit - v_5; + break lab6; + } + } + } + } + break lab0; + } + base.cursor = base.limit - v_1; + lab7: { + if (!r_mark_nUn()) + { + break lab7; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_6 = base.limit - base.cursor; + lab8: { + base.ket = base.cursor; + lab9: { + var /** number */ v_7 = base.limit - base.cursor; + lab10: { + if (!r_mark_lArI()) + { + break lab10; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + break lab9; + } + base.cursor = base.limit - v_7; + lab11: { + base.ket = base.cursor; + lab12: { + var /** number */ v_8 = base.limit - base.cursor; + lab13: { + if (!r_mark_possessives()) + { + break lab13; + } + break lab12; + } + base.cursor = base.limit - v_8; + if (!r_mark_sU()) + { + break lab11; + } + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_9 = base.limit - base.cursor; + lab14: { + base.ket = base.cursor; + if (!r_mark_lAr()) + { + base.cursor = base.limit - v_9; + break lab14; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + if (!r_stem_suffix_chain_before_ki()) + { + base.cursor = base.limit - v_9; + break lab14; + } + } + break lab9; + } + base.cursor = base.limit - v_7; + if (!r_stem_suffix_chain_before_ki()) + { + base.cursor = base.limit - v_6; + break lab8; + } + } + } + break lab0; + } + base.cursor = base.limit - v_1; + if (!r_mark_ndA()) + { + return false; + } + lab15: { + var /** number */ v_10 = base.limit - base.cursor; + lab16: { + if (!r_mark_lArI()) + { + break lab16; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + break lab15; + } + base.cursor = base.limit - v_10; + lab17: { + if (!r_mark_sU()) + { + break lab17; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_11 = base.limit - base.cursor; + lab18: { + base.ket = base.cursor; + if (!r_mark_lAr()) + { + base.cursor = base.limit - v_11; + break lab18; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + if (!r_stem_suffix_chain_before_ki()) + { + base.cursor = base.limit - v_11; + break lab18; + } + } + break lab15; + } + base.cursor = base.limit - v_10; + if (!r_stem_suffix_chain_before_ki()) + { + return false; + } + } + } + return true; + }; + + /** @return {boolean} */ + function r_stem_noun_suffixes() { + lab0: { + var /** number */ v_1 = base.limit - base.cursor; + lab1: { + base.ket = base.cursor; + if (!r_mark_lAr()) + { + break lab1; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_2 = base.limit - base.cursor; + lab2: { + if (!r_stem_suffix_chain_before_ki()) + { + base.cursor = base.limit - v_2; + break lab2; + } + } + break lab0; + } + base.cursor = base.limit - v_1; + lab3: { + base.ket = base.cursor; + if (!r_mark_ncA()) + { + break lab3; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_3 = base.limit - base.cursor; + lab4: { + lab5: { + var /** number */ v_4 = base.limit - base.cursor; + lab6: { + base.ket = base.cursor; + if (!r_mark_lArI()) + { + break lab6; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + break lab5; + } + base.cursor = base.limit - v_4; + lab7: { + base.ket = base.cursor; + lab8: { + var /** number */ v_5 = base.limit - base.cursor; + lab9: { + if (!r_mark_possessives()) + { + break lab9; + } + break lab8; + } + base.cursor = base.limit - v_5; + if (!r_mark_sU()) + { + break lab7; + } + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_6 = base.limit - base.cursor; + lab10: { + base.ket = base.cursor; + if (!r_mark_lAr()) + { + base.cursor = base.limit - v_6; + break lab10; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + if (!r_stem_suffix_chain_before_ki()) + { + base.cursor = base.limit - v_6; + break lab10; + } + } + break lab5; + } + base.cursor = base.limit - v_4; + base.ket = base.cursor; + if (!r_mark_lAr()) + { + base.cursor = base.limit - v_3; + break lab4; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + if (!r_stem_suffix_chain_before_ki()) + { + base.cursor = base.limit - v_3; + break lab4; + } + } + } + break lab0; + } + base.cursor = base.limit - v_1; + lab11: { + base.ket = base.cursor; + lab12: { + var /** number */ v_7 = base.limit - base.cursor; + lab13: { + if (!r_mark_ndA()) + { + break lab13; + } + break lab12; + } + base.cursor = base.limit - v_7; + if (!r_mark_nA()) + { + break lab11; + } + } + lab14: { + var /** number */ v_8 = base.limit - base.cursor; + lab15: { + if (!r_mark_lArI()) + { + break lab15; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + break lab14; + } + base.cursor = base.limit - v_8; + lab16: { + if (!r_mark_sU()) + { + break lab16; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_9 = base.limit - base.cursor; + lab17: { + base.ket = base.cursor; + if (!r_mark_lAr()) + { + base.cursor = base.limit - v_9; + break lab17; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + if (!r_stem_suffix_chain_before_ki()) + { + base.cursor = base.limit - v_9; + break lab17; + } + } + break lab14; + } + base.cursor = base.limit - v_8; + if (!r_stem_suffix_chain_before_ki()) + { + break lab11; + } + } + break lab0; + } + base.cursor = base.limit - v_1; + lab18: { + base.ket = base.cursor; + lab19: { + var /** number */ v_10 = base.limit - base.cursor; + lab20: { + if (!r_mark_ndAn()) + { + break lab20; + } + break lab19; + } + base.cursor = base.limit - v_10; + if (!r_mark_nU()) + { + break lab18; + } + } + lab21: { + var /** number */ v_11 = base.limit - base.cursor; + lab22: { + if (!r_mark_sU()) + { + break lab22; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_12 = base.limit - base.cursor; + lab23: { + base.ket = base.cursor; + if (!r_mark_lAr()) + { + base.cursor = base.limit - v_12; + break lab23; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + if (!r_stem_suffix_chain_before_ki()) + { + base.cursor = base.limit - v_12; + break lab23; + } + } + break lab21; + } + base.cursor = base.limit - v_11; + if (!r_mark_lArI()) + { + break lab18; + } + } + break lab0; + } + base.cursor = base.limit - v_1; + lab24: { + base.ket = base.cursor; + if (!r_mark_DAn()) + { + break lab24; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_13 = base.limit - base.cursor; + lab25: { + base.ket = base.cursor; + lab26: { + var /** number */ v_14 = base.limit - base.cursor; + lab27: { + if (!r_mark_possessives()) + { + break lab27; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_15 = base.limit - base.cursor; + lab28: { + base.ket = base.cursor; + if (!r_mark_lAr()) + { + base.cursor = base.limit - v_15; + break lab28; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + if (!r_stem_suffix_chain_before_ki()) + { + base.cursor = base.limit - v_15; + break lab28; + } + } + break lab26; + } + base.cursor = base.limit - v_14; + lab29: { + if (!r_mark_lAr()) + { + break lab29; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_16 = base.limit - base.cursor; + lab30: { + if (!r_stem_suffix_chain_before_ki()) + { + base.cursor = base.limit - v_16; + break lab30; + } + } + break lab26; + } + base.cursor = base.limit - v_14; + if (!r_stem_suffix_chain_before_ki()) + { + base.cursor = base.limit - v_13; + break lab25; + } + } + } + break lab0; + } + base.cursor = base.limit - v_1; + lab31: { + base.ket = base.cursor; + lab32: { + var /** number */ v_17 = base.limit - base.cursor; + lab33: { + if (!r_mark_nUn()) + { + break lab33; + } + break lab32; + } + base.cursor = base.limit - v_17; + if (!r_mark_ylA()) + { + break lab31; + } + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_18 = base.limit - base.cursor; + lab34: { + lab35: { + var /** number */ v_19 = base.limit - base.cursor; + lab36: { + base.ket = base.cursor; + if (!r_mark_lAr()) + { + break lab36; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + if (!r_stem_suffix_chain_before_ki()) + { + break lab36; + } + break lab35; + } + base.cursor = base.limit - v_19; + lab37: { + base.ket = base.cursor; + lab38: { + var /** number */ v_20 = base.limit - base.cursor; + lab39: { + if (!r_mark_possessives()) + { + break lab39; + } + break lab38; + } + base.cursor = base.limit - v_20; + if (!r_mark_sU()) + { + break lab37; + } + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_21 = base.limit - base.cursor; + lab40: { + base.ket = base.cursor; + if (!r_mark_lAr()) + { + base.cursor = base.limit - v_21; + break lab40; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + if (!r_stem_suffix_chain_before_ki()) + { + base.cursor = base.limit - v_21; + break lab40; + } + } + break lab35; + } + base.cursor = base.limit - v_19; + if (!r_stem_suffix_chain_before_ki()) + { + base.cursor = base.limit - v_18; + break lab34; + } + } + } + break lab0; + } + base.cursor = base.limit - v_1; + lab41: { + base.ket = base.cursor; + if (!r_mark_lArI()) + { + break lab41; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + break lab0; + } + base.cursor = base.limit - v_1; + lab42: { + if (!r_stem_suffix_chain_before_ki()) + { + break lab42; + } + break lab0; + } + base.cursor = base.limit - v_1; + lab43: { + base.ket = base.cursor; + lab44: { + var /** number */ v_22 = base.limit - base.cursor; + lab45: { + if (!r_mark_DA()) + { + break lab45; + } + break lab44; + } + base.cursor = base.limit - v_22; + lab46: { + if (!r_mark_yU()) + { + break lab46; + } + break lab44; + } + base.cursor = base.limit - v_22; + if (!r_mark_yA()) + { + break lab43; + } + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_23 = base.limit - base.cursor; + lab47: { + base.ket = base.cursor; + lab48: { + var /** number */ v_24 = base.limit - base.cursor; + lab49: { + if (!r_mark_possessives()) + { + break lab49; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_25 = base.limit - base.cursor; + lab50: { + base.ket = base.cursor; + if (!r_mark_lAr()) + { + base.cursor = base.limit - v_25; + break lab50; + } + } + break lab48; + } + base.cursor = base.limit - v_24; + if (!r_mark_lAr()) + { + base.cursor = base.limit - v_23; + break lab47; + } + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + base.ket = base.cursor; + if (!r_stem_suffix_chain_before_ki()) + { + base.cursor = base.limit - v_23; + break lab47; + } + } + break lab0; + } + base.cursor = base.limit - v_1; + base.ket = base.cursor; + lab51: { + var /** number */ v_26 = base.limit - base.cursor; + lab52: { + if (!r_mark_possessives()) + { + break lab52; + } + break lab51; + } + base.cursor = base.limit - v_26; + if (!r_mark_sU()) + { + return false; + } + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + var /** number */ v_27 = base.limit - base.cursor; + lab53: { + base.ket = base.cursor; + if (!r_mark_lAr()) + { + base.cursor = base.limit - v_27; + break lab53; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + if (!r_stem_suffix_chain_before_ki()) + { + base.cursor = base.limit - v_27; + break lab53; + } + } + } + return true; + }; + + /** @return {boolean} */ + function r_post_process_last_consonants() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_23); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_from("p")) + { + return false; + } + break; + case 2: + if (!base.slice_from("\u00E7")) + { + return false; + } + break; + case 3: + if (!base.slice_from("t")) + { + return false; + } + break; + case 4: + if (!base.slice_from("k")) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_append_U_to_stems_ending_with_d_or_g() { + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + var /** number */ v_2 = base.limit - base.cursor; + lab1: { + if (!(base.eq_s_b("d"))) + { + break lab1; + } + break lab0; + } + base.cursor = base.limit - v_2; + if (!(base.eq_s_b("g"))) + { + return false; + } + } + base.cursor = base.limit - v_1; + lab2: { + var /** number */ v_3 = base.limit - base.cursor; + lab3: { + var /** number */ v_4 = base.limit - base.cursor; + golab4: while(true) + { + var /** number */ v_5 = base.limit - base.cursor; + lab5: { + if (!(base.in_grouping_b(g_vowel, 97, 305))) + { + break lab5; + } + base.cursor = base.limit - v_5; + break golab4; + } + base.cursor = base.limit - v_5; + if (base.cursor <= base.limit_backward) + { + break lab3; + } + base.cursor--; + } + lab6: { + var /** number */ v_6 = base.limit - base.cursor; + lab7: { + if (!(base.eq_s_b("a"))) + { + break lab7; + } + break lab6; + } + base.cursor = base.limit - v_6; + if (!(base.eq_s_b("\u0131"))) + { + break lab3; + } + } + base.cursor = base.limit - v_4; + { + var /** number */ c1 = base.cursor; + base.insert(base.cursor, base.cursor, "\u0131"); + base.cursor = c1; + } + break lab2; + } + base.cursor = base.limit - v_3; + lab8: { + var /** number */ v_7 = base.limit - base.cursor; + golab9: while(true) + { + var /** number */ v_8 = base.limit - base.cursor; + lab10: { + if (!(base.in_grouping_b(g_vowel, 97, 305))) + { + break lab10; + } + base.cursor = base.limit - v_8; + break golab9; + } + base.cursor = base.limit - v_8; + if (base.cursor <= base.limit_backward) + { + break lab8; + } + base.cursor--; + } + lab11: { + var /** number */ v_9 = base.limit - base.cursor; + lab12: { + if (!(base.eq_s_b("e"))) + { + break lab12; + } + break lab11; + } + base.cursor = base.limit - v_9; + if (!(base.eq_s_b("i"))) + { + break lab8; + } + } + base.cursor = base.limit - v_7; + { + var /** number */ c2 = base.cursor; + base.insert(base.cursor, base.cursor, "i"); + base.cursor = c2; + } + break lab2; + } + base.cursor = base.limit - v_3; + lab13: { + var /** number */ v_10 = base.limit - base.cursor; + golab14: while(true) + { + var /** number */ v_11 = base.limit - base.cursor; + lab15: { + if (!(base.in_grouping_b(g_vowel, 97, 305))) + { + break lab15; + } + base.cursor = base.limit - v_11; + break golab14; + } + base.cursor = base.limit - v_11; + if (base.cursor <= base.limit_backward) + { + break lab13; + } + base.cursor--; + } + lab16: { + var /** number */ v_12 = base.limit - base.cursor; + lab17: { + if (!(base.eq_s_b("o"))) + { + break lab17; + } + break lab16; + } + base.cursor = base.limit - v_12; + if (!(base.eq_s_b("u"))) + { + break lab13; + } + } + base.cursor = base.limit - v_10; + { + var /** number */ c3 = base.cursor; + base.insert(base.cursor, base.cursor, "u"); + base.cursor = c3; + } + break lab2; + } + base.cursor = base.limit - v_3; + var /** number */ v_13 = base.limit - base.cursor; + golab18: while(true) + { + var /** number */ v_14 = base.limit - base.cursor; + lab19: { + if (!(base.in_grouping_b(g_vowel, 97, 305))) + { + break lab19; + } + base.cursor = base.limit - v_14; + break golab18; + } + base.cursor = base.limit - v_14; + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + } + lab20: { + var /** number */ v_15 = base.limit - base.cursor; + lab21: { + if (!(base.eq_s_b("\u00F6"))) + { + break lab21; + } + break lab20; + } + base.cursor = base.limit - v_15; + if (!(base.eq_s_b("\u00FC"))) + { + return false; + } + } + base.cursor = base.limit - v_13; + { + var /** number */ c4 = base.cursor; + base.insert(base.cursor, base.cursor, "\u00FC"); + base.cursor = c4; + } + } + return true; + }; + + /** @return {boolean} */ + function r_is_reserved_word() { + if (!(base.eq_s_b("ad"))) + { + return false; + } + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + if (!(base.eq_s_b("soy"))) + { + base.cursor = base.limit - v_1; + break lab0; + } + } + if (base.cursor > base.limit_backward) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_more_than_one_syllable_word() { + var /** number */ v_1 = base.cursor; + { + var v_2 = 2; + while(true) + { + var /** number */ v_3 = base.cursor; + lab0: { + golab1: while(true) + { + lab2: { + if (!(base.in_grouping(g_vowel, 97, 305))) + { + break lab2; + } + break golab1; + } + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + v_2--; + continue; + } + base.cursor = v_3; + break; + } + if (v_2 > 0) + { + return false; + } + } + base.cursor = v_1; + return true; + }; + + /** @return {boolean} */ + function r_postlude() { + base.limit_backward = base.cursor; base.cursor = base.limit; + { + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + if (!r_is_reserved_word()) + { + break lab0; + } + return false; + } + base.cursor = base.limit - v_1; + } + var /** number */ v_2 = base.limit - base.cursor; + r_append_U_to_stems_ending_with_d_or_g(); + base.cursor = base.limit - v_2; + var /** number */ v_3 = base.limit - base.cursor; + r_post_process_last_consonants(); + base.cursor = base.limit - v_3; + base.cursor = base.limit_backward; + return true; + }; + + this.stem = /** @return {boolean} */ function() { + if (!r_more_than_one_syllable_word()) + { + return false; + } + base.limit_backward = base.cursor; base.cursor = base.limit; + var /** number */ v_1 = base.limit - base.cursor; + r_stem_nominal_verb_suffixes(); + base.cursor = base.limit - v_1; + if (!B_continue_stemming_noun_suffixes) + { + return false; + } + var /** number */ v_2 = base.limit - base.cursor; + r_stem_noun_suffixes(); + base.cursor = base.limit - v_2; + base.cursor = base.limit_backward; + if (!r_postlude()) + { + return false; + } + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/sphinx/search/pt.py b/sphinx/search/pt.py new file mode 100644 index 0000000..908a417 --- /dev/null +++ b/sphinx/search/pt.py @@ -0,0 +1,261 @@ +"""Portuguese search language: includes the JS Portuguese stemmer.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + +portuguese_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/portuguese/stop.txt +de | of, from +a | the; to, at; her +o | the; him +que | who, that +e | and +do | de + o +da | de + a +em | in +um | a +para | for + | é from SER +com | with +não | not, no +uma | a +os | the; them +no | em + o +se | himself etc +na | em + a +por | for +mais | more +as | the; them +dos | de + os +como | as, like +mas | but + | foi from SER +ao | a + o +ele | he +das | de + as + | tem from TER +à | a + a +seu | his +sua | her +ou | or + | ser from SER +quando | when +muito | much + | há from HAV +nos | em + os; us +já | already, now + | está from EST +eu | I +também | also +só | only, just +pelo | per + o +pela | per + a +até | up to +isso | that +ela | he +entre | between + | era from SER +depois | after +sem | without +mesmo | same +aos | a + os + | ter from TER +seus | his +quem | whom +nas | em + as +me | me +esse | that +eles | they + | estão from EST +você | you + | tinha from TER + | foram from SER +essa | that +num | em + um +nem | nor +suas | her +meu | my +às | a + as +minha | my + | têm from TER +numa | em + uma +pelos | per + os +elas | they + | havia from HAV + | seja from SER +qual | which + | será from SER +nós | we + | tenho from TER +lhe | to him, her +deles | of them +essas | those +esses | those +pelas | per + as +este | this + | fosse from SER +dele | of him + + | other words. There are many contractions such as naquele = em+aquele, + | mo = me+o, but they are rare. + | Indefinite article plural forms are also rare. + +tu | thou +te | thee +vocês | you (plural) +vos | you +lhes | to them +meus | my +minhas +teu | thy +tua +teus +tuas +nosso | our +nossa +nossos +nossas + +dela | of her +delas | of them + +esta | this +estes | these +estas | these +aquele | that +aquela | that +aqueles | those +aquelas | those +isto | this +aquilo | that + + | forms of estar, to be (not including the infinitive): +estou +está +estamos +estão +estive +esteve +estivemos +estiveram +estava +estávamos +estavam +estivera +estivéramos +esteja +estejamos +estejam +estivesse +estivéssemos +estivessem +estiver +estivermos +estiverem + + | forms of haver, to have (not including the infinitive): +hei +há +havemos +hão +houve +houvemos +houveram +houvera +houvéramos +haja +hajamos +hajam +houvesse +houvéssemos +houvessem +houver +houvermos +houverem +houverei +houverá +houveremos +houverão +houveria +houveríamos +houveriam + + | forms of ser, to be (not including the infinitive): +sou +somos +são +era +éramos +eram +fui +foi +fomos +foram +fora +fôramos +seja +sejamos +sejam +fosse +fôssemos +fossem +for +formos +forem +serei +será +seremos +serão +seria +seríamos +seriam + + | forms of ter, to have (not including the infinitive): +tenho +tem +temos +tém +tinha +tínhamos +tinham +tive +teve +tivemos +tiveram +tivera +tivéramos +tenha +tenhamos +tenham +tivesse +tivéssemos +tivessem +tiver +tivermos +tiverem +terei +terá +teremos +terão +teria +teríamos +teriam +''') + + +class SearchPortuguese(SearchLanguage): + lang = 'pt' + language_name = 'Portuguese' + js_stemmer_rawcode = 'portuguese-stemmer.js' + stopwords = portuguese_stopwords + + def init(self, options: dict) -> None: + self.stemmer = snowballstemmer.stemmer('portuguese') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/search/ro.py b/sphinx/search/ro.py new file mode 100644 index 0000000..b6c9d67 --- /dev/null +++ b/sphinx/search/ro.py @@ -0,0 +1,22 @@ +"""Romanian search language: includes the JS Romanian stemmer.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Dict, Set + +import snowballstemmer + +from sphinx.search import SearchLanguage + + +class SearchRomanian(SearchLanguage): + lang = 'ro' + language_name = 'Romanian' + js_stemmer_rawcode = 'romanian-stemmer.js' + stopwords: set[str] = set() + + def init(self, options: dict) -> None: + self.stemmer = snowballstemmer.stemmer('romanian') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/search/ru.py b/sphinx/search/ru.py new file mode 100644 index 0000000..b8412c1 --- /dev/null +++ b/sphinx/search/ru.py @@ -0,0 +1,251 @@ +"""Russian search language: includes the JS Russian stemmer.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + +russian_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/russian/stop.txt +и | and +в | in/into +во | alternative form +не | not +что | what/that +он | he +на | on/onto +я | i +с | from +со | alternative form +как | how +а | milder form of `no' (but) +то | conjunction and form of `that' +все | all +она | she +так | so, thus +его | him +но | but +да | yes/and +ты | thou +к | towards, by +у | around, chez +же | intensifier particle +вы | you +за | beyond, behind +бы | conditional/subj. particle +по | up to, along +только | only +ее | her +мне | to me +было | it was +вот | here is/are, particle +от | away from +меня | me +еще | still, yet, more +нет | no, there isnt/arent +о | about +из | out of +ему | to him +теперь | now +когда | when +даже | even +ну | so, well +вдруг | suddenly +ли | interrogative particle +если | if +уже | already, but homonym of `narrower' +или | or +ни | neither +быть | to be +был | he was +него | prepositional form of его +до | up to +вас | you accusative +нибудь | indef. suffix preceded by hyphen +опять | again +уж | already, but homonym of `adder' +вам | to you +сказал | he said +ведь | particle `after all' +там | there +потом | then +себя | oneself +ничего | nothing +ей | to her +может | usually with `быть' as `maybe' +они | they +тут | here +где | where +есть | there is/are +надо | got to, must +ней | prepositional form of ей +для | for +мы | we +тебя | thee +их | them, their +чем | than +была | she was +сам | self +чтоб | in order to +без | without +будто | as if +человек | man, person, one +чего | genitive form of `what' +раз | once +тоже | also +себе | to oneself +под | beneath +жизнь | life +будет | will be +ж | short form of intensifer particle `же' +тогда | then +кто | who +этот | this +говорил | was saying +того | genitive form of `that' +потому | for that reason +этого | genitive form of `this' +какой | which +совсем | altogether +ним | prepositional form of `его', `они' +здесь | here +этом | prepositional form of `этот' +один | one +почти | almost +мой | my +тем | instrumental/dative plural of `тот', `то' +чтобы | full form of `in order that' +нее | her (acc.) +кажется | it seems +сейчас | now +были | they were +куда | where to +зачем | why +сказать | to say +всех | all (acc., gen. preposn. plural) +никогда | never +сегодня | today +можно | possible, one can +при | by +наконец | finally +два | two +об | alternative form of `о', about +другой | another +хоть | even +после | after +над | above +больше | more +тот | that one (masc.) +через | across, in +эти | these +нас | us +про | about +всего | in all, only, of all +них | prepositional form of `они' (they) +какая | which, feminine +много | lots +разве | interrogative particle +сказала | she said +три | three +эту | this, acc. fem. sing. +моя | my, feminine +впрочем | moreover, besides +хорошо | good +свою | ones own, acc. fem. sing. +этой | oblique form of `эта', fem. `this' +перед | in front of +иногда | sometimes +лучше | better +чуть | a little +том | preposn. form of `that one' +нельзя | one must not +такой | such a one +им | to them +более | more +всегда | always +конечно | of course +всю | acc. fem. sing of `all' +между | between + + + | b: some paradigms + | + | personal pronouns + | + | я меня мне мной [мною] + | ты тебя тебе тобой [тобою] + | он его ему им [него, нему, ним] + | она ее эи ею [нее, нэи, нею] + | оно его ему им [него, нему, ним] + | + | мы нас нам нами + | вы вас вам вами + | они их им ими [них, ним, ними] + | + | себя себе собой [собою] + | + | demonstrative pronouns: этот (this), тот (that) + | + | этот эта это эти + | этого эты это эти + | этого этой этого этих + | этому этой этому этим + | этим этой этим [этою] этими + | этом этой этом этих + | + | тот та то те + | того ту то те + | того той того тех + | тому той тому тем + | тем той тем [тою] теми + | том той том тех + | + | determinative pronouns + | + | (a) весь (all) + | + | весь вся все все + | всего всю все все + | всего всей всего всех + | всему всей всему всем + | всем всей всем [всею] всеми + | всем всей всем всех + | + | (b) сам (himself etc) + | + | сам сама само сами + | самого саму само самих + | самого самой самого самих + | самому самой самому самим + | самим самой самим [самою] самими + | самом самой самом самих + | + | stems of verbs `to be', `to have', `to do' and modal + | + | быть бы буд быв есть суть + | име + | дел + | мог мож мочь + | уме + | хоч хот + | долж + | можн + | нужн + | нельзя +''') + + +class SearchRussian(SearchLanguage): + lang = 'ru' + language_name = 'Russian' + js_stemmer_rawcode = 'russian-stemmer.js' + stopwords = russian_stopwords + + def init(self, options: dict) -> None: + self.stemmer = snowballstemmer.stemmer('russian') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/search/sv.py b/sphinx/search/sv.py new file mode 100644 index 0000000..88cc560 --- /dev/null +++ b/sphinx/search/sv.py @@ -0,0 +1,140 @@ +"""Swedish search language: includes the JS Swedish stemmer.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Dict + +import snowballstemmer + +from sphinx.search import SearchLanguage, parse_stop_word + +swedish_stopwords = parse_stop_word(''' +| source: http://snowball.tartarus.org/algorithms/swedish/stop.txt +och | and +det | it, this/that +att | to (with infinitive) +i | in, at +en | a +jag | I +hon | she +som | who, that +han | he +på | on +den | it, this/that +med | with +var | where, each +sig | him(self) etc +för | for +så | so (also: seed) +till | to +är | is +men | but +ett | a +om | if; around, about +hade | had +de | they, these/those +av | of +icke | not, no +mig | me +du | you +henne | her +då | then, when +sin | his +nu | now +har | have +inte | inte någon = no one +hans | his +honom | him +skulle | 'sake' +hennes | her +där | there +min | my +man | one (pronoun) +ej | nor +vid | at, by, on (also: vast) +kunde | could +något | some etc +från | from, off +ut | out +när | when +efter | after, behind +upp | up +vi | we +dem | them +vara | be +vad | what +över | over +än | than +dig | you +kan | can +sina | his +här | here +ha | have +mot | towards +alla | all +under | under (also: wonder) +någon | some etc +eller | or (else) +allt | all +mycket | much +sedan | since +ju | why +denna | this/that +själv | myself, yourself etc +detta | this/that +åt | to +utan | without +varit | was +hur | how +ingen | no +mitt | my +ni | you +bli | to be, become +blev | from bli +oss | us +din | thy +dessa | these/those +några | some etc +deras | their +blir | from bli +mina | my +samma | (the) same +vilken | who, that +er | you, your +sådan | such a +vår | our +blivit | from bli +dess | its +inom | within +mellan | between +sådant | such a +varför | why +varje | each +vilka | who, that +ditt | thy +vem | who +vilket | who, that +sitta | his +sådana | such a +vart | each +dina | thy +vars | whose +vårt | our +våra | our +ert | your +era | your +vilkas | whose +''') + + +class SearchSwedish(SearchLanguage): + lang = 'sv' + language_name = 'Swedish' + js_stemmer_rawcode = 'swedish-stemmer.js' + stopwords = swedish_stopwords + + def init(self, options: dict) -> None: + self.stemmer = snowballstemmer.stemmer('swedish') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/search/tr.py b/sphinx/search/tr.py new file mode 100644 index 0000000..f4a865c --- /dev/null +++ b/sphinx/search/tr.py @@ -0,0 +1,22 @@ +"""Turkish search language: includes the JS Turkish stemmer.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Dict, Set + +import snowballstemmer + +from sphinx.search import SearchLanguage + + +class SearchTurkish(SearchLanguage): + lang = 'tr' + language_name = 'Turkish' + js_stemmer_rawcode = 'turkish-stemmer.js' + stopwords: set[str] = set() + + def init(self, options: dict) -> None: + self.stemmer = snowballstemmer.stemmer('turkish') + + def stem(self, word: str) -> str: + return self.stemmer.stemWord(word.lower()) diff --git a/sphinx/search/zh.py b/sphinx/search/zh.py new file mode 100644 index 0000000..2a3a6e7 --- /dev/null +++ b/sphinx/search/zh.py @@ -0,0 +1,262 @@ +"""Chinese search language: includes routine to split words.""" + +from __future__ import annotations + +import os +import re +from typing import TYPE_CHECKING, Dict, List + +import snowballstemmer + +from sphinx.search import SearchLanguage + +try: + import jieba + JIEBA = True +except ImportError: + JIEBA = False + +english_stopwords = set(""" +a and are as at +be but by +for +if in into is it +near no not +of on or +such +that the their then there these they this to +was will with +""".split()) + +js_porter_stemmer = """ +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|\ +ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|\ +iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} +""" + + +class SearchChinese(SearchLanguage): + """ + Chinese search implementation + """ + + lang = 'zh' + language_name = 'Chinese' + js_stemmer_code = js_porter_stemmer + stopwords = english_stopwords + latin1_letters = re.compile(r'[a-zA-Z0-9_]+') + latin_terms: list[str] = [] + + def init(self, options: dict) -> None: + if JIEBA: + dict_path = options.get('dict') + if dict_path and os.path.isfile(dict_path): + jieba.load_userdict(dict_path) + + self.stemmer = snowballstemmer.stemmer('english') + + def split(self, input: str) -> list[str]: + chinese: list[str] = [] + if JIEBA: + chinese = list(jieba.cut_for_search(input)) + + latin1 = \ + [term.strip() for term in self.latin1_letters.findall(input)] + self.latin_terms.extend(latin1) + return chinese + latin1 + + def word_filter(self, stemmed_word: str) -> bool: + return len(stemmed_word) > 1 + + def stem(self, word: str) -> str: + # Don't stem Latin words that are long enough to be relevant for search + # if not stemmed, but would be too short after being stemmed + # avoids some issues with acronyms + should_not_be_stemmed = ( + word in self.latin_terms and + len(word) >= 3 and + len(self.stemmer.stemWord(word.lower())) < 3 + ) + if should_not_be_stemmed: + return word.lower() + return self.stemmer.stemWord(word.lower()) -- cgit v1.2.3