Commit 2133d22a by Felipe Madrigal

Use "if not condition: continue" form inside for loop

This avoids having all the logic inside a big if block. The continue act as a precondition that needs to be fulfilled.
parent cdf2a996
...@@ -3404,116 +3404,120 @@ class SpanishStemmer(_StandardStemmer): ...@@ -3404,116 +3404,120 @@ class SpanishStemmer(_StandardStemmer):
# STEP 0: Attached pronoun # STEP 0: Attached pronoun
for suffix in self.__step0_suffixes: for suffix in self.__step0_suffixes:
if word.endswith(suffix) and rv.endswith(suffix): if not (word.endswith(suffix) and rv.endswith(suffix)):
if rv[:-len(suffix)].endswith(("i\xE9ndo", continue
"\xE1ndo",
"\xE1r", "\xE9r", if rv[:-len(suffix)].endswith(("i\xE9ndo",
"\xEDr")): "\xE1ndo",
word = (word[:-len(suffix)].replace("\xE1", "a") "\xE1r", "\xE9r",
.replace("\xE9", "e") "\xEDr")):
.replace("\xED", "i")) word = (word[:-len(suffix)].replace("\xE1", "a")
r1 = (r1[:-len(suffix)].replace("\xE1", "a")
.replace("\xE9", "e")
.replace("\xED", "i"))
r2 = (r2[:-len(suffix)].replace("\xE1", "a")
.replace("\xE9", "e")
.replace("\xED", "i"))
rv = (rv[:-len(suffix)].replace("\xE1", "a")
.replace("\xE9", "e") .replace("\xE9", "e")
.replace("\xED", "i")) .replace("\xED", "i"))
r1 = (r1[:-len(suffix)].replace("\xE1", "a")
.replace("\xE9", "e")
.replace("\xED", "i"))
r2 = (r2[:-len(suffix)].replace("\xE1", "a")
.replace("\xE9", "e")
.replace("\xED", "i"))
rv = (rv[:-len(suffix)].replace("\xE1", "a")
.replace("\xE9", "e")
.replace("\xED", "i"))
elif rv[:-len(suffix)].endswith(("ando", "iendo",
"ar", "er", "ir")):
word = word[:-len(suffix)]
r1 = r1[:-len(suffix)]
r2 = r2[:-len(suffix)]
rv = rv[:-len(suffix)]
elif rv[:-len(suffix)].endswith(("ando", "iendo", elif (rv[:-len(suffix)].endswith("yendo") and
"ar", "er", "ir")): word[:-len(suffix)].endswith("uyendo")):
word = word[:-len(suffix)] word = word[:-len(suffix)]
r1 = r1[:-len(suffix)] r1 = r1[:-len(suffix)]
r2 = r2[:-len(suffix)] r2 = r2[:-len(suffix)]
rv = rv[:-len(suffix)] rv = rv[:-len(suffix)]
break
elif (rv[:-len(suffix)].endswith("yendo") and
word[:-len(suffix)].endswith("uyendo")):
word = word[:-len(suffix)]
r1 = r1[:-len(suffix)]
r2 = r2[:-len(suffix)]
rv = rv[:-len(suffix)]
break
# STEP 1: Standard suffix removal # STEP 1: Standard suffix removal
for suffix in self.__step1_suffixes: for suffix in self.__step1_suffixes:
if word.endswith(suffix): if not word.endswith(suffix):
if suffix == "amente" and r1.endswith(suffix): continue
step1_success = True
word = word[:-6]
r2 = r2[:-6]
rv = rv[:-6]
if r2.endswith("iv"): if suffix == "amente" and r1.endswith(suffix):
word = word[:-2] step1_success = True
r2 = r2[:-2] word = word[:-6]
rv = rv[:-2] r2 = r2[:-6]
rv = rv[:-6]
if r2.endswith("at"): if r2.endswith("iv"):
word = word[:-2] word = word[:-2]
rv = rv[:-2] r2 = r2[:-2]
rv = rv[:-2]
elif r2.endswith(("os", "ic", "ad")): if r2.endswith("at"):
word = word[:-2] word = word[:-2]
rv = rv[:-2] rv = rv[:-2]
elif r2.endswith(suffix): elif r2.endswith(("os", "ic", "ad")):
step1_success = True word = word[:-2]
if suffix in ("adora", "ador", "aci\xF3n", "adoras", rv = rv[:-2]
"adores", "aciones", "ante", "antes",
"ancia", "ancias"):
word = word[:-len(suffix)]
r2 = r2[:-len(suffix)]
rv = rv[:-len(suffix)]
if r2.endswith("ic"): elif r2.endswith(suffix):
word = word[:-2] step1_success = True
rv = rv[:-2] if suffix in ("adora", "ador", "aci\xF3n", "adoras",
"adores", "aciones", "ante", "antes",
"ancia", "ancias"):
word = word[:-len(suffix)]
r2 = r2[:-len(suffix)]
rv = rv[:-len(suffix)]
elif suffix in ("log\xEDa", "log\xEDas"): if r2.endswith("ic"):
word = suffix_replace(word, suffix, "log") word = word[:-2]
rv = suffix_replace(rv, suffix, "log") rv = rv[:-2]
elif suffix in ("uci\xF3n", "uciones"): elif suffix in ("log\xEDa", "log\xEDas"):
word = suffix_replace(word, suffix, "u") word = suffix_replace(word, suffix, "log")
rv = suffix_replace(rv, suffix, "u") rv = suffix_replace(rv, suffix, "log")
elif suffix in ("encia", "encias"): elif suffix in ("uci\xF3n", "uciones"):
word = suffix_replace(word, suffix, "ente") word = suffix_replace(word, suffix, "u")
rv = suffix_replace(rv, suffix, "ente") rv = suffix_replace(rv, suffix, "u")
elif suffix == "mente": elif suffix in ("encia", "encias"):
word = word[:-5] word = suffix_replace(word, suffix, "ente")
r2 = r2[:-5] rv = suffix_replace(rv, suffix, "ente")
rv = rv[:-5]
if r2.endswith(("ante", "able", "ible")): elif suffix == "mente":
word = word[:-4] word = word[:-5]
rv = rv[:-4] r2 = r2[:-5]
rv = rv[:-5]
elif suffix in ("idad", "idades"): if r2.endswith(("ante", "able", "ible")):
word = word[:-len(suffix)] word = word[:-4]
r2 = r2[:-len(suffix)] rv = rv[:-4]
rv = rv[:-len(suffix)]
for pre_suff in ("abil", "ic", "iv"): elif suffix in ("idad", "idades"):
if r2.endswith(pre_suff): word = word[:-len(suffix)]
word = word[:-len(pre_suff)] r2 = r2[:-len(suffix)]
rv = rv[:-len(pre_suff)] rv = rv[:-len(suffix)]
elif suffix in ("ivo", "iva", "ivos", "ivas"): for pre_suff in ("abil", "ic", "iv"):
word = word[:-len(suffix)] if r2.endswith(pre_suff):
r2 = r2[:-len(suffix)] word = word[:-len(pre_suff)]
rv = rv[:-len(suffix)] rv = rv[:-len(pre_suff)]
if r2.endswith("at"):
word = word[:-2] elif suffix in ("ivo", "iva", "ivos", "ivas"):
rv = rv[:-2] word = word[:-len(suffix)]
else: r2 = r2[:-len(suffix)]
word = word[:-len(suffix)] rv = rv[:-len(suffix)]
rv = rv[:-len(suffix)] if r2.endswith("at"):
break word = word[:-2]
rv = rv[:-2]
else:
word = word[:-len(suffix)]
rv = rv[:-len(suffix)]
break
# STEP 2a: Verb suffixes beginning 'y' # STEP 2a: Verb suffixes beginning 'y'
if not step1_success: if not step1_success:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment