Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
@staticmethod
def get_verb_variants(verb):
""" return modified forms of input verb"""
verb_list = []
#cases like verb started with Alef madda, it can ءا or أأ
if verb.startswith(ar.ALEF_MADDA):
verb_list.append(ar.ALEF_HAMZA_ABOVE + ar.ALEF_HAMZA_ABOVE \
+verb[1:])
verb_list.append(ar.HAMZA + ar.ALEF + verb[1:])
return verb_list
@staticmethod
u'آنض':[u'أءنض'],
u'آنف':[u'أءنف'],
u'آنق':[u'أءنق'],
u'آنى':[u'أءنى'],
u'آهل':[u'أءهل'],
u'آوب':[u'ءاوب'],
u'آوى':[u'أءوى'],
u'آيد':[u'ءايد'],
u'آيس':[u'أءيس'],
}
STANDARD_REPLACEMENT=[
#-تحويل همزة القطع على الألف بعدها فتحة
#وهمزة القطع على الألف بعدها سكون إلى ألف ممدودة
( u"".join([ALEF_HAMZA_ABOVE, FATHA, ALEF]), ALEF_MADDA)
, ( u"".join([ALEF_MADDA, FATHA]), ALEF_MADDA)
, ( u"".join([ALEF_MADDA, ALEF]), ALEF_MADDA)
, ( u"".join([ALEF_HAMZA_ABOVE, FATHA, ALEF_HAMZA_ABOVE, SUKUN]), ALEF_MADDA)
, ( u"".join([ALEF_HAMZA_ABOVE, FATHA, ALEF_HAMZA_ABOVE, FATHA]), ALEF_MADDA)
, ( u"".join([ALEF_HAMZA_ABOVE, DAMMA, WAW_HAMZA, SUKUN]), ALEF_HAMZA_ABOVE+DAMMA+WAW)
, ( u"".join([YEH, SHADDA, FATHA, ALEF_MAKSURA]), YEH+SHADDA+FATHA+ALEF)
# إدغام النون الساكنة
, ( u"".join([NOON, SUKUN, NOON]), NOON+SHADDA)
# إذا كان الحرف الأول ساكنا وبعده شدة، ثم أضيفت إليه الألف
, ( u"".join([SUKUN, SHADDA]), SHADDA)
## معالجة ألف التفريق
, ( ALEF_WASLA, ALEF)
## معالجة ألف التفريق
, ( ALEF_MAMDUDA, ALEF)
u'آنس':[u'أءنس', u'ءانس'],
u'آنض':[u'أءنض'],
u'آنف':[u'أءنف'],
u'آنق':[u'أءنق'],
u'آنى':[u'أءنى'],
u'آهل':[u'أءهل'],
u'آوب':[u'ءاوب'],
u'آوى':[u'أءوى'],
u'آيد':[u'ءايد'],
u'آيس':[u'أءيس'],
}
STANDARD_REPLACEMENT=[
#-تحويل همزة القطع على الألف بعدها فتحة
#وهمزة القطع على الألف بعدها سكون إلى ألف ممدودة
( u"".join([ALEF_HAMZA_ABOVE, FATHA, ALEF]), ALEF_MADDA)
, ( u"".join([ALEF_MADDA, FATHA]), ALEF_MADDA)
, ( u"".join([ALEF_MADDA, ALEF]), ALEF_MADDA)
, ( u"".join([ALEF_HAMZA_ABOVE, FATHA, ALEF_HAMZA_ABOVE, SUKUN]), ALEF_MADDA)
, ( u"".join([ALEF_HAMZA_ABOVE, FATHA, ALEF_HAMZA_ABOVE, FATHA]), ALEF_MADDA)
, ( u"".join([ALEF_HAMZA_ABOVE, DAMMA, WAW_HAMZA, SUKUN]), ALEF_HAMZA_ABOVE+DAMMA+WAW)
, ( u"".join([YEH, SHADDA, FATHA, ALEF_MAKSURA]), YEH+SHADDA+FATHA+ALEF)
# إدغام النون الساكنة
, ( u"".join([NOON, SUKUN, NOON]), NOON+SHADDA)
# إذا كان الحرف الأول ساكنا وبعده شدة، ثم أضيفت إليه الألف
, ( u"".join([SUKUN, SHADDA]), SHADDA)
## معالجة ألف التفريق
, ( ALEF_WASLA, ALEF)
## معالجة ألف التفريق
, ( ALEF_MAMDUDA, ALEF)
u'آنس':[u'أءنس', u'ءانس'],
u'آنض':[u'أءنض'],
u'آنف':[u'أءنف'],
u'آنق':[u'أءنق'],
u'آنى':[u'أءنى'],
u'آهل':[u'أءهل'],
u'آوب':[u'ءاوب'],
u'آوى':[u'أءوى'],
u'آيد':[u'ءايد'],
u'آيس':[u'أءيس'],
}
STANDARD_REPLACEMENT=[
#-تحويل همزة القطع على الألف بعدها فتحة
#وهمزة القطع على الألف بعدها سكون إلى ألف ممدودة
( u"".join([ALEF_HAMZA_ABOVE, FATHA, ALEF]), ALEF_MADDA)
, ( u"".join([ALEF_MADDA, FATHA]), ALEF_MADDA)
, ( u"".join([ALEF_MADDA, ALEF]), ALEF_MADDA)
, ( u"".join([ALEF_HAMZA_ABOVE, FATHA, ALEF_HAMZA_ABOVE, SUKUN]), ALEF_MADDA)
, ( u"".join([ALEF_HAMZA_ABOVE, FATHA, ALEF_HAMZA_ABOVE, FATHA]), ALEF_MADDA)
, ( u"".join([ALEF_HAMZA_ABOVE, DAMMA, WAW_HAMZA, SUKUN]), ALEF_HAMZA_ABOVE+DAMMA+WAW)
, ( u"".join([YEH, SHADDA, FATHA, ALEF_MAKSURA]), YEH+SHADDA+FATHA+ALEF)
# إدغام النون الساكنة
, ( u"".join([NOON, SUKUN, NOON]), NOON+SHADDA)
# إذا كان الحرف الأول ساكنا وبعده شدة، ثم أضيفت إليه الألف
, ( u"".join([SUKUN, SHADDA]), SHADDA)
## معالجة ألف التفريق
, ( ALEF_WASLA, ALEF)
## معالجة ألف التفريق
, ( ALEF_MAMDUDA, ALEF)
u'آنض':[u'أءنض'],
u'آنف':[u'أءنف'],
u'آنق':[u'أءنق'],
u'آنى':[u'أءنى'],
u'آهل':[u'أءهل'],
u'آوب':[u'ءاوب'],
u'آوى':[u'أءوى'],
u'آيد':[u'ءايد'],
u'آيس':[u'أءيس'],
}
STANDARD_REPLACEMENT=[
#-تحويل همزة القطع على الألف بعدها فتحة
#وهمزة القطع على الألف بعدها سكون إلى ألف ممدودة
( u"".join([ALEF_HAMZA_ABOVE, FATHA, ALEF]), ALEF_MADDA)
, ( u"".join([ALEF_MADDA, FATHA]), ALEF_MADDA)
, ( u"".join([ALEF_MADDA, ALEF]), ALEF_MADDA)
, ( u"".join([ALEF_HAMZA_ABOVE, FATHA, ALEF_HAMZA_ABOVE, SUKUN]), ALEF_MADDA)
, ( u"".join([ALEF_HAMZA_ABOVE, FATHA, ALEF_HAMZA_ABOVE, FATHA]), ALEF_MADDA)
, ( u"".join([ALEF_HAMZA_ABOVE, DAMMA, WAW_HAMZA, SUKUN]), ALEF_HAMZA_ABOVE+DAMMA+WAW)
, ( u"".join([YEH, SHADDA, FATHA, ALEF_MAKSURA]), YEH+SHADDA+FATHA+ALEF)
# إدغام النون الساكنة
, ( u"".join([NOON, SUKUN, NOON]), NOON+SHADDA)
# إذا كان الحرف الأول ساكنا وبعده شدة، ثم أضيفت إليه الألف
, ( u"".join([SUKUN, SHADDA]), SHADDA)
## معالجة ألف التفريق
, ( ALEF_WASLA, ALEF)
## معالجة ألف التفريق
, ( ALEF_MAMDUDA, ALEF)
@staticmethod
def get_in_stem_variants(stem, enclitic):
""" return modified forms of input stem"""
list_stem = []
if enclitic:
if stem.endswith(ar.TEH + ar.MEEM + ar.WAW):
list_stem.append(stem[:-1])
elif stem.endswith(ar.WAW):
list_stem.append(stem + ar.ALEF)
elif stem.endswith(ar.ALEF):
list_stem.append(stem[:-1] + ar.ALEF_MAKSURA)
if stem.startswith(ar.ALEF_MADDA):
# االبداية بألف مد
list_stem.append(ar.ALEF_HAMZA_ABOVE + \
ar.ALEF_HAMZA_ABOVE + stem[1:])
list_stem.append(ar.HAMZA + ar.ALEF + stem[1:])
return list_stem
@staticmethod
_K = KASRA
_S = SUKUN
_A = ALEF_HARAKA
_W = WAW_HARAKA
_Y = YEH_HARAKA
_AH = ALEF_HARAKA
_YH = YEH_HARAKA
_WH = WAW_HARAKA
_AYH = ALEF_YEH_HARAKA
_AWH = ALEF_WAW_HARAKA
_YHALT = ALTERNATIVE_YEH_HARAKA
#HAMZAT
_AHA = ALEF_HAMZA_ABOVE
_AHB = ALEF_HAMZA_BELOW
_AM = ALEF_MADDA
_YHA = YEH_HAMZA
_WHA = WAW_HAMZA
_HZ = HAMZA
INITIAL_TAHMEEZ_TABLE = {_S:_HZ, _F:_AHA, _D:_AHA, _K:_AHB, _AH:_AM ,
_WH:_AHA, _YH:_AHB, _YHALT:_AHB}
MIDDLE_TAHMEEZ_TABLE = {
_S: {_S:_HZ, _F:_AHA, _D:_WHA, _K:_YHA, _AH:_AHA, _WH:_WHA, _YH:_YHA },
_F: {_S:_AHA, _F:_AHA, _D:_WHA, _K:_YHA, _AH:_AHA, _WH:_WHA, _YH:_YHA },
_D: {_S:_WHA, _F:_WHA, _D:_WHA, _K:_YHA, _AH:_WHA, _WH:_WHA, _YH:_YHA },
_K: {_S:_YHA, _F:_YHA, _D:_YHA, _K:_YHA, _AH:_YHA, _WH:_YHA, _YH:_YHA },
_AH: {_S:_HZ, _F:_HZ, _D:_WHA, _K:_YHA, _AH:_HZ, _WH:_WHA, _YH:_YHA },
_WH: {_S:_HZ, _F:_HZ, _D:_WHA, _K:_YHA, _AH:_HZ, _WH:_WHA, _YH:_YHA },
_K = KASRA
_S = SUKUN
_A = ALEF_HARAKA
_W = WAW_HARAKA
_Y = YEH_HARAKA
_AH = ALEF_HARAKA
_YH = YEH_HARAKA
_WH = WAW_HARAKA
_AYH = ALEF_YEH_HARAKA
_AWH = ALEF_WAW_HARAKA
_YHALT = ALTERNATIVE_YEH_HARAKA
#HAMZAT
_AHA = ALEF_HAMZA_ABOVE
_AHB = ALEF_HAMZA_BELOW
_AM = ALEF_MADDA
_YHA = YEH_HAMZA
_WHA = WAW_HAMZA
_HZ = HAMZA
INITIAL_TAHMEEZ_TABLE = {_S:_HZ, _F:_AHA, _D:_AHA, _K:_AHB, _AH:_AM ,
_WH:_AHA, _YH:_AHB, _YHALT:_AHB}
MIDDLE_TAHMEEZ_TABLE = {
_S: {_S:_HZ, _F:_AHA, _D:_WHA, _K:_YHA, _AH:_AHA, _WH:_WHA, _YH:_YHA },
_F: {_S:_AHA, _F:_AHA, _D:_WHA, _K:_YHA, _AH:_AHA, _WH:_WHA, _YH:_YHA },
_D: {_S:_WHA, _F:_WHA, _D:_WHA, _K:_YHA, _AH:_WHA, _WH:_WHA, _YH:_YHA },
_K: {_S:_YHA, _F:_YHA, _D:_YHA, _K:_YHA, _AH:_YHA, _WH:_YHA, _YH:_YHA },
_AH: {_S:_HZ, _F:_HZ, _D:_WHA, _K:_YHA, _AH:_HZ, _WH:_WHA, _YH:_YHA },
_WH: {_S:_HZ, _F:_HZ, _D:_WHA, _K:_YHA, _AH:_HZ, _WH:_WHA, _YH:_YHA },