# Generated by Snowball.Generator — do not edit by hand. defmodule Text.Stemmer.Stemmers.Yiddish do @moduledoc """ Snowball stemmer for yiddish. Generated from the canonical Snowball algorithm source. """ alias Snowball.Runtime alias Snowball.Grouping # Groupings @g_consonant Grouping.from_string("בגדהזחטךכלםמןנסףפץצקרשתװ") @g_niked Grouping.from_string("ְֱֲֳִֵֶַָֹֻּֿׁׂ") @g_vowel Grouping.from_string("אויעױײ") # Among tables @a_0 [ {"קליב", -1, 9, nil}, {"ריב", -1, 10, nil}, {"טריב", 1, 7, nil}, {"שריב", 1, 15, nil}, {"הױב", -1, 23, nil}, {"שװיג", -1, 12, nil}, {"גאנג", -1, 1, nil}, {"זונג", -1, 18, nil}, {"שלונג", -1, 21, nil}, {"צװונג", -1, 20, nil}, {"בױג", -1, 22, nil}, {"בונד", -1, 16, nil}, {"װיז", -1, 6, nil}, {"ביט", -1, 4, nil}, {"ליט", -1, 8, nil}, {"מיט", -1, 3, nil}, {"שניט", -1, 14, nil}, {"נומ", -1, 2, nil}, {"שטאנ", -1, 25, nil}, {"ביס", -1, 5, nil}, {"שמיס", -1, 13, nil}, {"ריס", -1, 11, nil}, {"טרונק", -1, 19, nil}, {"פארלױר", -1, 24, nil}, {"שװױר", -1, 26, nil}, {"װוטש", -1, 17, nil} ] @a_1 [ {"ונג", -1, 36, nil}, {"סטו", -1, 43, nil}, {"ט", -1, 5, nil}, {"בראכט", 2, 35, nil}, {"סט", 2, 45, nil}, {"יסט", 4, 41, nil}, {"עט", 2, 7, nil}, {"שאפט", 2, 36, nil}, {"הײט", 2, 36, nil}, {"קײט", 2, 36, nil}, {"יקײט", 9, 36, nil}, {"לעכ", -1, 40, nil}, {"עלעכ", 11, 40, nil}, {"יזמ", -1, 37, nil}, {"ימ", -1, 38, nil}, {"עמ", -1, 1, nil}, {"ענעמ", 15, 4, nil}, {"טענעמ", 16, 6, nil}, {"נ", -1, 1, nil}, {"קליבנ", 18, 18, nil}, {"ריבנ", 18, 19, nil}, {"טריבנ", 20, 16, nil}, {"שריבנ", 20, 11, nil}, {"הױבנ", 18, 31, nil}, {"שװיגנ", 18, 21, nil}, {"זונגנ", 18, 26, nil}, {"שלונגנ", 18, 29, nil}, {"צװונגנ", 18, 28, nil}, {"בױגנ", 18, 30, nil}, {"בונדנ", 18, 24, nil}, {"װיזנ", 18, 15, nil}, {"טנ", 18, 6, nil}, {"GEביטנ", 31, 13, nil}, {"GEליטנ", 31, 17, nil}, {"GEמיטנ", 31, 12, nil}, {"שניטנ", 31, 23, nil}, {"סטנ", 31, 44, nil}, {"יסטנ", 36, 42, nil}, {"עטנ", 31, 7, nil}, {"GEביסנ", 18, 14, nil}, {"שמיסנ", 18, 22, nil}, {"GEריסנ", 18, 20, nil}, {"ענ", 18, 1, nil}, {"גאנגענ", 42, 9, nil}, {"עלענ", 42, 40, nil}, {"נומענ", 42, 10, nil}, {"יזמענ", 42, 37, nil}, {"שטאנענ", 42, 33, nil}, {"טרונקנ", 18, 27, nil}, {"פארלױרנ", 18, 32, nil}, {"שװױרנ", 18, 34, nil}, {"װוטשנ", 18, 25, nil}, {"גײנ", 18, 8, nil}, {"ס", -1, 1, nil}, {"טס", 53, 6, nil}, {"עטס", 54, 7, nil}, {"נס", 53, 1, nil}, {"טנס", 56, 6, nil}, {"ענס", 56, 4, nil}, {"עס", 53, 1, nil}, {"יעס", 59, 3, nil}, {"עלעס", 59, 40, nil}, {"ערס", 53, 1, nil}, {"ענערס", 62, 1, nil}, {"ע", -1, 1, nil}, {"טע", 64, 6, nil}, {"סטע", 65, 44, nil}, {"עטע", 65, 7, nil}, {"יע", 64, 2, nil}, {"עלע", 64, 40, nil}, {"ענע", 64, 4, nil}, {"טענע", 70, 6, nil}, {"ער", -1, 1, nil}, {"טער", 72, 6, nil}, {"סטער", 73, 44, nil}, {"עטער", 73, 7, nil}, {"ענער", 72, 4, nil}, {"טענער", 76, 6, nil}, {"ות", -1, 39, nil} ] @a_2 [ {"ונג", -1, 1, nil}, {"שאפט", -1, 1, nil}, {"הײט", -1, 1, nil}, {"קײט", -1, 1, nil}, {"יקײט", 3, 1, nil}, {"ל", -1, 2, nil} ] @a_3 [ {"יג", -1, 1, nil}, {"יק", -1, 1, nil}, {"דיק", 1, 1, nil}, {"נדיק", 2, 3, nil}, {"ענדיק", 3, 4, nil}, {"בליק", 1, 2, nil}, {"גליק", 1, 2, nil}, {"ניק", 1, 1, nil}, {"יש", -1, 1, nil} ] @a_4 [ {"וו", -1, 1, nil}, {"וי", -1, 2, nil}, {"יי", -1, 3, nil}, {"ך", -1, 4, nil}, {"ם", -1, 5, nil}, {"ן", -1, 6, nil}, {"ף", -1, 7, nil}, {"ץ", -1, 8, nil} ] @a_5 [ {"אדורכ", -1, 1, nil}, {"אהינ", -1, 1, nil}, {"אהער", -1, 1, nil}, {"אהײמ", -1, 1, nil}, {"אומ", -1, 1, nil}, {"אונטער", -1, 1, nil}, {"איבער", -1, 1, nil}, {"אנ", -1, 1, nil}, {"אנט", 7, 1, nil}, {"אנטקעגנ", 8, 1, nil}, {"אנידער", 7, 1, nil}, {"אפ", -1, 1, nil}, {"אפיר", 11, 1, nil}, {"אקעגנ", -1, 1, nil}, {"אראפ", -1, 1, nil}, {"ארומ", -1, 1, nil}, {"ארונטער", -1, 1, nil}, {"אריבער", -1, 1, nil}, {"ארױס", -1, 1, nil}, {"ארױפ", -1, 1, nil}, {"ארײנ", -1, 1, nil}, {"אװעק", -1, 1, nil}, {"אױס", -1, 1, nil}, {"אױפ", -1, 1, nil}, {"אײנ", -1, 1, nil}, {"בא", -1, 1, nil}, {"בײ", -1, 1, nil}, {"דורכ", -1, 1, nil}, {"דער", -1, 1, nil}, {"מיט", -1, 1, nil}, {"נאכ", -1, 1, nil}, {"פאר", -1, 1, nil}, {"פארבײ", 31, 1, nil}, {"פארױס", 31, 1, nil}, {"פונאנדער", -1, 1, nil}, {"צו", -1, 1, nil}, {"צוזאמענ", 35, 1, nil}, {"צונױפ", 35, 1, nil}, {"צוריק", 35, 1, nil}, {"צע", -1, 1, nil} ] @a_6 [ {"דזש", -1, 1, nil}, {"שטר", -1, 1, nil}, {"שטש", -1, 1, nil}, {"שפר", -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: %{p1: 0, x: 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_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_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_standard_suffix(%Runtime{} = state) do case (fn state -> {:ok, snowball_do_b(state, fn state -> (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 -> {:ok, state} 3 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_from(state, "יע")} r -> r end 4 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> case (fn state -> {:ok, Runtime.slice_del(state)} end).(state) do {:ok, state} -> (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, "גײ")} 2 -> {:ok, Runtime.slice_from(state, "נעמ")} 3 -> {:ok, Runtime.slice_from(state, "מײד")} 4 -> {:ok, Runtime.slice_from(state, "בײט")} 5 -> {:ok, Runtime.slice_from(state, "בײס")} 6 -> {:ok, Runtime.slice_from(state, "װײז")} 7 -> {:ok, Runtime.slice_from(state, "טרײב")} 8 -> {:ok, Runtime.slice_from(state, "לײט")} 9 -> {:ok, Runtime.slice_from(state, "קלײב")} 10 -> {:ok, Runtime.slice_from(state, "רײב")} 11 -> {:ok, Runtime.slice_from(state, "רײס")} 12 -> {:ok, Runtime.slice_from(state, "שװײג")} 13 -> {:ok, Runtime.slice_from(state, "שמײס")} 14 -> {:ok, Runtime.slice_from(state, "שנײד")} 15 -> {:ok, Runtime.slice_from(state, "שרײב")} 16 -> {:ok, Runtime.slice_from(state, "בינד")} 17 -> {:ok, Runtime.slice_from(state, "װיטש")} 18 -> {:ok, Runtime.slice_from(state, "זינג")} 19 -> {:ok, Runtime.slice_from(state, "טרינק")} 20 -> {:ok, Runtime.slice_from(state, "צװינג")} 21 -> {:ok, Runtime.slice_from(state, "שלינג")} 22 -> {:ok, Runtime.slice_from(state, "בײג")} 23 -> {:ok, Runtime.slice_from(state, "הײב")} 24 -> {:ok, Runtime.slice_from(state, "פארליר")} 25 -> {:ok, Runtime.slice_from(state, "שטײ")} 26 -> {:ok, Runtime.slice_from(state, "שװער")} _ -> {:ok, state} end end end).() end r -> r end 5 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end 6 -> case (fn state -> snowball_or(state, fn state -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end end, fn state -> {:ok, Runtime.slice_from(state, "ט")} end) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> lift(state, Runtime.eq_s_b(state, "בראכ")) end).(state) do {:ok, state} -> case (fn state -> {:ok, snowball_try(state, fn state -> lift(state, Runtime.eq_s_b(state, "גע")) end)} end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> {:ok, Runtime.slice_from(state, "ברענג")} end end r -> r end end r -> r end 7 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end 8 -> {:ok, Runtime.slice_from(state, "גײ")} 9 -> {:ok, Runtime.slice_from(state, "גײ")} 10 -> {:ok, Runtime.slice_from(state, "נעמ")} 11 -> {:ok, Runtime.slice_from(state, "שרײב")} 12 -> {:ok, Runtime.slice_from(state, "מײד")} 13 -> {:ok, Runtime.slice_from(state, "בײט")} 14 -> {:ok, Runtime.slice_from(state, "בײס")} 15 -> {:ok, Runtime.slice_from(state, "װײז")} 16 -> {:ok, Runtime.slice_from(state, "טרײב")} 17 -> {:ok, Runtime.slice_from(state, "לײט")} 18 -> {:ok, Runtime.slice_from(state, "קלײב")} 19 -> {:ok, Runtime.slice_from(state, "רײב")} 20 -> {:ok, Runtime.slice_from(state, "רײס")} 21 -> {:ok, Runtime.slice_from(state, "שװײג")} 22 -> {:ok, Runtime.slice_from(state, "שמײס")} 23 -> {:ok, Runtime.slice_from(state, "שנײד")} 24 -> {:ok, Runtime.slice_from(state, "בינד")} 25 -> {:ok, Runtime.slice_from(state, "װיטש")} 26 -> {:ok, Runtime.slice_from(state, "זינג")} 27 -> {:ok, Runtime.slice_from(state, "טרינק")} 28 -> {:ok, Runtime.slice_from(state, "צװינג")} 29 -> {:ok, Runtime.slice_from(state, "שלינג")} 30 -> {:ok, Runtime.slice_from(state, "בײג")} 31 -> {:ok, Runtime.slice_from(state, "הײב")} 32 -> {:ok, Runtime.slice_from(state, "פארליר")} 33 -> {:ok, Runtime.slice_from(state, "שטײ")} 34 -> {:ok, Runtime.slice_from(state, "שװער")} 35 -> {:ok, Runtime.slice_from(state, "ברענג")} 36 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end 37 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end 38 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end 39 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_from(state, "ה")} r -> r end 40 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end 41 -> snowball_or(state, 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, snowball_try(state, fn state -> case (fn state -> r_R1plus3(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_from(state, "יס")} r -> r end end)} r -> r end end, fn state -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end end) 42 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end 43 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end 44 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end 45 -> 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)} end).(state) do {:ok, state} -> case (fn state -> {:ok, snowball_do_b(state, fn state -> (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_R1(state) end).(state) do {:ok, state} -> case (fn state -> lift(state, Runtime.in_grouping_b(state, @g_consonant)) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end r -> r end _ -> {:ok, state} end end end).() end)} end).(state) do {:ok, state} -> case (fn state -> {:ok, snowball_do_b(state, fn state -> (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 2 -> {:ok, state} 3 -> case (fn state -> r_R1(state) end).(state) do {:ok, state} -> {:ok, Runtime.slice_del(state)} r -> r end 4 -> 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)} end).(state) do {:ok, state} -> {:ok, snowball_do_b(state, fn state -> (fn loop_fn -> loop_fn.(loop_fn, state) end).(fn loop_fn, state -> case (fn state -> (fn loop_fn -> loop_fn.(loop_fn, state) end).(fn loop_fn, state -> v = state.cursor case (fn state -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> snowball_or(state, fn state -> lift(state, Runtime.eq_s_b(state, "GE")) end, fn state -> lift(state, Runtime.eq_s_b(state, "TSU")) 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).(state) do {:ok, s} -> {:ok, %{s | cursor: v}} {:fail, _} -> case next_codepoint_b(%{state | cursor: v}) do {:ok, s} -> loop_fn.(loop_fn, s) {:fail, _} -> {:fail, state} end end end) end).(state) do {:ok, s} -> loop_fn.(loop_fn, s) {:fail, s} -> {:ok, %{s | cursor: state.cursor}} end end) end)} end end end end defp r_R1plus3(%Runtime{} = state) do if state.vars[:p1] <= (state.cursor + 6), 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_prelude(%Runtime{} = state) do case (fn state -> {:ok, snowball_do_f(state, fn state -> (fn loop_fn -> loop_fn.(loop_fn, state) end).(fn loop_fn, 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 = %{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 -> 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, state} -> {:ok, Runtime.slice_from(state, "װ")} r -> r end 2 -> 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, state} -> {:ok, Runtime.slice_from(state, "ױ")} r -> r end 3 -> 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, state} -> {:ok, Runtime.slice_from(state, "ײ")} r -> r end 4 -> {:ok, Runtime.slice_from(state, "כ")} 5 -> {:ok, Runtime.slice_from(state, "מ")} 6 -> {:ok, Runtime.slice_from(state, "נ")} 7 -> {:ok, Runtime.slice_from(state, "פ")} 8 -> {:ok, Runtime.slice_from(state, "צ")} _ -> {:ok, state} end end end).() 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, s} -> loop_fn.(loop_fn, s) {:fail, s} -> {:ok, %{s | cursor: state.cursor}} end end) end)} end).(state) do {:ok, state} -> {:ok, snowball_do_f(state, fn state -> (fn loop_fn -> loop_fn.(loop_fn, state) end).(fn loop_fn, state -> case (fn state -> (fn loop_fn -> loop_fn.(loop_fn, state) end).(fn loop_fn, state -> v = state.cursor case (fn state -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> lift(state, Runtime.in_grouping(state, @g_niked)) 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).(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, s} -> loop_fn.(loop_fn, s) {:fail, s} -> {:ok, %{s | cursor: state.cursor}} end end) end)} end 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, snowball_try(state, fn state -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> lift(state, Runtime.eq_s(state, "גע")) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> (fn state -> saved_c = state.cursor case (fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> lift(state, Runtime.eq_s(state, "לט")) end, fn state -> lift(state, Runtime.eq_s(state, "בנ")) end) end, fn state -> if state.cursor >= state.limit, do: {:ok, state}, else: {:fail, state} end) 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, "GE")} r -> r end end r -> r end end end)} end).(state) do {:ok, state} -> case (fn state -> {:ok, snowball_try(state, fn state -> (fn -> case Runtime.find_among(state, @a_5) do :fail -> {:fail, state} {%Runtime{} = s, result} -> state = s case result do 1 -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> snowball_test_f(state, fn state -> case (fn state -> snowball_or(state, fn state -> snowball_or(state, fn state -> lift(state, Runtime.eq_s(state, "צוגנ")) end, fn state -> lift(state, Runtime.eq_s(state, "צוקט")) end) end, fn state -> lift(state, Runtime.eq_s(state, "צוקנ")) end) end).(state) do {:ok, state} -> if state.cursor >= state.limit, do: {:ok, state}, else: {:fail, state} r -> r end end) end, fn state -> snowball_test_f(state, fn state -> lift(state, Runtime.eq_s(state, "געבנ")) end) end) end, fn state -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> lift(state, Runtime.eq_s(state, "גע")) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> {:ok, Runtime.slice_from(state, "GE")} end r -> r end end end) end, fn state -> case (fn state -> {:ok, %{state | bra: state.cursor}} end).(state) do {:ok, state} -> case (fn state -> lift(state, Runtime.eq_s(state, "צו")) end).(state) do {:ok, state} -> case (fn state -> {:ok, %{state | ket: state.cursor}} end).(state) do {:ok, state} -> {:ok, Runtime.slice_from(state, "TSU")} end r -> r end end end) _ -> {:ok, s} end end end).() end)} end).(state) do {:ok, state} -> case (fn state -> snowball_test_f(state, fn state -> case (fn state -> (fn -> n = 3 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} -> {:ok, put_in(state.vars[:x], state.cursor)} r -> r end end) end).(state) do {:ok, state} -> case (fn state -> {:ok, snowball_try(state, fn state -> (fn -> case Runtime.find_among(state, @a_6) do :fail -> {:fail, state} {%Runtime{} = s, result} -> state = s case result do 1 -> {:ok, state} _ -> {:ok, s} end end end).() end)} end).(state) do {:ok, state} -> case (fn state -> case (fn state -> (fn state -> saved_c = state.cursor case (fn state -> case (fn state -> lift(state, Runtime.in_grouping(state, @g_consonant)) end).(state) do {:ok, state} -> case (fn state -> lift(state, Runtime.in_grouping(state, @g_consonant)) end).(state) do {:ok, state} -> case (fn state -> lift(state, Runtime.in_grouping(state, @g_consonant)) end).(state) do {:ok, state} -> {:ok, put_in(state.vars[:p1], state.cursor)} r -> r end r -> r end r -> r end 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 -> case Runtime.go_out_grouping(state, @g_vowel) do :fail -> {:fail, state} %Runtime{} = s -> next_codepoint(s) end end).(state) do {:ok, state} -> case (fn state -> lift(state, Runtime.go_in_grouping(state, @g_vowel)) end).(state) do {:ok, state} -> {:ok, put_in(state.vars[:p1], state.cursor)} r -> r end r -> r end r -> r end end).(state) do {:ok, state} -> {:ok, snowball_try(state, fn state -> case (fn state -> if state.vars[:p1] < state.vars[:x], do: {:ok, state}, else: {:fail, state} end).(state) do {:ok, state} -> {:ok, put_in(state.vars[:p1], state.vars[:x])} r -> r end end)} r -> r end end r -> r end end end end end defp r_stem(%Runtime{} = state) do case (fn state -> {:ok, snowball_do_f(state, fn state -> r_prelude(state) end)} end).(state) do {:ok, state} -> case (fn state -> {:ok, snowball_do_f(state, fn state -> r_mark_regions(state) end)} end).(state) do {:ok, 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 -> {:ok, snowball_do_b(state, fn state -> r_standard_suffix(state) end)} end).(state) {tag, %{s | cursor: old_cursor, limit_backward: old_lb}} end).(state) end end end end