Packages
text_stemmer
0.1.0
Pre-compiled Snowball stemmers for Elixir. Ships 36 stemming algorithms covering a wide range of natural languages, accessible through a single `Text.Stemmer.stem/2` entry point.
Current section
Files
Jump to
Current section
Files
lib/text/stemmer/stemmers/lovins.ex
# Generated by Snowball.Generator — do not edit by hand.
defmodule Text.Stemmer.Stemmers.Lovins do
@moduledoc """
Snowball stemmer for lovins.
Generated from the canonical Snowball algorithm source.
"""
alias Snowball.Runtime
# Among tables
@a_0 [
{"uad", -1, 18, nil},
{"vad", -1, 19, nil},
{"cid", -1, 20, nil},
{"lid", -1, 21, nil},
{"erid", -1, 22, nil},
{"pand", -1, 23, nil},
{"end", -1, 24, nil},
{"ond", -1, 25, nil},
{"lud", -1, 26, nil},
{"rud", -1, 27, nil},
{"ul", -1, 9, nil},
{"her", -1, 28, nil},
{"metr", -1, 7, nil},
{"istr", -1, 6, nil},
{"urs", -1, 5, nil},
{"uct", -1, 2, nil},
{"et", -1, 32, nil},
{"mit", -1, 29, nil},
{"ent", -1, 30, nil},
{"umpt", -1, 3, nil},
{"rpt", -1, 4, nil},
{"ert", -1, 31, nil},
{"yt", -1, 33, nil},
{"iev", -1, 1, nil},
{"olv", -1, 8, nil},
{"ax", -1, 14, nil},
{"ex", -1, 15, nil},
{"bex", 26, 10, nil},
{"dex", 26, 11, nil},
{"pex", 26, 12, nil},
{"tex", 26, 13, nil},
{"ix", -1, 16, nil},
{"lux", -1, 17, nil},
{"yz", -1, 34, nil}
]
@a_1 [
{"bb", -1, -1, nil},
{"dd", -1, -1, nil},
{"gg", -1, -1, nil},
{"ll", -1, -1, nil},
{"mm", -1, -1, nil},
{"nn", -1, -1, nil},
{"pp", -1, -1, nil},
{"rr", -1, -1, nil},
{"ss", -1, -1, nil},
{"tt", -1, -1, nil}
]
defp a_2 do
[
{"s'", -1, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"a", -1, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ia", 1, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ata", 1, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ic", -1, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"aic", 4, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"allic", 4, 1, fn state -> case r_BB(state) do {:ok, s} -> s; _ -> :fail end end},
{"aric", 4, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"atic", 4, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"itic", 4, 1, fn state -> case r_H(state) do {:ok, s} -> s; _ -> :fail end end},
{"antic", 4, 1, fn state -> case r_C(state) do {:ok, s} -> s; _ -> :fail end end},
{"istic", 4, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"alistic", 11, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"aristic", 11, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ivistic", 11, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ed", -1, 1, fn state -> case r_E(state) do {:ok, s} -> s; _ -> :fail end end},
{"anced", 15, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"enced", 15, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ished", 15, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ied", 15, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ened", 15, 1, fn state -> case r_E(state) do {:ok, s} -> s; _ -> :fail end end},
{"ioned", 15, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ated", 15, 1, fn state -> case r_I(state) do {:ok, s} -> s; _ -> :fail end end},
{"ented", 15, 1, fn state -> case r_C(state) do {:ok, s} -> s; _ -> :fail end end},
{"ized", 15, 1, fn state -> case r_F(state) do {:ok, s} -> s; _ -> :fail end end},
{"arized", 24, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"oid", -1, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"aroid", 26, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"hood", -1, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ehood", 28, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ihood", 28, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"elihood", 30, 1, fn state -> case r_E(state) do {:ok, s} -> s; _ -> :fail end end},
{"ward", -1, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"e", -1, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ae", 33, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ance", 33, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"icance", 35, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ence", 33, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ide", 33, 1, fn state -> case r_L(state) do {:ok, s} -> s; _ -> :fail end end},
{"icide", 38, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"otide", 38, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"age", 33, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"able", 33, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"atable", 42, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"izable", 42, 1, fn state -> case r_E(state) do {:ok, s} -> s; _ -> :fail end end},
{"arizable", 44, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ible", 33, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"encible", 46, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ene", 33, 1, fn state -> case r_E(state) do {:ok, s} -> s; _ -> :fail end end},
{"ine", 33, 1, fn state -> case r_M(state) do {:ok, s} -> s; _ -> :fail end end},
{"idine", 49, 1, fn state -> case r_I(state) do {:ok, s} -> s; _ -> :fail end end},
{"one", 33, 1, fn state -> case r_R(state) do {:ok, s} -> s; _ -> :fail end end},
{"ature", 33, 1, fn state -> case r_E(state) do {:ok, s} -> s; _ -> :fail end end},
{"eature", 52, 1, fn state -> case r_Z(state) do {:ok, s} -> s; _ -> :fail end end},
{"ese", 33, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"wise", 33, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ate", 33, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"entiate", 56, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"inate", 56, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ionate", 56, 1, fn state -> case r_D(state) do {:ok, s} -> s; _ -> :fail end end},
{"ite", 33, 1, fn state -> case r_AA(state) do {:ok, s} -> s; _ -> :fail end end},
{"ive", 33, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ative", 61, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ize", 33, 1, fn state -> case r_F(state) do {:ok, s} -> s; _ -> :fail end end},
{"alize", 63, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"icalize", 64, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ialize", 64, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"entialize", 66, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ionalize", 64, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"arize", 63, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ing", -1, 1, fn state -> case r_N(state) do {:ok, s} -> s; _ -> :fail end end},
{"ancing", 70, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"encing", 70, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"aging", 70, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"ening", 70, 1, fn state -> case r_E(state) do {:ok, s} -> s; _ -> :fail end end},
{"ioning", 70, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ating", 70, 1, fn state -> case r_I(state) do {:ok, s} -> s; _ -> :fail end end},
{"enting", 70, 1, fn state -> case r_C(state) do {:ok, s} -> s; _ -> :fail end end},
{"ying", 70, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"izing", 70, 1, fn state -> case r_F(state) do {:ok, s} -> s; _ -> :fail end end},
{"arizing", 79, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ish", -1, 1, fn state -> case r_C(state) do {:ok, s} -> s; _ -> :fail end end},
{"yish", 81, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"i", -1, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"al", -1, 1, fn state -> case r_BB(state) do {:ok, s} -> s; _ -> :fail end end},
{"ical", 84, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"aical", 85, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"istical", 85, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"oidal", 84, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"eal", 84, 1, fn state -> case r_Y(state) do {:ok, s} -> s; _ -> :fail end end},
{"ial", 84, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ancial", 90, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"arial", 90, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ential", 90, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ional", 84, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ational", 94, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"izational", 95, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ental", 84, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ful", -1, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"eful", 98, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"iful", 98, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"yl", -1, 1, fn state -> case r_R(state) do {:ok, s} -> s; _ -> :fail end end},
{"ism", -1, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"icism", 102, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"oidism", 102, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"alism", 102, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"icalism", 105, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ionalism", 105, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"inism", 102, 1, fn state -> case r_J(state) do {:ok, s} -> s; _ -> :fail end end},
{"ativism", 102, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"um", -1, 1, fn state -> case r_U(state) do {:ok, s} -> s; _ -> :fail end end},
{"ium", 110, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ian", -1, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ician", 112, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"en", -1, 1, fn state -> case r_F(state) do {:ok, s} -> s; _ -> :fail end end},
{"ogen", 114, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"on", -1, 1, fn state -> case r_S(state) do {:ok, s} -> s; _ -> :fail end end},
{"ion", 116, 1, fn state -> case r_Q(state) do {:ok, s} -> s; _ -> :fail end end},
{"ation", 117, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"ication", 118, 1, fn state -> case r_G(state) do {:ok, s} -> s; _ -> :fail end end},
{"entiation", 118, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ination", 118, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"isation", 118, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"arisation", 122, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"entation", 118, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ization", 118, 1, fn state -> case r_F(state) do {:ok, s} -> s; _ -> :fail end end},
{"arization", 125, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"action", 117, 1, fn state -> case r_G(state) do {:ok, s} -> s; _ -> :fail end end},
{"o", -1, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ar", -1, 1, fn state -> case r_X(state) do {:ok, s} -> s; _ -> :fail end end},
{"ear", 129, 1, fn state -> case r_Y(state) do {:ok, s} -> s; _ -> :fail end end},
{"ier", -1, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ariser", -1, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"izer", -1, 1, fn state -> case r_F(state) do {:ok, s} -> s; _ -> :fail end end},
{"arizer", 133, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"or", -1, 1, fn state -> case r_T(state) do {:ok, s} -> s; _ -> :fail end end},
{"ator", 135, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"s", -1, 1, fn state -> case r_W(state) do {:ok, s} -> s; _ -> :fail end end},
{"'s", 137, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"as", 137, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"ics", 137, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"istics", 140, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"es", 137, 1, fn state -> case r_E(state) do {:ok, s} -> s; _ -> :fail end end},
{"ances", 142, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"ences", 142, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ides", 142, 1, fn state -> case r_L(state) do {:ok, s} -> s; _ -> :fail end end},
{"oides", 145, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ages", 142, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"ies", 142, 1, fn state -> case r_P(state) do {:ok, s} -> s; _ -> :fail end end},
{"acies", 148, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ancies", 148, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"encies", 148, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"aries", 148, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ities", 148, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"alities", 153, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ivities", 153, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ines", 142, 1, fn state -> case r_M(state) do {:ok, s} -> s; _ -> :fail end end},
{"nesses", 142, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ates", 142, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"atives", 142, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ings", 137, 1, fn state -> case r_N(state) do {:ok, s} -> s; _ -> :fail end end},
{"is", 137, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"als", 137, 1, fn state -> case r_BB(state) do {:ok, s} -> s; _ -> :fail end end},
{"ials", 162, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"entials", 163, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ionals", 162, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"isms", 137, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"ians", 137, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"icians", 167, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ions", 137, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"ations", 169, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"arisations", 170, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"entations", 170, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"izations", 170, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"arizations", 173, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ars", 137, 1, fn state -> case r_O(state) do {:ok, s} -> s; _ -> :fail end end},
{"iers", 137, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"izers", 137, 1, fn state -> case r_F(state) do {:ok, s} -> s; _ -> :fail end end},
{"ators", 137, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"less", 137, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"eless", 179, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ness", 137, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"eness", 181, 1, fn state -> case r_E(state) do {:ok, s} -> s; _ -> :fail end end},
{"ableness", 182, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"eableness", 183, 1, fn state -> case r_E(state) do {:ok, s} -> s; _ -> :fail end end},
{"ibleness", 182, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ateness", 182, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"iteness", 182, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"iveness", 182, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ativeness", 188, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ingness", 181, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ishness", 181, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"iness", 181, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ariness", 192, 1, fn state -> case r_E(state) do {:ok, s} -> s; _ -> :fail end end},
{"alness", 181, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"icalness", 194, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"antialness", 194, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"entialness", 194, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ionalness", 194, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"fulness", 181, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"lessness", 181, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ousness", 181, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"eousness", 201, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"iousness", 201, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"itousness", 201, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"entness", 181, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ants", 137, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"ists", 137, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"icists", 207, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"us", 137, 1, fn state -> case r_V(state) do {:ok, s} -> s; _ -> :fail end end},
{"ous", 209, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"eous", 210, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"aceous", 211, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"antaneous", 211, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ious", 210, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"acious", 214, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"itous", 210, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ant", -1, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"icant", 217, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ent", -1, 1, fn state -> case r_C(state) do {:ok, s} -> s; _ -> :fail end end},
{"ement", 219, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"izement", 220, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ist", -1, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"icist", 222, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"alist", 222, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"icalist", 224, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ialist", 224, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ionist", 222, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"entist", 222, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"y", -1, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"acy", 229, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ancy", 229, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"ency", 229, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ly", 229, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"ealy", 233, 1, fn state -> case r_Y(state) do {:ok, s} -> s; _ -> :fail end end},
{"ably", 233, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ibly", 233, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"edly", 233, 1, fn state -> case r_E(state) do {:ok, s} -> s; _ -> :fail end end},
{"iedly", 237, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ely", 233, 1, fn state -> case r_E(state) do {:ok, s} -> s; _ -> :fail end end},
{"ately", 239, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ively", 239, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"atively", 241, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ingly", 233, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"atingly", 243, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ily", 233, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"lily", 245, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"arily", 245, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ally", 233, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"ically", 248, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"aically", 249, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"allically", 249, 1, fn state -> case r_C(state) do {:ok, s} -> s; _ -> :fail end end},
{"istically", 249, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"alistically", 252, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"oidally", 248, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ially", 248, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"entially", 255, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ionally", 248, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ationally", 257, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"izationally", 258, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"entally", 248, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"fully", 233, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"efully", 261, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ifully", 261, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"enly", 233, 1, fn state -> case r_E(state) do {:ok, s} -> s; _ -> :fail end end},
{"arly", 233, 1, fn state -> case r_K(state) do {:ok, s} -> s; _ -> :fail end end},
{"early", 265, 1, fn state -> case r_Y(state) do {:ok, s} -> s; _ -> :fail end end},
{"lessly", 233, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ously", 233, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"eously", 268, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"iously", 268, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ently", 233, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ary", 229, 1, fn state -> case r_F(state) do {:ok, s} -> s; _ -> :fail end end},
{"ery", 229, 1, fn state -> case r_E(state) do {:ok, s} -> s; _ -> :fail end end},
{"icianry", 229, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"atory", 229, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ity", 229, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"acity", 276, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"icity", 276, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"eity", 276, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ality", 276, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"icality", 280, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"iality", 280, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"antiality", 282, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"entiality", 282, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ionality", 280, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"elity", 276, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ability", 276, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"izability", 287, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"arizability", 288, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"ibility", 276, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end},
{"inity", 276, 1, fn state -> case r_CC(state) do {:ok, s} -> s; _ -> :fail end end},
{"arity", 276, 1, fn state -> case r_B(state) do {:ok, s} -> s; _ -> :fail end end},
{"ivity", 276, 1, fn state -> case r_A(state) do {:ok, s} -> s; _ -> :fail end end}
]
end
@a_3 [
{"d", -1, -1, nil},
{"f", -1, -1, nil},
{"ph", -1, -1, nil},
{"th", -1, -1, nil},
{"l", -1, -1, nil},
{"er", -1, -1, nil},
{"or", -1, -1, nil},
{"es", -1, -1, nil},
{"t", -1, -1, nil}
]
@doc """
Stem a word.
### Arguments
* `word` is a UTF-8 binary.
### Returns
* The stemmed UTF-8 binary.
"""
@spec stem(binary()) :: binary()
def stem(word) when is_binary(word) do
state = Runtime.new(word) |> init_vars()
state = run_stem(state)
Runtime.assign_to(state)
end
defp init_vars(state), do: state
defp run_stem(%Runtime{} = state) do
{_, state} = r_stem(state)
state
end
# Snowball runtime helpers.
defp snowball_do_b(state, fun) do
rel = state.limit - state.cursor
{_, s} = fun.(state)
%{s | cursor: s.limit - rel}
end
defp snowball_test_b(state, fun) do
rel = state.limit - state.cursor
case fun.(state) do
{:ok, s} -> {:ok, %{s | cursor: s.limit - rel}}
{:fail, s} -> {:fail, %{s | cursor: s.limit - rel}}
end
end
defp snowball_or(state, fun1, fun2) do
rel = state.limit - state.cursor
case fun1.(state) do
{:ok, s} -> {:ok, s}
{:fail, s} -> fun2.(%{s | cursor: s.limit - rel})
end
end
defp lift(state, :fail), do: {:fail, state}
defp lift(_state, %Runtime{} = s), do: {:ok, s}
defp next_codepoint_b(%Runtime{cursor: c, limit_backward: lb, current: cur} = state) do
case Runtime.codepoint_before(cur, c, lb) do
{_cp, size} -> {:ok, %{state | cursor: c - size}}
:error -> {:fail, state}
end
end
defp r_respell(%Runtime{} = state) do
(fn ->
state = %{state | ket: state.cursor}
case Runtime.find_among_b(state, @a_0) do
:fail -> {:fail, state}
{%Runtime{} = s, result} ->
state = %{s | bra: s.cursor}
case result do
1 ->
{:ok, Runtime.slice_from(state, "ief")}
2 ->
{:ok, Runtime.slice_from(state, "uc")}
3 ->
{:ok, Runtime.slice_from(state, "um")}
4 ->
{:ok, Runtime.slice_from(state, "rb")}
5 ->
{:ok, Runtime.slice_from(state, "ur")}
6 ->
{:ok, Runtime.slice_from(state, "ister")}
7 ->
{:ok, Runtime.slice_from(state, "meter")}
8 ->
{:ok, Runtime.slice_from(state, "olut")}
9 ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "a"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "i"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "o"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
{:ok, Runtime.slice_from(state, "l")}
r -> r
end
r -> r
end
r -> r
end
10 ->
{:ok, Runtime.slice_from(state, "bic")}
11 ->
{:ok, Runtime.slice_from(state, "dic")}
12 ->
{:ok, Runtime.slice_from(state, "pic")}
13 ->
{:ok, Runtime.slice_from(state, "tic")}
14 ->
{:ok, Runtime.slice_from(state, "ac")}
15 ->
{:ok, Runtime.slice_from(state, "ec")}
16 ->
{:ok, Runtime.slice_from(state, "ic")}
17 ->
{:ok, Runtime.slice_from(state, "luc")}
18 ->
{:ok, Runtime.slice_from(state, "uas")}
19 ->
{:ok, Runtime.slice_from(state, "vas")}
20 ->
{:ok, Runtime.slice_from(state, "cis")}
21 ->
{:ok, Runtime.slice_from(state, "lis")}
22 ->
{:ok, Runtime.slice_from(state, "eris")}
23 ->
{:ok, Runtime.slice_from(state, "pans")}
24 ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "s"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
{:ok, Runtime.slice_from(state, "ens")}
r -> r
end
25 ->
{:ok, Runtime.slice_from(state, "ons")}
26 ->
{:ok, Runtime.slice_from(state, "lus")}
27 ->
{:ok, Runtime.slice_from(state, "rus")}
28 ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "p"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "t"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
{:ok, Runtime.slice_from(state, "hes")}
r -> r
end
r -> r
end
29 ->
{:ok, Runtime.slice_from(state, "mis")}
30 ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "m"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
{:ok, Runtime.slice_from(state, "ens")}
r -> r
end
31 ->
{:ok, Runtime.slice_from(state, "ers")}
32 ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "n"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
{:ok, Runtime.slice_from(state, "es")}
r -> r
end
33 ->
{:ok, Runtime.slice_from(state, "ys")}
34 ->
{:ok, Runtime.slice_from(state, "ys")}
_ -> {:ok, state}
end
end
end).()
end
defp r_undouble(%Runtime{} = state) do
case (fn state ->
(fn ->
rel = state.limit - state.cursor
state = %{state | ket: state.cursor}
case Runtime.find_among_b(state, @a_1) do
:fail -> {:fail, %{state | cursor: state.limit - rel}}
{%Runtime{} = s, _} -> {:ok, %{s | cursor: s.limit - rel}}
end
end).()
end).(state) do
{:ok, state} ->
case (fn state ->
{:ok, %{state | ket: state.cursor}}
end).(state) do
{:ok, state} ->
case (fn state ->
next_codepoint_b(state)
end).(state) do
{:ok, state} ->
case (fn state ->
{:ok, %{state | bra: state.cursor}}
end).(state) do
{:ok, state} ->
{:ok, Runtime.slice_del(state)}
end
r -> r
end
end
r -> r
end
end
defp r_endings(%Runtime{} = state) do
(fn ->
state = %{state | ket: state.cursor}
case Runtime.find_among_b(state, a_2()) do
:fail -> {:fail, state}
{%Runtime{} = s, result} ->
state = %{s | bra: s.cursor}
case result do
1 ->
{:ok, Runtime.slice_del(state)}
_ -> {:ok, state}
end
end
end).()
end
defp r_CC(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
lift(state, Runtime.eq_s_b(state, "l"))
r -> r
end
end
defp r_BB(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 3
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "met"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "ryst"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
r -> r
end
r -> r
end
end
defp r_AA(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
(fn ->
case Runtime.find_among_b(state, @a_3) do
:fail -> {:fail, state}
{%Runtime{} = s, _} -> {:ok, s}
end
end).()
r -> r
end
end
defp r_Z(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "f"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
r -> r
end
end
defp r_Y(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
lift(state, Runtime.eq_s_b(state, "in"))
r -> r
end
end
defp r_X(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
snowball_or(state,
fn state ->
snowball_or(state,
fn state ->
lift(state, Runtime.eq_s_b(state, "l"))
end,
fn state ->
lift(state, Runtime.eq_s_b(state, "i"))
end)
end,
fn state ->
case (fn state ->
lift(state, Runtime.eq_s_b(state, "e"))
end).(state) do
{:ok, state} ->
case (fn state ->
next_codepoint_b(state)
end).(state) do
{:ok, state} ->
lift(state, Runtime.eq_s_b(state, "u"))
r -> r
end
r -> r
end
end)
r -> r
end
end
defp r_W(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "s"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "u"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
r -> r
end
r -> r
end
end
defp r_V(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
lift(state, Runtime.eq_s_b(state, "c"))
r -> r
end
end
defp r_U(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
snowball_or(state,
fn state ->
snowball_or(state,
fn state ->
snowball_or(state,
fn state ->
lift(state, Runtime.eq_s_b(state, "l"))
end,
fn state ->
lift(state, Runtime.eq_s_b(state, "m"))
end)
end,
fn state ->
lift(state, Runtime.eq_s_b(state, "n"))
end)
end,
fn state ->
lift(state, Runtime.eq_s_b(state, "r"))
end)
r -> r
end
end
defp r_T(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
snowball_or(state,
fn state ->
lift(state, Runtime.eq_s_b(state, "s"))
end,
fn state ->
case (fn state ->
lift(state, Runtime.eq_s_b(state, "t"))
end).(state) do
{:ok, state} ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "o"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
r -> r
end
end)
r -> r
end
end
defp r_S(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
snowball_or(state,
fn state ->
lift(state, Runtime.eq_s_b(state, "dr"))
end,
fn state ->
case (fn state ->
lift(state, Runtime.eq_s_b(state, "t"))
end).(state) do
{:ok, state} ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "t"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
r -> r
end
end)
r -> r
end
end
defp r_R(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
snowball_or(state,
fn state ->
lift(state, Runtime.eq_s_b(state, "n"))
end,
fn state ->
lift(state, Runtime.eq_s_b(state, "r"))
end)
r -> r
end
end
defp r_Q(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 3
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "l"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "n"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
r -> r
end
r -> r
end
r -> r
end
end
defp r_P(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "c"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
r -> r
end
end
defp r_O(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
snowball_or(state,
fn state ->
lift(state, Runtime.eq_s_b(state, "l"))
end,
fn state ->
lift(state, Runtime.eq_s_b(state, "i"))
end)
r -> r
end
end
defp r_N(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 3
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
case (fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end).(state) do
{:ok, state} ->
snowball_or(state,
fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "s"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end,
fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
r -> r
end
r -> r
end
end
defp r_M(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "a"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "c"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "e"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "m"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
r -> r
end
r -> r
end
r -> r
end
r -> r
end
end
defp r_L(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "u"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "x"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
(fn state ->
saved_c = state.cursor
case (fn state ->
case (fn state ->
lift(state, Runtime.eq_s_b(state, "s"))
end).(state) do
{:ok, state} ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "o"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
r -> r
end
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
r -> r
end
r -> r
end
r -> r
end
end
defp r_K(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 3
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
snowball_or(state,
fn state ->
snowball_or(state,
fn state ->
lift(state, Runtime.eq_s_b(state, "l"))
end,
fn state ->
lift(state, Runtime.eq_s_b(state, "i"))
end)
end,
fn state ->
case (fn state ->
lift(state, Runtime.eq_s_b(state, "e"))
end).(state) do
{:ok, state} ->
case (fn state ->
next_codepoint_b(state)
end).(state) do
{:ok, state} ->
lift(state, Runtime.eq_s_b(state, "u"))
r -> r
end
r -> r
end
end)
r -> r
end
end
defp r_J(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "a"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "e"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
r -> r
end
r -> r
end
end
defp r_I(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
case (fn state ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "o"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
end).(state) do
{:ok, state} ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "e"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
r -> r
end
r -> r
end
end
defp r_H(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
snowball_or(state,
fn state ->
lift(state, Runtime.eq_s_b(state, "t"))
end,
fn state ->
lift(state, Runtime.eq_s_b(state, "ll"))
end)
r -> r
end
end
defp r_G(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 3
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
lift(state, Runtime.eq_s_b(state, "f"))
r -> r
end
end
defp r_F(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 3
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "e"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
r -> r
end
end
defp r_E(%Runtime{} = state) do
case (fn state ->
snowball_test_b(state, fn state ->
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end)
end).(state) do
{:ok, state} ->
(fn state ->
saved_c = state.cursor
case (fn state ->
lift(state, Runtime.eq_s_b(state, "e"))
end).(state) do
{:ok, s} -> {:fail, %{s | cursor: saved_c}}
{:fail, s} -> {:ok, %{s | cursor: saved_c}}
end
end).(state)
r -> r
end
end
defp r_D(%Runtime{} = state) do
(fn ->
n = 5
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end
defp r_C(%Runtime{} = state) do
(fn ->
n = 4
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end
defp r_B(%Runtime{} = state) do
(fn ->
n = 3
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end
defp r_A(%Runtime{} = state) do
(fn ->
n = 2
Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} ->
case next_codepoint_b(s) do
{:ok, s2} -> {:cont, {:ok, s2}}
{:fail, _} -> {:halt, {:fail, state}}
end
end)
end).()
end
defp r_stem(%Runtime{} = state) do
(fn state ->
old_cursor = state.cursor
old_lb = state.limit_backward
state = %{state | cursor: state.limit, limit_backward: old_cursor}
{tag, s} = (fn state ->
case (fn state ->
{:ok, snowball_do_b(state, fn state ->
r_endings(state)
end)}
end).(state) do
{:ok, state} ->
case (fn state ->
{:ok, snowball_do_b(state, fn state ->
r_undouble(state)
end)}
end).(state) do
{:ok, state} ->
{:ok, snowball_do_b(state, fn state ->
r_respell(state)
end)}
end
end
end).(state)
{tag, %{s | cursor: old_cursor, limit_backward: old_lb}}
end).(state)
end
end