Packages

Pre-compiled Snowball stemmers for Elixir. Ships 36 stemming algorithms covering a wide range of natural languages, accessible through a single `Text.Stemmer.stem/2` entry point.

Current section

Files

Jump to
text_stemmer lib text stemmer stemmers catalan.ex
Raw

lib/text/stemmer/stemmers/catalan.ex

# 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