# Generated by Snowball.Generator — do not edit by hand. defmodule Text.Stemmer.Stemmers.Turkish do @moduledoc """ Snowball stemmer for turkish. Generated from the canonical Snowball algorithm source. """ alias Snowball.Runtime alias Snowball.Grouping # Groupings @g_U Grouping.from_string("ıiuü") @g_vowel Grouping.from_string("aeıioöuü") @g_vowel1 Grouping.from_string("aıou") @g_vowel2 Grouping.from_string("eiöü") @g_vowel3 Grouping.from_string("aı") @g_vowel4 Grouping.from_string("ei") @g_vowel5 Grouping.from_string("ou") @g_vowel6 Grouping.from_string("öü") # Among tables @a_0 [ {"b", -1, 1, nil}, {"c", -1, 2, nil}, {"d", -1, 3, nil}, {"ğ", -1, 4, nil} ] @a_1 [ {"miş", -1, -1, nil}, {"muş", -1, -1, nil}, {"mış", -1, -1, nil}, {"müş", -1, -1, nil} ] @a_2 [ {"sa", -1, -1, nil}, {"se", -1, -1, nil}, {"sak", -1, -1, nil}, {"sek", -1, -1, nil}, {"sam", -1, -1, nil}, {"sem", -1, -1, nil}, {"san", -1, -1, nil}, {"sen", -1, -1, nil} ] @a_3 [ {"di", -1, -1, nil}, {"ti", -1, -1, nil}, {"dik", -1, -1, nil}, {"tik", -1, -1, nil}, {"duk", -1, -1, nil}, {"tuk", -1, -1, nil}, {"dık", -1, -1, nil}, {"tık", -1, -1, nil}, {"dük", -1, -1, nil}, {"tük", -1, -1, nil}, {"dim", -1, -1, nil}, {"tim", -1, -1, nil}, {"dum", -1, -1, nil}, {"tum", -1, -1, nil}, {"dım", -1, -1, nil}, {"tım", -1, -1, nil}, {"düm", -1, -1, nil}, {"tüm", -1, -1, nil}, {"din", -1, -1, nil}, {"tin", -1, -1, nil}, {"dun", -1, -1, nil}, {"tun", -1, -1, nil}, {"dın", -1, -1, nil}, {"tın", -1, -1, nil}, {"dün", -1, -1, nil}, {"tün", -1, -1, nil}, {"du", -1, -1, nil}, {"tu", -1, -1, nil}, {"dı", -1, -1, nil}, {"tı", -1, -1, nil}, {"dü", -1, -1, nil}, {"tü", -1, -1, nil} ] @a_4 [ {"casına", -1, -1, nil}, {"cesine", -1, -1, nil} ] @a_5 [ {"dir", -1, -1, nil}, {"tir", -1, -1, nil}, {"dur", -1, -1, nil}, {"tur", -1, -1, nil}, {"dır", -1, -1, nil}, {"tır", -1, -1, nil}, {"dür", -1, -1, nil}, {"tür", -1, -1, nil} ] @a_6 [ {"niz", -1, -1, nil}, {"nuz", -1, -1, nil}, {"nız", -1, -1, nil}, {"nüz", -1, -1, nil} ] @a_7 [ {"lar", -1, -1, nil}, {"ler", -1, -1, nil} ] @a_8 [ {"siniz", -1, -1, nil}, {"sunuz", -1, -1, nil}, {"sınız", -1, -1, nil}, {"sünüz", -1, -1, nil} ] @a_9 [ {"iz", -1, -1, nil}, {"uz", -1, -1, nil}, {"ız", -1, -1, nil}, {"üz", -1, -1, nil} ] @a_10 [ {"sin", -1, -1, nil}, {"sun", -1, -1, nil}, {"sın", -1, -1, nil}, {"sün", -1, -1, nil} ] @a_11 [ {"im", -1, -1, nil}, {"um", -1, -1, nil}, {"ım", -1, -1, nil}, {"üm", -1, -1, nil} ] @a_12 [ {"ca", -1, -1, nil}, {"ce", -1, -1, nil} ] @a_13 [ {"la", -1, -1, nil}, {"le", -1, -1, nil} ] @a_14 [ {"ndan", -1, -1, nil}, {"nden", -1, -1, nil} ] @a_15 [ {"dan", -1, -1, nil}, {"tan", -1, -1, nil}, {"den", -1, -1, nil}, {"ten", -1, -1, nil} ] @a_16 [ {"nda", -1, -1, nil}, {"nde", -1, -1, nil} ] @a_17 [ {"da", -1, -1, nil}, {"ta", -1, -1, nil}, {"de", -1, -1, nil}, {"te", -1, -1, nil} ] @a_18 [ {"na", -1, -1, nil}, {"ne", -1, -1, nil} ] @a_19 [ {"a", -1, -1, nil}, {"e", -1, -1, nil} ] @a_20 [ {"in", -1, -1, nil}, {"un", -1, -1, nil}, {"ın", -1, -1, nil}, {"ün", -1, -1, nil} ] @a_21 [ {"ni", -1, -1, nil}, {"nu", -1, -1, nil}, {"nı", -1, -1, nil}, {"nü", -1, -1, nil} ] @a_22 [ {"leri", -1, -1, nil}, {"ları", -1, -1, nil} ] @a_23 [ {"m", -1, -1, nil}, {"n", -1, -1, nil}, {"miz", -1, -1, nil}, {"niz", -1, -1, nil}, {"muz", -1, -1, nil}, {"nuz", -1, -1, nil}, {"mız", -1, -1, nil}, {"nız", -1, -1, nil}, {"müz", -1, -1, nil}, {"nüz", -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 | vars: %{continue_stemming_noun_suffixes: false}} 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_test_f(state, fun) do saved_c = state.cursor case fun.(state) do {:ok, s} -> {:ok, %{s | cursor: saved_c}} {:fail, s} -> {:fail, %{s | cursor: saved_c}} end 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_try(state, fun) do rel = state.limit - state.cursor case fun.(state) do {:ok, s} -> s {:fail, s} -> %{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(%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 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_is_reserved_word(%Runtime{} = state) do case (fn state -> lift(state, Runtime.eq_s_b(state, "ad")) end).(state) do {:ok, state} -> case (fn state -> {:ok, snowball_try(state, fn state -> lift(state, Runtime.eq_s_b(state, "soy")) end)} end).(state) do {:ok, state} -> if state.cursor <= state.limit_backward, do: {:ok, state}, else: {:fail, state} end r -> r end end defp r_append_U_to_stems_ending_with_d_or_g(%Runtime{} = state) do case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> snowball_or(state, fn state -> lift(state, Runtime.eq_s_b(state, "d")) end, fn state -> lift(state, Runtime.eq_s_b(state, "g")) end) end).(state) do {:ok, state} -> case (fn state -> lift(state, Runtime.go_out_grouping_b(state, @g_vowel)) end).(state) do {:ok, state} -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> case (fn state -> snowball_or(state, fn state -> lift(state, Runtime.eq_s_b(state, "a")) end, fn state -> lift(state, Runtime.eq_s_b(state, "ı")) end) end).(state) do {:ok, state} -> {:ok, Runtime.slice_from(state, "ı")} r -> r end end, fn state -> case (fn state -> snowball_or(state, fn state -> lift(state, Runtime.eq_s_b(state, "e")) end, fn state -> lift(state, Runtime.eq_s_b(state, "i")) end) end).(state) do {:ok, state} -> {:ok, Runtime.slice_from(state, "i")} r -> r end end) end, fn state -> case (fn state -> snowball_or(state, fn state -> lift(state, Runtime.eq_s_b(state, "o")) end, fn state -> lift(state, Runtime.eq_s_b(state, "u")) end) end).(state) do {:ok, state} -> {:ok, Runtime.slice_from(state, "u")} r -> r end end) end, fn state -> case (fn state -> snowball_or(state, fn state -> lift(state, Runtime.eq_s_b(state, "ö")) end, fn state -> lift(state, Runtime.eq_s_b(state, "ü")) end) end).(state) do {:ok, state} -> {:ok, Runtime.slice_from(state, "ü")} r -> r end end) r -> r end r -> r end end end end defp r_post_process_last_consonants(%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, "p")} 2 -> {:ok, Runtime.slice_from(state, "ç")} 3 -> {:ok, Runtime.slice_from(state, "t")} 4 -> {:ok, Runtime.slice_from(state, "k")} _ -> {:ok, state} end end end).() end defp r_stem_noun_suffixes(%Runtime{} = state) do snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> r_mark_lAr(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> r_stem_suffix_chain_before_ki(state) end)} end end r -> r end end end, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> r_mark_ncA(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> r_mark_lArI(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 end, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> snowball_or(state, fn state -> r_mark_possessives(state) end, fn state -> r_mark_sU(state) end) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> r_mark_lAr(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> r_stem_suffix_chain_before_ki(state) end end r -> r end end end)} end end r -> r end end end) end, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> r_mark_lAr(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> r_stem_suffix_chain_before_ki(state) end end r -> r end end end) end)} end end r -> r end end end) end, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> snowball_or(state, fn state -> r_mark_ndA(state) end, fn state -> r_mark_nA(state) end) end).(state) do {:ok, state} -> snowball_or(state, fn state -> snowball_or(state, fn state -> case (fn state -> r_mark_lArI(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, fn state -> case (fn state -> r_mark_sU(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> r_mark_lAr(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> r_stem_suffix_chain_before_ki(state) end end r -> r end end end)} end end r -> r end end) end, fn state -> r_stem_suffix_chain_before_ki(state) end) r -> r end end end) end, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> snowball_or(state, fn state -> r_mark_ndAn(state) end, fn state -> r_mark_nU(state) end) end).(state) do {:ok, state} -> snowball_or(state, fn state -> case (fn state -> r_mark_sU(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> r_mark_lAr(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> r_stem_suffix_chain_before_ki(state) end end r -> r end end end)} end end r -> r end end, fn state -> r_mark_lArI(state) end) r -> r end end end) end, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> r_mark_DAn(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> snowball_or(state, fn state -> snowball_or(state, fn state -> case (fn state -> r_mark_possessives(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> r_mark_lAr(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> r_stem_suffix_chain_before_ki(state) end end r -> r end end end)} end end r -> r end end, fn state -> case (fn state -> r_mark_lAr(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> r_stem_suffix_chain_before_ki(state) end)} end end r -> r end end) end, fn state -> r_stem_suffix_chain_before_ki(state) end) end end)} end end r -> r end end end) end, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> snowball_or(state, fn state -> r_mark_nUn(state) end, fn state -> r_mark_ylA(state) end) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> r_mark_lAr(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> r_stem_suffix_chain_before_ki(state) end end r -> r end end end, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> snowball_or(state, fn state -> r_mark_possessives(state) end, fn state -> r_mark_sU(state) end) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> r_mark_lAr(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> r_stem_suffix_chain_before_ki(state) end end r -> r end end end)} end end r -> r end end end) end, fn state -> r_stem_suffix_chain_before_ki(state) end) end)} end end r -> r end end end) end, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> r_mark_lArI(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 end) end, fn state -> r_stem_suffix_chain_before_ki(state) end) end, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> r_mark_DA(state) end, fn state -> r_mark_yU(state) end) end, fn state -> r_mark_yA(state) end) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> snowball_or(state, fn state -> case (fn state -> r_mark_possessives(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> r_mark_lAr(state) end end)} end end r -> r end end, fn state -> r_mark_lAr(state) end) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> r_stem_suffix_chain_before_ki(state) end end end r -> r end end end)} end end r -> r end end end) end, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> snowball_or(state, fn state -> r_mark_possessives(state) end, fn state -> r_mark_sU(state) end) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> r_mark_lAr(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> r_stem_suffix_chain_before_ki(state) end end r -> r end end end)} end end r -> r end end end) end defp r_stem_suffix_chain_before_ki(%Runtime{} = state) do case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> r_mark_ki(state) end).(state) do {:ok, state} -> snowball_or(state, fn state -> snowball_or(state, fn state -> case (fn state -> r_mark_DA(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> snowball_or(state, fn state -> case (fn state -> r_mark_lAr(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> r_stem_suffix_chain_before_ki(state) end)} end end r -> r end end, fn state -> case (fn state -> r_mark_possessives(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> r_mark_lAr(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> r_stem_suffix_chain_before_ki(state) end end r -> r end end end)} end end r -> r end end) end end)} end end r -> r end end, fn state -> case (fn state -> r_mark_nUn(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> snowball_or(state, fn state -> snowball_or(state, fn state -> case (fn state -> r_mark_lArI(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, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> snowball_or(state, fn state -> r_mark_possessives(state) end, fn state -> r_mark_sU(state) end) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> r_mark_lAr(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> r_stem_suffix_chain_before_ki(state) end end r -> r end end end)} end end r -> r end end end) end, fn state -> r_stem_suffix_chain_before_ki(state) end) end end)} end end r -> r end end) end, fn state -> case (fn state -> r_mark_ndA(state) end).(state) do {:ok, state} -> snowball_or(state, fn state -> snowball_or(state, fn state -> case (fn state -> r_mark_lArI(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, fn state -> case (fn state -> r_mark_sU(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> r_mark_lAr(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> r_stem_suffix_chain_before_ki(state) end end r -> r end end end)} end end r -> r end end) end, fn state -> r_stem_suffix_chain_before_ki(state) end) r -> r end end) r -> r end end end defp r_stem_nominal_verb_suffixes(%Runtime{} = state) do case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, put_in(state.vars[:continue_stemming_noun_suffixes], true)} end).(state) do {:ok, state} -> case (fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> r_mark_ymUs_(state) end, fn state -> r_mark_yDU(state) end) end, fn state -> r_mark_ysA(state) end) end, fn state -> r_mark_yken(state) end) end, fn state -> case (fn state -> r_mark_cAsInA(state) end).(state) do {:ok, state} -> case (fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> r_mark_sUnUz(state) end, fn state -> r_mark_lAr(state) end) end, fn state -> r_mark_yUm(state) end) end, fn state -> r_mark_sUn(state) end) end, fn state -> r_mark_yUz(state) end) end, fn state -> {:ok, state} end) end).(state) do {:ok, state} -> r_mark_ymUs_(state) r -> r end r -> r end end) end, fn state -> case (fn state -> r_mark_lAr(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> case (fn state -> {:ok, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> r_mark_DUr(state) end, fn state -> r_mark_yDU(state) end) end, fn state -> r_mark_ysA(state) end) end, fn state -> r_mark_ymUs_(state) end) end end)} end).(state) do {:ok, state} -> {:ok, put_in(state.vars[:continue_stemming_noun_suffixes], false)} end end end r -> r end end) end, fn state -> case (fn state -> r_mark_nUz(state) end).(state) do {:ok, state} -> snowball_or(state, fn state -> r_mark_yDU(state) end, fn state -> r_mark_ysA(state) end) r -> r end end) end, fn state -> case (fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> r_mark_sUnUz(state) end, fn state -> r_mark_yUz(state) end) end, fn state -> r_mark_sUn(state) end) end, fn state -> r_mark_yUm(state) end) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> r_mark_ymUs_(state) end end)} end end r -> r end end) end, fn state -> case (fn state -> r_mark_DUr(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> r_mark_sUnUz(state) end, fn state -> r_mark_lAr(state) end) end, fn state -> r_mark_yUm(state) end) end, fn state -> r_mark_sUn(state) end) end, fn state -> r_mark_yUz(state) end) end, fn state -> {:ok, state} end) end).(state) do {:ok, state} -> r_mark_ymUs_(state) r -> r end end end)} end end r -> r end end) 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 end end defp r_mark_yken(%Runtime{} = state) do case (fn state -> lift(state, Runtime.eq_s_b(state, "ken")) end).(state) do {:ok, state} -> r_mark_suffix_with_optional_y_consonant(state) r -> r end end defp r_mark_ymUs_(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> case (fn state -> (fn -> case Runtime.find_among_b(state, @a_1) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() end).(state) do {:ok, state} -> r_mark_suffix_with_optional_y_consonant(state) r -> r end r -> r end end defp r_mark_ysA(%Runtime{} = state) do case (fn state -> (fn -> case Runtime.find_among_b(state, @a_2) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() end).(state) do {:ok, state} -> r_mark_suffix_with_optional_y_consonant(state) r -> r end end defp r_mark_yDU(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> case (fn state -> (fn -> case Runtime.find_among_b(state, @a_3) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() end).(state) do {:ok, state} -> r_mark_suffix_with_optional_y_consonant(state) r -> r end r -> r end end defp r_mark_cAsInA(%Runtime{} = state) do (fn -> case Runtime.find_among_b(state, @a_4) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() end defp r_mark_DUr(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> (fn -> case Runtime.find_among_b(state, @a_5) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() r -> r end end defp r_mark_nUz(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> (fn -> case Runtime.find_among_b(state, @a_6) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() r -> r end end defp r_mark_lAr(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> (fn -> case Runtime.find_among_b(state, @a_7) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() r -> r end end defp r_mark_sUnUz(%Runtime{} = state) do (fn -> case Runtime.find_among_b(state, @a_8) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() end defp r_mark_yUz(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> case (fn state -> (fn -> case Runtime.find_among_b(state, @a_9) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() end).(state) do {:ok, state} -> r_mark_suffix_with_optional_y_consonant(state) r -> r end r -> r end end defp r_mark_sUn(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> (fn -> case Runtime.find_among_b(state, @a_10) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() r -> r end end defp r_mark_yUm(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> case (fn state -> (fn -> case Runtime.find_among_b(state, @a_11) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() end).(state) do {:ok, state} -> r_mark_suffix_with_optional_y_consonant(state) r -> r end r -> r end end defp r_mark_ncA(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> case (fn state -> (fn -> case Runtime.find_among_b(state, @a_12) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() end).(state) do {:ok, state} -> r_mark_suffix_with_optional_n_consonant(state) r -> r end r -> r end end defp r_mark_ki(%Runtime{} = state) do lift(state, Runtime.eq_s_b(state, "ki")) end defp r_mark_ylA(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> case (fn state -> (fn -> case Runtime.find_among_b(state, @a_13) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() end).(state) do {:ok, state} -> r_mark_suffix_with_optional_y_consonant(state) r -> r end r -> r end end defp r_mark_ndAn(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> (fn -> case Runtime.find_among_b(state, @a_14) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() r -> r end end defp r_mark_DAn(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> (fn -> case Runtime.find_among_b(state, @a_15) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() r -> r end end defp r_mark_ndA(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> (fn -> case Runtime.find_among_b(state, @a_16) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() r -> r end end defp r_mark_DA(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> (fn -> case Runtime.find_among_b(state, @a_17) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() r -> r end end defp r_mark_nA(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> (fn -> case Runtime.find_among_b(state, @a_18) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() r -> r end end defp r_mark_yA(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> case (fn state -> (fn -> case Runtime.find_among_b(state, @a_19) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() end).(state) do {:ok, state} -> r_mark_suffix_with_optional_y_consonant(state) r -> r end r -> r end end defp r_mark_nUn(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> case (fn state -> (fn -> case Runtime.find_among_b(state, @a_20) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() end).(state) do {:ok, state} -> r_mark_suffix_with_optional_n_consonant(state) r -> r end r -> r end end defp r_mark_nU(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> (fn -> case Runtime.find_among_b(state, @a_21) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() r -> r end end defp r_mark_yU(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> case (fn state -> lift(state, Runtime.in_grouping_b(state, @g_U)) end).(state) do {:ok, state} -> r_mark_suffix_with_optional_y_consonant(state) r -> r end r -> r end end defp r_mark_lArI(%Runtime{} = state) do (fn -> case Runtime.find_among_b(state, @a_22) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() end defp r_mark_sU(%Runtime{} = state) do case (fn state -> r_check_vowel_harmony(state) end).(state) do {:ok, state} -> case (fn state -> lift(state, Runtime.in_grouping_b(state, @g_U)) end).(state) do {:ok, state} -> r_mark_suffix_with_optional_s_consonant(state) r -> r end r -> r end end defp r_mark_possessives(%Runtime{} = state) do case (fn state -> (fn -> case Runtime.find_among_b(state, @a_23) do :fail -> {:fail, state} {%Runtime{} = s, _} -> {:ok, s} end end).() end).(state) do {:ok, state} -> r_mark_suffix_with_optional_U_vowel(state) r -> r end end defp r_mark_suffix_with_optional_U_vowel(%Runtime{} = state) do snowball_or(state, fn state -> case (fn state -> lift(state, Runtime.in_grouping_b(state, @g_U)) end).(state) do {:ok, state} -> snowball_test_b(state, fn state -> lift(state, Runtime.out_grouping_b(state, @g_vowel)) end) r -> r end end, fn state -> case (fn state -> (fn state -> saved_c = state.cursor case (fn state -> lift(state, Runtime.in_grouping_b(state, @g_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} -> snowball_test_b(state, fn state -> case (fn state -> next_codepoint_b(state) end).(state) do {:ok, state} -> lift(state, Runtime.out_grouping_b(state, @g_vowel)) r -> r end end) r -> r end end) end defp r_mark_suffix_with_optional_y_consonant(%Runtime{} = state) do snowball_or(state, fn state -> case (fn state -> lift(state, Runtime.eq_s_b(state, "y")) end).(state) do {:ok, state} -> snowball_test_b(state, fn state -> lift(state, Runtime.in_grouping_b(state, @g_vowel)) end) r -> r end end, fn state -> case (fn state -> (fn state -> saved_c = state.cursor case (fn state -> lift(state, Runtime.eq_s_b(state, "y")) 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} -> snowball_test_b(state, fn state -> case (fn state -> next_codepoint_b(state) end).(state) do {:ok, state} -> lift(state, Runtime.in_grouping_b(state, @g_vowel)) r -> r end end) r -> r end end) end defp r_mark_suffix_with_optional_s_consonant(%Runtime{} = state) do snowball_or(state, fn state -> case (fn state -> lift(state, Runtime.eq_s_b(state, "s")) end).(state) do {:ok, state} -> snowball_test_b(state, fn state -> lift(state, Runtime.in_grouping_b(state, @g_vowel)) end) r -> r end end, fn 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} -> snowball_test_b(state, fn state -> case (fn state -> next_codepoint_b(state) end).(state) do {:ok, state} -> lift(state, Runtime.in_grouping_b(state, @g_vowel)) r -> r end end) r -> r end end) end defp r_mark_suffix_with_optional_n_consonant(%Runtime{} = state) do snowball_or(state, fn state -> case (fn state -> lift(state, Runtime.eq_s_b(state, "n")) end).(state) do {:ok, state} -> snowball_test_b(state, fn state -> lift(state, Runtime.in_grouping_b(state, @g_vowel)) end) r -> r end end, fn state -> 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} -> snowball_test_b(state, fn state -> case (fn state -> next_codepoint_b(state) end).(state) do {:ok, state} -> lift(state, Runtime.in_grouping_b(state, @g_vowel)) r -> r end end) r -> r end end) end defp r_check_vowel_harmony(%Runtime{} = state) do snowball_test_b(state, fn state -> case (fn state -> lift(state, Runtime.go_out_grouping_b(state, @g_vowel)) end).(state) do {:ok, state} -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> case (fn state -> lift(state, Runtime.eq_s_b(state, "a")) end).(state) do {:ok, state} -> lift(state, Runtime.go_out_grouping_b(state, @g_vowel1)) r -> r end end, fn state -> case (fn state -> lift(state, Runtime.eq_s_b(state, "e")) end).(state) do {:ok, state} -> lift(state, Runtime.go_out_grouping_b(state, @g_vowel2)) r -> r end end) end, fn state -> case (fn state -> lift(state, Runtime.eq_s_b(state, "ı")) end).(state) do {:ok, state} -> lift(state, Runtime.go_out_grouping_b(state, @g_vowel3)) r -> r end end) end, fn state -> case (fn state -> lift(state, Runtime.eq_s_b(state, "i")) end).(state) do {:ok, state} -> lift(state, Runtime.go_out_grouping_b(state, @g_vowel4)) r -> r end end) end, fn state -> case (fn state -> lift(state, Runtime.eq_s_b(state, "o")) end).(state) do {:ok, state} -> lift(state, Runtime.go_out_grouping_b(state, @g_vowel5)) r -> r end end) end, fn state -> case (fn state -> lift(state, Runtime.eq_s_b(state, "ö")) end).(state) do {:ok, state} -> lift(state, Runtime.go_out_grouping_b(state, @g_vowel6)) r -> r end end) end, fn state -> case (fn state -> lift(state, Runtime.eq_s_b(state, "u")) end).(state) do {:ok, state} -> lift(state, Runtime.go_out_grouping_b(state, @g_vowel5)) r -> r end end) end, fn state -> case (fn state -> lift(state, Runtime.eq_s_b(state, "ü")) end).(state) do {:ok, state} -> lift(state, Runtime.go_out_grouping_b(state, @g_vowel6)) r -> r end end) r -> r end end) end defp r_remove_proper_noun_suffix(%Runtime{} = state) do case (fn state -> {:ok, snowball_do_f(state, fn state -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> (fn loop_fn -> loop_fn.(loop_fn, state) end).(fn loop_fn, state -> v = state.cursor case (fn state -> (fn state -> saved_c = state.cursor case (fn state -> lift(state, Runtime.eq_s(state, "'")) end).(state) do {:ok, s} -> {:fail, %{s | cursor: saved_c}} {:fail, s} -> {:ok, %{s | cursor: saved_c}} end end).(state) end).(state) do {:ok, s} -> {:ok, %{s | cursor: v}} {:fail, _} -> case next_codepoint(%{state | cursor: v}) do {:ok, s} -> loop_fn.(loop_fn, s) {:fail, _} -> {:fail, state} end end end) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} end r -> r end end end)} end).(state) do {:ok, state} -> {:ok, snowball_do_f(state, fn state -> case (fn state -> (fn -> n = 2 Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} -> case next_codepoint(s) do {:ok, s2} -> {:cont, {:ok, s2}} {:fail, _} -> {:halt, {:fail, state}} end end) end).() end).(state) do {:ok, state} -> case (fn state -> (fn loop_fn -> loop_fn.(loop_fn, state) end).(fn loop_fn, state -> v = state.cursor case (fn state -> lift(state, Runtime.eq_s(state, "'")) end).(state) do {:ok, s} -> {:ok, %{s | cursor: v}} {:fail, _} -> case next_codepoint(%{state | cursor: v}) do {:ok, s} -> loop_fn.(loop_fn, s) {:fail, _} -> {:fail, state} end end end) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | cursor: state.limit}} end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} end end end r -> r end r -> r end end)} end end defp r_more_than_one_syllable_word(%Runtime{} = state) do snowball_test_f(state, fn state -> (fn -> n = 2 Enum.reduce_while(1..max(n, 0)//1, {:ok, state}, fn _, {:ok, s} -> case (fn state -> case Runtime.go_out_grouping(state, @g_vowel) do :fail -> {:fail, state} %Runtime{} = s -> next_codepoint(s) end end).(s) do {:ok, s2} -> {:cont, {:ok, s2}} {:fail, s2} -> {:halt, {:fail, s2}} end end) end).() end) end defp r_postlude(%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 -> (fn state -> saved_c = state.cursor case (fn state -> r_is_reserved_word(state) 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 -> {:ok, snowball_do_b(state, fn state -> r_append_U_to_stems_ending_with_d_or_g(state) end)} end).(state) do {:ok, state} -> {:ok, snowball_do_b(state, fn state -> r_post_process_last_consonants(state) end)} end r -> r end end).(state) {tag, %{s | cursor: old_cursor, limit_backward: old_lb}} end).(state) end defp r_stem(%Runtime{} = state) do case (fn state -> {:ok, snowball_do_f(state, fn state -> r_remove_proper_noun_suffix(state) end)} end).(state) do {:ok, state} -> case (fn state -> r_more_than_one_syllable_word(state) 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_stem_nominal_verb_suffixes(state) end)} end).(state) do {:ok, state} -> case (fn state -> if state.vars[:continue_stemming_noun_suffixes], do: {:ok, state}, else: {:fail, state} end).(state) do {:ok, state} -> {:ok, snowball_do_b(state, fn state -> r_stem_noun_suffixes(state) end)} r -> r end end end).(state) {tag, %{s | cursor: old_cursor, limit_backward: old_lb}} end).(state) end).(state) do {:ok, state} -> r_postlude(state) r -> r end r -> r end end end end