# 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