# -*- coding: utf-8 -*- """ sphinx.search.no ~~~~~~~~~~~~~~~~ Norwegian search language: includes the JS Norwegian stemmer. :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. """ from sphinx.search import SearchLanguage, parse_stop_word import snowballstemmer if False: # For type annotation from typing import Any # NOQA from sphinx.util.typing import unicode # NOQA norwegian_stopwords = parse_stop_word(u''' | 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 * ''') js_stemmer = u""" var JSX={};(function(g){function i(b,e){var a=function(){};a.prototype=e.prototype;var c=new a;for(var d in b){b[d].prototype=c}}function G(c,b){for(var a in b.prototype)if(b.prototype.hasOwnProperty(a))c.prototype[a]=b.prototype[a]}function e(a,b,d){function c(a,b,c){delete a[b];a[b]=c;return c}Object.defineProperty(a,b,{get:function(){return c(a,b,d())},set:function(d){c(a,b,d)},enumerable:true,configurable:true})}function H(a,b,c){return a[b]=a[b]/c|0}var B=parseInt;var q=parseFloat;function I(a){return a!==a}var y=isFinite;var x=encodeURIComponent;var w=decodeURIComponent;var u=encodeURI;var t=decodeURI;var s=Object.prototype.toString;var r=Object.prototype.hasOwnProperty;function h(){}g.require=function(b){var a=m[b];return a!==undefined?a:null};g.profilerIsRunning=function(){return h.getResults!=null};g.getProfileResults=function(){return(h.getResults||function(){return{}})()};g.postProfileResults=function(a,b){if(h.postResults==null)throw new Error('profiler has not been turned on');return h.postResults(a,b)};g.resetProfileResults=function(){if(h.resetResults==null)throw new Error('profiler has not been turned on');return h.resetResults()};g.DEBUG=false;function A(){};i([A],Error);function b(a,b,c){this.G=a.length;this.R=a;this.U=b;this.J=c;this.I=null;this.V=null};i([b],Object);function j(){};i([j],Object);function d(){var a;var b;var c;this.F={};a=this.C='';b=this._=0;c=this.A=a.length;this.B=0;this.D=b;this.E=c};i([d],j);function v(a,b){a.C=b.C;a._=b._;a.A=b.A;a.B=b.B;a.D=b.D;a.E=b.E};function l(b,d,c,e){var a;if(b._>=b.A){return false}a=b.C.charCodeAt(b._);if(a>e||a>>3]&1<<(a&7))===0){return false}b._++;return true};function k(b,d,c,e){var a;if(b._<=b.B){return false}a=b.C.charCodeAt(b._-1);if(a>e||a>>3]&1<<(a&7))===0){return false}b._--;return true};function p(a,d,c,e){var b;if(a._>=a.A){return false}b=a.C.charCodeAt(a._);if(b>e||b>>3]&1<<(b&7))===0){a._++;return true}return false};function o(a,d,c,e){var b;if(a._<=a.B){return false}b=a.C.charCodeAt(a._-1);if(b>e||b>>3]&1<<(b&7))===0){a._--;return true}return false};function n(a,b,d){var c;if(a._-a.B>1);h=0;c=f=0;j--){if(e-c===n){h=-1;break}h=d.C.charCodeAt(e-1-c)-a.R.charCodeAt(j);if(h!==0){break}c++}if(h<0){g=i;k=c}else{b=i;f=c}if(g-b<=1){if(b>0){break}if(g===b){break}if(l){break}l=true}}while(true){a=m[b];if(f>=a.G){d._=e-a.G|0;if(a.I==null){return a.J}o=a.I(d);d._=e-a.G|0;if(o){return a.J}}b=a.U;if(b<0){return 0}}return-1};function C(a,b,d,e){var c;c=e.length-(d-b);a.C=a.C.slice(0,b)+e+a.C.slice(d);a.A+=c|0;if(a._>=d){a._+=c|0}else if(a._>b){a._=b}return c|0};function c(a,f){var b;var c;var d;var e;b=false;if((c=a.D)<0||c>(d=a.E)||d>(e=a.A)||e>a.C.length?false:true){C(a,a.D,a.E,f);b=true}return b};d.prototype.H=function(){return false};d.prototype.S=function(b){var a;var c;var d;var e;a=this.F['.'+b];if(a==null){c=this.C=b;d=this._=0;e=this.A=c.length;this.B=0;this.D=d;this.E=e;this.H();a=this.C;this.F['.'+b]=a}return a};d.prototype.stemWord=d.prototype.S;d.prototype.T=function(e){var d;var b;var c;var a;var f;var g;var h;d=[];for(b=0;bb||b>j){return false}h=this._=b;this.I_x=h;this._=g;a:while(true){d=this._;e=true;b:while(e===true){e=false;if(!l(this,a.g_v,97,248)){break b}this._=d;break a}k=this._=d;if(k>=this.A){return false}this._++}a:while(true){c=true;b:while(c===true){c=false;if(!p(this,a.g_v,97,248)){break b}break a}if(this._>=this.A){return false}this._++}this.I_p1=this._;f=true;a:while(f===true){f=false;if(!(this.I_p1c||c>k){return false}i=b._=c;b.I_x=i;b._=h;a:while(true){e=b._;f=true;b:while(f===true){f=false;if(!l(b,a.g_v,97,248)){break b}b._=e;break a}m=b._=e;if(m>=b.A){return false}b._++}a:while(true){d=true;b:while(d===true){d=false;if(!p(b,a.g_v,97,248)){break b}break a}if(b._>=b.A){return false}b._++}b.I_p1=b._;g=true;a:while(g===true){g=false;if(!(b.I_p1 None self.stemmer = snowballstemmer.stemmer('norwegian') def stem(self, word): # type: (unicode) -> unicode return self.stemmer.stemWord(word.lower())