latvian-grammar
Version:
Latvian grammar library
3 lines (2 loc) • 3.42 kB
JavaScript
var s=s=>e.includes(s),e="aAāĀeEēĒiIīĪoOōŌuUūŪ",i=s=>a.includes(s),a="bBcCčČdDfFgGģĢhHjJkKķĶlLļĻmMnNņŅpPrRŗŖsSšŠtTvVzZžŽ",t={masculine:"masculine",feminine:"feminine"},n=function(s,e){void 0===e&&(e=t.masculine);var i=s.substr(-1),a=s.substr(-2);if(e===t.masculine){if(m.includes(s))return r(2,"s",!0);if("ļaudis"===s)return r(6,"is",!0)}var n=e===t.masculine?u:l,v=n[a]?a:i;if(!n[v])throw Error("invalid word: "+s);return r(n[v],v)},r=function(s,e,i){return void 0===i&&(i=!1),{declensionCase:s,suffix:e,exception:i}},u={s:1,"š":1,is:2,us:3,a:4,e:5},l={a:4,e:5,s:6},m=["mēness","akmens","asmens","ūdens","rudens","zibens","suns","sāls"],v=(s,e)=>{var{declensionCase:i,suffix:a}=e,t=s.slice(0,-a.length);if(!c[i]||f[i].includes(s)||d[i].some(e=>s.endsWith(e)))return t;for(var[n,r]of o[i])if(t.endsWith(n))return""+t.slice(0,-n.length)+r},c={2:{dz:"dž",sn:"šņ",zn:"žņ",sl:"šļ",zl:"žļ",ln:"ļņ",b:"bj",m:"mj",p:"pj",v:"vj",t:"š",d:"ž",c:"č",s:"š",z:"ž",n:"ņ",l:"ļ"},5:{sn:"šņ",zn:"žņ",dz:"dž",kst:"kp",b:"bj",m:"mj",p:"pj",v:"vj",c:"č",t:"š",d:"ž",s:"š",z:"ž",n:"ņ",l:"ļ"},6:{sn:"šņ",st:"š",v:"vj",t:"š",d:"ž",s:"š",z:"ž",n:"ņ",l:"ļ"}},o=Object.fromEntries(Object.entries(c).map(s=>{var[e,i]=s;return[e,Object.entries(i)]})),d={2:["astis","jis","ķis","ģis","ris","skatis"],5:["aste","fe","ģe","ķe","mate","pēde","ste"]},f={2:["tētis","viesis"],5:["apaļmute","apšaude","balamute","balle (mērvienība)","bāze","bise","bote","brīze","flote","fronte","gāze (vielas stāvoklis)","gide","kase","kušete","mise","mute","pase","piešaude","planšete","rase","sarakste","šprote","takse","tirāde"],6:["acs","aktis","ass","auss","balss","brokastis","Cēsis","dakts","debess","dzelzs","kūts","maksts","pirts","šalts","takts (mūzikā)","uts","uzacs","valsts","vēsts","zoss","žults"]};for(var p of Array.from({length:6},(s,e)=>e+1))d[p]||(d[p]=[]),f[p]||(f[p]=[]);var b=function(s,e){void 0===e&&(e=t.masculine);var i=n(s,e),{suffix:a,declensionCase:r}=i,u=s.slice(0,-a.length),l=v(s,i),m=(s,e,i)=>{var a=g[r].includes(s+"-"+e)?l:u;return"instrumental"===s&&(a="ar "+a),[s,""+a+i]};return{declension:i,inflections:{plural:z(C[r],s=>{var[e,i]=s;return m(e,"plural",i)}),singular:z(O[r],s=>{var[e,i]=s;return m(e,"singular",i)})}}},z=(s,e)=>Object.fromEntries(Object.entries(s).map(e)),j=(s,e,i,a,t,n,r)=>({nominative:s,genitive:e,dative:i,accusative:a,instrumental:t,locative:n,vocative:r}),k=["nominative","genitive","dative","accusative","instrumental","locative","vocative"],g={2:["genitive-singular",...k.map(s=>s+"-plural")],5:["genitive-plural"],6:["genitive-plural"]};for(var h of Array.from({length:6},(s,e)=>e+1))g[h]||(g[h]=[]);var O={1:j("s","a","am","u","u","ā","s"),2:j("is","a","im","i","i","ī","i"),3:j("us","us","um","u","u","ū","us"),4:j("a","as","ai","u","u","ā","a"),5:j("e","es","ei","i","i","ē","e"),6:j("s","s","ij","i","i","ī","s")},x=j("i","u","iem","us","iem","os","i"),C={1:x,2:x,3:x,4:j("as","u","ām","as","ām","ās","as"),5:j("es","u","ēm","es","ēm","ēs","es"),6:j("is","u","īm","is","īm","īs","is")},E=e=>{var i=[...e].map(s),a=i[0]?1:0;return i.reduce((s,e)=>(!s&&e&&(a+=1),e)),a};export{r as Declension,a as consonants,E as countSyllables,n as decline,t as genders,b as inflect,k as inflections,i as isConsonant,s as isVowel,v as palatalize,e as vowels};
//# sourceMappingURL=latvian-grammar.module.js.map