# Generated by Snowball.Generator — do not edit by hand. defmodule Text.Stemmer.Stemmers.Catalan do @moduledoc """ Snowball stemmer for catalan. Generated from the canonical Snowball algorithm source. """ alias Snowball.Runtime alias Snowball.Grouping # Groupings @g_v Grouping.from_string("aeiouáàéèíïóòúü") # Among tables @a_0 [ {"a", -1, 1, nil}, {"e", -1, 1, nil}, {"i", -1, 1, nil}, {"ïn", -1, 1, nil}, {"o", -1, 1, nil}, {"ir", -1, 1, nil}, {"s", -1, 1, nil}, {"is", 6, 1, nil}, {"os", 6, 1, nil}, {"ïs", 6, 1, nil}, {"it", -1, 1, nil}, {"eu", -1, 1, nil}, {"iu", -1, 1, nil}, {"iqu", -1, 2, nil}, {"itz", -1, 1, nil}, {"à", -1, 1, nil}, {"á", -1, 1, nil}, {"é", -1, 1, nil}, {"ì", -1, 1, nil}, {"í", -1, 1, nil}, {"ï", -1, 1, nil}, {"ó", -1, 1, nil} ] @a_1 [ {"aba", -1, 1, nil}, {"esca", -1, 1, nil}, {"isca", -1, 1, nil}, {"ïsca", -1, 1, nil}, {"ada", -1, 1, nil}, {"ida", -1, 1, nil}, {"uda", -1, 1, nil}, {"ïda", -1, 1, nil}, {"ia", -1, 1, nil}, {"aria", 8, 1, nil}, {"iria", 8, 1, nil}, {"ara", -1, 1, nil}, {"iera", -1, 1, nil}, {"ira", -1, 1, nil}, {"adora", -1, 1, nil}, {"ïra", -1, 1, nil}, {"ava", -1, 1, nil}, {"ixa", -1, 1, nil}, {"itza", -1, 1, nil}, {"ía", -1, 1, nil}, {"aría", 19, 1, nil}, {"ería", 19, 1, nil}, {"iría", 19, 1, nil}, {"ïa", -1, 1, nil}, {"isc", -1, 1, nil}, {"ïsc", -1, 1, nil}, {"ad", -1, 1, nil}, {"ed", -1, 1, nil}, {"id", -1, 1, nil}, {"ie", -1, 1, nil}, {"re", -1, 1, nil}, {"dre", 30, 1, nil}, {"ase", -1, 1, nil}, {"iese", -1, 1, nil}, {"aste", -1, 1, nil}, {"iste", -1, 1, nil}, {"ii", -1, 1, nil}, {"ini", -1, 1, nil}, {"esqui", -1, 1, nil}, {"eixi", -1, 1, nil}, {"itzi", -1, 1, nil}, {"am", -1, 1, nil}, {"em", -1, 1, nil}, {"arem", 42, 1, nil}, {"irem", 42, 1, nil}, {"àrem", 42, 1, nil}, {"írem", 42, 1, nil}, {"àssem", 42, 1, nil}, {"éssem", 42, 1, nil}, {"iguem", 42, 1, nil}, {"ïguem", 42, 1, nil}, {"avem", 42, 1, nil}, {"àvem", 42, 1, nil}, {"ávem", 42, 1, nil}, {"irìem", 42, 1, nil}, {"íem", 42, 1, nil}, {"aríem", 55, 1, nil}, {"iríem", 55, 1, nil}, {"assim", -1, 1, nil}, {"essim", -1, 1, nil}, {"issim", -1, 1, nil}, {"àssim", -1, 1, nil}, {"èssim", -1, 1, nil}, {"éssim", -1, 1, nil}, {"íssim", -1, 1, nil}, {"ïm", -1, 1, nil}, {"an", -1, 1, nil}, {"aban", 66, 1, nil}, {"arian", 66, 1, nil}, {"aran", 66, 1, nil}, {"ieran", 66, 1, nil}, {"iran", 66, 1, nil}, {"ían", 66, 1, nil}, {"arían", 72, 1, nil}, {"erían", 72, 1, nil}, {"irían", 72, 1, nil}, {"en", -1, 1, nil}, {"ien", 76, 1, nil}, {"arien", 77, 1, nil}, {"irien", 77, 1, nil}, {"aren", 76, 1, nil}, {"eren", 76, 1, nil}, {"iren", 76, 1, nil}, {"àren", 76, 1, nil}, {"ïren", 76, 1, nil}, {"asen", 76, 1, nil}, {"iesen", 76, 1, nil}, {"assen", 76, 1, nil}, {"essen", 76, 1, nil}, {"issen", 76, 1, nil}, {"éssen", 76, 1, nil}, {"ïssen", 76, 1, nil}, {"esquen", 76, 1, nil}, {"isquen", 76, 1, nil}, {"ïsquen", 76, 1, nil}, {"aven", 76, 1, nil}, {"ixen", 76, 1, nil}, {"eixen", 96, 1, nil}, {"ïxen", 76, 1, nil}, {"ïen", 76, 1, nil}, {"in", -1, 1, nil}, {"inin", 100, 1, nil}, {"sin", 100, 1, nil}, {"isin", 102, 1, nil}, {"assin", 102, 1, nil}, {"essin", 102, 1, nil}, {"issin", 102, 1, nil}, {"ïssin", 102, 1, nil}, {"esquin", 100, 1, nil}, {"eixin", 100, 1, nil}, {"aron", -1, 1, nil}, {"ieron", -1, 1, nil}, {"arán", -1, 1, nil}, {"erán", -1, 1, nil}, {"irán", -1, 1, nil}, {"iïn", -1, 1, nil}, {"ado", -1, 1, nil}, {"ido", -1, 1, nil}, {"ando", -1, 2, nil}, {"iendo", -1, 1, nil}, {"io", -1, 1, nil}, {"ixo", -1, 1, nil}, {"eixo", 121, 1, nil}, {"ïxo", -1, 1, nil}, {"itzo", -1, 1, nil}, {"ar", -1, 1, nil}, {"tzar", 125, 1, nil}, {"er", -1, 1, nil}, {"eixer", 127, 1, nil}, {"ir", -1, 1, nil}, {"ador", -1, 1, nil}, {"as", -1, 1, nil}, {"abas", 131, 1, nil}, {"adas", 131, 1, nil}, {"idas", 131, 1, nil}, {"aras", 131, 1, nil}, {"ieras", 131, 1, nil}, {"ías", 131, 1, nil}, {"arías", 137, 1, nil}, {"erías", 137, 1, nil}, {"irías", 137, 1, nil}, {"ids", -1, 1, nil}, {"es", -1, 1, nil}, {"ades", 142, 1, nil}, {"ides", 142, 1, nil}, {"udes", 142, 1, nil}, {"ïdes", 142, 1, nil}, {"atges", 142, 1, nil}, {"ies", 142, 1, nil}, {"aries", 148, 1, nil}, {"iries", 148, 1, nil}, {"ares", 142, 1, nil}, {"ires", 142, 1, nil}, {"adores", 142, 1, nil}, {"ïres", 142, 1, nil}, {"ases", 142, 1, nil}, {"ieses", 142, 1, nil}, {"asses", 142, 1, nil}, {"esses", 142, 1, nil}, {"isses", 142, 1, nil}, {"ïsses", 142, 1, nil}, {"ques", 142, 1, nil}, {"esques", 161, 1, nil}, {"ïsques", 161, 1, nil}, {"aves", 142, 1, nil}, {"ixes", 142, 1, nil}, {"eixes", 165, 1, nil}, {"ïxes", 142, 1, nil}, {"ïes", 142, 1, nil}, {"abais", -1, 1, nil}, {"arais", -1, 1, nil}, {"ierais", -1, 1, nil}, {"íais", -1, 1, nil}, {"aríais", 172, 1, nil}, {"eríais", 172, 1, nil}, {"iríais", 172, 1, nil}, {"aseis", -1, 1, nil}, {"ieseis", -1, 1, nil}, {"asteis", -1, 1, nil}, {"isteis", -1, 1, nil}, {"inis", -1, 1, nil}, {"sis", -1, 1, nil}, {"isis", 181, 1, nil}, {"assis", 181, 1, nil}, {"essis", 181, 1, nil}, {"issis", 181, 1, nil}, {"ïssis", 181, 1, nil}, {"esquis", -1, 1, nil}, {"eixis", -1, 1, nil}, {"itzis", -1, 1, nil}, {"áis", -1, 1, nil}, {"aréis", -1, 1, nil}, {"eréis", -1, 1, nil}, {"iréis", -1, 1, nil}, {"ams", -1, 1, nil}, {"ados", -1, 1, nil}, {"idos", -1, 1, nil}, {"amos", -1, 1, nil}, {"ábamos", 197, 1, nil}, {"áramos", 197, 1, nil}, {"iéramos", 197, 1, nil}, {"íamos", 197, 1, nil}, {"aríamos", 201, 1, nil}, {"eríamos", 201, 1, nil}, {"iríamos", 201, 1, nil}, {"aremos", -1, 1, nil}, {"eremos", -1, 1, nil}, {"iremos", -1, 1, nil}, {"ásemos", -1, 1, nil}, {"iésemos", -1, 1, nil}, {"imos", -1, 1, nil}, {"adors", -1, 1, nil}, {"ass", -1, 1, nil}, {"erass", 212, 1, nil}, {"ess", -1, 1, nil}, {"ats", -1, 1, nil}, {"its", -1, 1, nil}, {"ents", -1, 1, nil}, {"às", -1, 1, nil}, {"aràs", 218, 1, nil}, {"iràs", 218, 1, nil}, {"arás", -1, 1, nil}, {"erás", -1, 1, nil}, {"irás", -1, 1, nil}, {"és", -1, 1, nil}, {"arés", 224, 1, nil}, {"ís", -1, 1, nil}, {"iïs", -1, 1, nil}, {"at", -1, 1, nil}, {"it", -1, 1, nil}, {"ant", -1, 1, nil}, {"ent", -1, 1, nil}, {"int", -1, 1, nil}, {"ut", -1, 1, nil}, {"ït", -1, 1, nil}, {"au", -1, 1, nil}, {"erau", 235, 1, nil}, {"ieu", -1, 1, nil}, {"ineu", -1, 1, nil}, {"areu", -1, 1, nil}, {"ireu", -1, 1, nil}, {"àreu", -1, 1, nil}, {"íreu", -1, 1, nil}, {"asseu", -1, 1, nil}, {"esseu", -1, 1, nil}, {"eresseu", 244, 1, nil}, {"àsseu", -1, 1, nil}, {"ésseu", -1, 1, nil}, {"igueu", -1, 1, nil}, {"ïgueu", -1, 1, nil}, {"àveu", -1, 1, nil}, {"áveu", -1, 1, nil}, {"itzeu", -1, 1, nil}, {"ìeu", -1, 1, nil}, {"irìeu", 253, 1, nil}, {"íeu", -1, 1, nil}, {"aríeu", 255, 1, nil}, {"iríeu", 255, 1, nil}, {"assiu", -1, 1, nil}, {"issiu", -1, 1, nil}, {"àssiu", -1, 1, nil}, {"èssiu", -1, 1, nil}, {"éssiu", -1, 1, nil}, {"íssiu", -1, 1, nil}, {"ïu", -1, 1, nil}, {"ix", -1, 1, nil}, {"eix", 265, 1, nil}, {"ïx", -1, 1, nil}, {"itz", -1, 1, nil}, {"ià", -1, 1, nil}, {"arà", -1, 1, nil}, {"irà", -1, 1, nil}, {"itzà", -1, 1, nil}, {"ará", -1, 1, nil}, {"erá", -1, 1, nil}, {"irá", -1, 1, nil}, {"irè", -1, 1, nil}, {"aré", -1, 1, nil}, {"eré", -1, 1, nil}, {"iré", -1, 1, nil}, {"í", -1, 1, nil}, {"iï", -1, 1, nil}, {"ió", -1, 1, nil} ] @a_2 [ {"ica", -1, 4, nil}, {"lógica", 0, 3, nil}, {"enca", -1, 1, nil}, {"ada", -1, 2, nil}, {"ancia", -1, 1, nil}, {"encia", -1, 1, nil}, {"ència", -1, 1, nil}, {"ícia", -1, 1, nil}, {"logia", -1, 3, nil}, {"inia", -1, 1, nil}, {"íinia", 9, 1, nil}, {"eria", -1, 1, nil}, {"ària", -1, 1, nil}, {"atòria", -1, 1, nil}, {"alla", -1, 1, nil}, {"ella", -1, 1, nil}, {"ívola", -1, 1, nil}, {"ima", -1, 1, nil}, {"íssima", 17, 1, nil}, {"quíssima", 18, 5, nil}, {"ana", -1, 1, nil}, {"ina", -1, 1, nil}, {"era", -1, 1, nil}, {"sfera", 22, 1, nil}, {"ora", -1, 1, nil}, {"dora", 24, 1, nil}, {"adora", 25, 1, nil}, {"adura", -1, 1, nil}, {"esa", -1, 1, nil}, {"osa", -1, 1, nil}, {"assa", -1, 1, nil}, {"essa", -1, 1, nil}, {"issa", -1, 1, nil}, {"eta", -1, 1, nil}, {"ita", -1, 1, nil}, {"ota", -1, 1, nil}, {"ista", -1, 1, nil}, {"ialista", 36, 1, nil}, {"ionista", 36, 1, nil}, {"iva", -1, 1, nil}, {"ativa", 39, 1, nil}, {"nça", -1, 1, nil}, {"logía", -1, 3, nil}, {"ic", -1, 4, nil}, {"ístic", 43, 1, nil}, {"enc", -1, 1, nil}, {"esc", -1, 1, nil}, {"ud", -1, 1, nil}, {"atge", -1, 1, nil}, {"ble", -1, 1, nil}, {"able", 49, 1, nil}, {"ible", 49, 1, nil}, {"isme", -1, 1, nil}, {"ialisme", 52, 1, nil}, {"ionisme", 52, 1, nil}, {"ivisme", 52, 1, nil}, {"aire", -1, 1, nil}, {"icte", -1, 1, nil}, {"iste", -1, 1, nil}, {"ici", -1, 1, nil}, {"íci", -1, 1, nil}, {"logi", -1, 3, nil}, {"ari", -1, 1, nil}, {"tori", -1, 1, nil}, {"al", -1, 1, nil}, {"il", -1, 1, nil}, {"all", -1, 1, nil}, {"ell", -1, 1, nil}, {"ívol", -1, 1, nil}, {"isam", -1, 1, nil}, {"issem", -1, 1, nil}, {"ìssem", -1, 1, nil}, {"íssem", -1, 1, nil}, {"íssim", -1, 1, nil}, {"quíssim", 73, 5, nil}, {"amen", -1, 1, nil}, {"ìssin", -1, 1, nil}, {"ar", -1, 1, nil}, {"ificar", 77, 1, nil}, {"egar", 77, 1, nil}, {"ejar", 77, 1, nil}, {"itar", 77, 1, nil}, {"itzar", 77, 1, nil}, {"fer", -1, 1, nil}, {"or", -1, 1, nil}, {"dor", 84, 1, nil}, {"dur", -1, 1, nil}, {"doras", -1, 1, nil}, {"ics", -1, 4, nil}, {"lógics", 88, 3, nil}, {"uds", -1, 1, nil}, {"nces", -1, 1, nil}, {"ades", -1, 2, nil}, {"ancies", -1, 1, nil}, {"encies", -1, 1, nil}, {"ències", -1, 1, nil}, {"ícies", -1, 1, nil}, {"logies", -1, 3, nil}, {"inies", -1, 1, nil}, {"ínies", -1, 1, nil}, {"eries", -1, 1, nil}, {"àries", -1, 1, nil}, {"atòries", -1, 1, nil}, {"bles", -1, 1, nil}, {"ables", 103, 1, nil}, {"ibles", 103, 1, nil}, {"imes", -1, 1, nil}, {"íssimes", 106, 1, nil}, {"quíssimes", 107, 5, nil}, {"formes", -1, 1, nil}, {"ismes", -1, 1, nil}, {"ialismes", 110, 1, nil}, {"ines", -1, 1, nil}, {"eres", -1, 1, nil}, {"ores", -1, 1, nil}, {"dores", 114, 1, nil}, {"idores", 115, 1, nil}, {"dures", -1, 1, nil}, {"eses", -1, 1, nil}, {"oses", -1, 1, nil}, {"asses", -1, 1, nil}, {"ictes", -1, 1, nil}, {"ites", -1, 1, nil}, {"otes", -1, 1, nil}, {"istes", -1, 1, nil}, {"ialistes", 124, 1, nil}, {"ionistes", 124, 1, nil}, {"iques", -1, 4, nil}, {"lógiques", 127, 3, nil}, {"ives", -1, 1, nil}, {"atives", 129, 1, nil}, {"logíes", -1, 3, nil}, {"allengües", -1, 1, nil}, {"icis", -1, 1, nil}, {"ícis", -1, 1, nil}, {"logis", -1, 3, nil}, {"aris", -1, 1, nil}, {"toris", -1, 1, nil}, {"ls", -1, 1, nil}, {"als", 138, 1, nil}, {"ells", 138, 1, nil}, {"ims", -1, 1, nil}, {"íssims", 141, 1, nil}, {"quíssims", 142, 5, nil}, {"ions", -1, 1, nil}, {"cions", 144, 1, nil}, {"acions", 145, 2, nil}, {"esos", -1, 1, nil}, {"osos", -1, 1, nil}, {"assos", -1, 1, nil}, {"issos", -1, 1, nil}, {"ers", -1, 1, nil}, {"ors", -1, 1, nil}, {"dors", 152, 1, nil}, {"adors", 153, 1, nil}, {"idors", 153, 1, nil}, {"ats", -1, 1, nil}, {"itats", 156, 1, nil}, {"bilitats", 157, 1, nil}, {"ivitats", 157, 1, nil}, {"ativitats", 159, 1, nil}, {"ïtats", 156, 1, nil}, {"ets", -1, 1, nil}, {"ants", -1, 1, nil}, {"ents", -1, 1, nil}, {"ments", 164, 1, nil}, {"aments", 165, 1, nil}, {"ots", -1, 1, nil}, {"uts", -1, 1, nil}, {"ius", -1, 1, nil}, {"trius", 169, 1, nil}, {"atius", 169, 1, nil}, {"ès", -1, 1, nil}, {"és", -1, 1, nil}, {"ís", -1, 1, nil}, {"dís", 174, 1, nil}, {"ós", -1, 1, nil}, {"itat", -1, 1, nil}, {"bilitat", 177, 1, nil}, {"ivitat", 177, 1, nil}, {"ativitat", 179, 1, nil}, {"ïtat", -1, 1, nil}, {"et", -1, 1, nil}, {"ant", -1, 1, nil}, {"ent", -1, 1, nil}, {"ient", 184, 1, nil}, {"ment", 184, 1, nil}, {"ament", 186, 1, nil}, {"isament", 187, 1, nil}, {"ot", -1, 1, nil}, {"isseu", -1, 1, nil}, {"ìsseu", -1, 1, nil}, {"ísseu", -1, 1, nil}, {"triu", -1, 1, nil}, {"íssiu", -1, 1, nil}, {"atiu", -1, 1, nil}, {"ó", -1, 1, nil}, {"ió", 196, 1, nil}, {"ció", 197, 1, nil}, {"ació", 198, 1, nil} ] @a_3 [ {"la", -1, 1, nil}, {"-la", 0, 1, nil}, {"sela", 0, 1, nil}, {"le", -1, 1, nil}, {"me", -1, 1, nil}, {"-me", 4, 1, nil}, {"se", -1, 1, nil}, {"-te", -1, 1, nil}, {"hi", -1, 1, nil}, {"'hi", 8, 1, nil}, {"li", -1, 1, nil}, {"-li", 10, 1, nil}, {"'l", -1, 1, nil}, {"'m", -1, 1, nil}, {"-m", -1, 1, nil}, {"'n", -1, 1, nil}, {"-n", -1, 1, nil}, {"ho", -1, 1, nil}, {"'ho", 17, 1, nil}, {"lo", -1, 1, nil}, {"selo", 19, 1, nil}, {"'s", -1, 1, nil}, {"las", -1, 1, nil}, {"selas", 22, 1, nil}, {"les", -1, 1, nil}, {"-les", 24, 1, nil}, {"'ls", -1, 1, nil}, {"-ls", -1, 1, nil}, {"'ns", -1, 1, nil}, {"-ns", -1, 1, nil}, {"ens", -1, 1, nil}, {"los", -1, 1, nil}, {"selos", 31, 1, nil}, {"nos", -1, 1, nil}, {"-nos", 33, 1, nil}, {"vos", -1, 1, nil}, {"us", -1, 1, nil}, {"-us", 36, 1, nil}, {"'t", -1, 1, nil} ] @a_4 [ {"", -1, 13, nil}, {"·", 0, 12, nil}, {"à", 0, 2, nil}, {"á", 0, 1, nil}, {"è", 0, 4, nil}, {"é", 0, 3, nil}, {"ì", 0, 6, nil}, {"í", 0, 5, nil}, {"ï", 0, 11, nil}, {"ò", 0, 8, nil}, {"ó", 0, 7, nil}, {"ú", 0, 9, nil}, {"ü", 0, 10, 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 | vars: %{p1: 0, p2: 0}} defp run_stem(%Runtime{} = state) do {_, state} = r_stem(state) state end # Snowball runtime helpers. defp snowball_do_f(state, fun) do saved_c = state.cursor {_, s} = fun.(state) %{s | cursor: saved_c} end defp snowball_do_b(state, fun) do rel = state.limit - state.cursor {_, s} = fun.(state) %{s | cursor: s.limit - rel} 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 next_codepoint(%Runtime{cursor: c, limit: lim, current: cur} = state) do case Runtime.codepoint_at(cur, c, lim) do {_cp, size} -> {:ok, %{state | cursor: c + size}} :error -> {:fail, state} end end defp r_residual_suffix(%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 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end 2 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_from(state, "ic")} r -> r end _ -> {:ok, state} end end end).() end defp r_verb_suffix(%Runtime{} = state) do (fn -> state = %{state | ket: state.cursor} case Runtime.find_among_b(state, @a_1) do :fail -> {:fail, state} {%Runtime{} = s, result} -> state = %{s | bra: s.cursor} case result do 1 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end 2 -> case (fn state -> r_R2(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end _ -> {:ok, state} end end end).() end defp r_standard_suffix(%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 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end 2 -> case (fn state -> r_R2(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end 3 -> case (fn state -> r_R2(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_from(state, "log")} r -> r end 4 -> case (fn state -> r_R2(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_from(state, "ic")} r -> r end 5 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_from(state, "c")} r -> r end _ -> {:ok, state} end end end).() end defp r_attached_pronoun(%Runtime{} = state) do (fn -> state = %{state | ket: state.cursor} case Runtime.find_among_b(state, @a_3) do :fail -> {:fail, state} {%Runtime{} = s, result} -> state = %{s | bra: s.cursor} case result do 1 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end _ -> {:ok, state} end end end).() end defp r_R2(%Runtime{} = state) do if state.vars[:p2] <= state.cursor, do: {:ok, state}, else: {:fail, state} end defp r_R1(%Runtime{} = state) do if state.vars[:p1] <= state.cursor, do: {:ok, state}, else: {:fail, state} end defp r_mark_regions(%Runtime{} = state) do case (fn state -> {:ok, put_in(state.vars[:p1], state.limit)} end).(state) do {:ok, state} -> case (fn state -> {:ok, put_in(state.vars[:p2], state.limit)} end).(state) do {:ok, state} -> {:ok, snowball_do_f(state, fn state -> case (fn state -> case Runtime.go_out_grouping(state, @g_v) do :fail -> {:fail, state} %Runtime{} = s -> next_codepoint(s) end end).(state) do {:ok, state} -> case (fn state -> case Runtime.go_in_grouping(state, @g_v) do :fail -> {:fail, state} %Runtime{} = s -> next_codepoint(s) end end).(state) do {:ok, state} -> case (fn state -> {:ok, put_in(state.vars[:p1], state.cursor)} end).(state) do {:ok, state} -> case (fn state -> case Runtime.go_out_grouping(state, @g_v) do :fail -> {:fail, state} %Runtime{} = s -> next_codepoint(s) end end).(state) do {:ok, state} -> case (fn state -> case Runtime.go_in_grouping(state, @g_v) do :fail -> {:fail, state} %Runtime{} = s -> next_codepoint(s) end end).(state) do {:ok, state} -> {:ok, put_in(state.vars[:p2], state.cursor)} r -> r end r -> r end end r -> r end r -> r end end)} end end end defp r_cleaning(%Runtime{} = state) do (fn loop_fn -> loop_fn.(loop_fn, state) end).(fn loop_fn, state -> case (fn state -> (fn -> state = %{state | bra: state.cursor} case Runtime.find_among(state, @a_4) do :fail -> {:fail, state} {%Runtime{} = s, result} -> state = %{s | ket: s.cursor} case result do 1 -> {:ok, Runtime.slice_from(state, "a")} 2 -> {:ok, Runtime.slice_from(state, "a")} 3 -> {:ok, Runtime.slice_from(state, "e")} 4 -> {:ok, Runtime.slice_from(state, "e")} 5 -> {:ok, Runtime.slice_from(state, "i")} 6 -> {:ok, Runtime.slice_from(state, "i")} 7 -> {:ok, Runtime.slice_from(state, "o")} 8 -> {:ok, Runtime.slice_from(state, "o")} 9 -> {:ok, Runtime.slice_from(state, "u")} 10 -> {:ok, Runtime.slice_from(state, "u")} 11 -> {:ok, Runtime.slice_from(state, "i")} 12 -> {:ok, Runtime.slice_from(state, ".")} 13 -> next_codepoint(state) _ -> {:ok, state} end end end).() end).(state) do {:ok, s} -> loop_fn.(loop_fn, s) {:fail, s} -> {:ok, %{s | cursor: state.cursor}} end end) end defp r_stem(%Runtime{} = state) do case (fn state -> {:ok, snowball_do_f(state, fn state -> r_mark_regions(state) end)} end).(state) do {:ok, state} -> case (fn state -> (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_attached_pronoun(state) end)} end).(state) do {:ok, state} -> case (fn state -> {:ok, snowball_do_b(state, fn state -> snowball_or(state, fn state -> r_standard_suffix(state) end, fn state -> r_verb_suffix(state) end) end)} end).(state) do {:ok, state} -> {:ok, snowball_do_b(state, fn state -> r_residual_suffix(state) end)} end end end).(state) {tag, %{s | cursor: old_cursor, limit_backward: old_lb}} end).(state) end).(state) do {:ok, state} -> {:ok, snowball_do_f(state, fn state -> r_cleaning(state) end)} end end end end