@orama/stemmers
Version:
Stemmers for Orama
1 lines • 5 kB
JavaScript
"use strict";function _export(r,s){for(var t in s)Object.defineProperty(r,t,{enumerable:!0,get:Object.getOwnPropertyDescriptor(s,t).get})}Object.defineProperty(exports,"__esModule",{value:!0}),_export(exports,{get language(){return language},get stemmer(){return stemmer}});var g=!0,p=!1;function C(){this.p=function(r){this.j=r,this.cursor=0,this.a=this.j.length,this.f=0,this.c=this.cursor,this.d=this.a},this.z=function(){return this.j},this.w=function(r){this.j=r.j,this.cursor=r.cursor,this.a=r.a,this.f=r.f,this.c=r.c,this.d=r.d},this.i=function(r,s,t){if(this.cursor>=this.a)return p;var e=this.j.charCodeAt(this.cursor);return e>t||e<s||0==(r[(e-=s)>>>3]&1<<(7&e))?p:(this.cursor++,g)},this.n=function(r,s,t){if(this.cursor<=this.f)return p;var e=this.j.charCodeAt(this.cursor-1);return e>t||e<s||0==(r[(e-=s)>>>3]&1<<(7&e))?p:(this.cursor--,g)},this.k=function(r,s,t){if(this.cursor>=this.a)return p;var e=this.j.charCodeAt(this.cursor);return e>t||e<s||0==(r[(e-=s)>>>3]&1<<(7&e))?(this.cursor++,g):p},this.q=function(r,s,t){if(this.cursor<=this.f)return p;var e=this.j.charCodeAt(this.cursor-1);return e>t||e<s||0==(r[(e-=s)>>>3]&1<<(7&e))?(this.cursor--,g):p},this.m=function(r){return this.a-this.cursor<r.length||this.j.slice(this.cursor,this.cursor+r.length)!=r?p:(this.cursor+=r.length,g)},this.g=function(r){return this.cursor-this.f<r.length||this.j.slice(this.cursor-r.length,this.cursor)!=r?p:(this.cursor-=r.length,g)},this.o=function(r){for(var s=0,t=r.length,e=this.cursor,i=this.a,h=0,c=0,u=p;;){var o,n=s+(t-s>>>1),f=0,a=h<c?h:c,l=r[n];for(o=a;o<l[0].length;o++){if(e+a==i){f=-1;break}if(0!=(f=this.j.charCodeAt(e+a)-l[0].charCodeAt(o)))break;a++}if(0>f?(t=n,c=a):(s=n,h=a),1>=t-s){if(0<s||t==s||u)break;u=g}}for(;;){if(h>=(l=r[s])[0].length&&(this.cursor=e+l[0].length,4>l.length||(s=l[3](this),this.cursor=e+l[0].length,s)))return l[2];if(0>(s=l[1]))return 0}},this.h=function(r){for(var s=0,t=r.length,e=this.cursor,i=this.f,h=0,c=0,u=p;;){var o,n=s+(t-s>>1),f=0,a=h<c?h:c,l=r[n];for(o=l[0].length-1-a;0<=o;o--){if(e-a==i){f=-1;break}if(0!=(f=this.j.charCodeAt(e-1-a)-l[0].charCodeAt(o)))break;a++}if(0>f?(t=n,c=a):(s=n,h=a),1>=t-s){if(0<s||t==s||u)break;u=g}}for(;;){if(h>=(l=r[s])[0].length&&(this.cursor=e-l[0].length,4>l.length||(s=l[3](this),this.cursor=e-l[0].length,s)))return l[2];if(0>(s=l[1]))return 0}},this.s=function(r,s,t){var e=t.length-(s-r);return this.j=this.j.slice(0,r)+t+this.j.slice(s),this.a+=e,this.cursor>=s?this.cursor+=e:this.cursor>r&&(this.cursor=r),e},this.t=function(){return 0>this.c||this.c>this.d||this.d>this.a||this.a>this.j.length?p:g},this.b=function(r){var s=p;return this.t()&&(this.s(this.c,this.d,r),s=g),s},this.e=function(){return this.b("")},this.r=function(r,s,t){s=this.s(r,s,t),r<=this.c&&(this.c+=s),r<=this.d&&(this.d+=s)},this.u=function(){var r="";return this.t()&&(r=this.j.slice(this.c,this.d)),r},this.v=function(){return this.j.slice(0,this.a)}}function stem(){function r(){var r=s.a-s.cursor;if(!(s.cursor<n)){var t=s.f;s.f=n,s.d=s.cursor,0==s.h(e)?s.f=t:(s.c=s.cursor,s.f=t,s.cursor=s.a-r,s.cursor<=s.f||(s.cursor--,s.c=s.cursor,s.e()))}}var s=new C,t=[["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]],e=[["gd",-1,-1],["dt",-1,-1],["gt",-1,-1],["kt",-1,-1]],i=[["ig",-1,1],["lig",0,1],["elig",1,1],["els",-1,1],["l\xf8st",-1,2]],h=[119,223,119,1],c=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],u=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],o=0,n=0,f="";this.l=function(){var e=s.cursor;r:{n=s.a;var a=s.cursor,l=s.cursor+3;if(!(l>s.a)){for(s.cursor=l,o=s.cursor,s.cursor=a;;){if(a=s.cursor,s.i(c,97,248)){s.cursor=a;break}if(s.cursor=a,s.cursor>=s.a)break r;s.cursor++}for(;!s.k(c,97,248);){if(s.cursor>=s.a)break r;s.cursor++}(n=s.cursor)<o&&(n=o)}}if(s.cursor=e,s.f=s.cursor,s.cursor=s.a,e=s.a-s.cursor,!(s.cursor<n))if(l=s.f,s.f=n,s.d=s.cursor,0==(a=s.h(t)))s.f=l;else switch(s.c=s.cursor,s.f=l,a){case 1:s.e();break;case 2:s.n(u,97,229)&&s.e()}if((s.cursor=s.a-e,e=s.a-s.cursor,r(),s.cursor=s.a-e,e=s.a-s.cursor,a=s.a-s.cursor,s.d=s.cursor,!(s.g("st")&&(s.c=s.cursor,s.g("ig")&&!s.e())))&&(s.cursor=s.a-a,!(s.cursor<n)))if(l=s.f,s.f=n,s.d=s.cursor,0==(a=s.h(i)))s.f=l;else switch(s.c=s.cursor,s.f=l,a){case 1:if(!s.e())break;a=s.a-s.cursor,r(),s.cursor=s.a-a;break;case 2:s.b("l\xf8s")}return s.cursor=s.a-e,e=s.a-s.cursor,s.cursor<n||(a=s.f,s.f=n,s.d=s.cursor,s.n(h,98,122)?(s.c=s.cursor,""!=(f=s.u())&&(s.f=a,s.g(f)&&s.e())):s.f=a),s.cursor=s.a-e,s.cursor=s.f,g},this.stemWord=function(r){return s.p(r),this.l(),s.j}}let stemmerInstance=new stem;function stemmer(r){return stemmerInstance.stemWord(r)}let language="danish";