Exemple #1
0
def do_sarf(word,future_type,all=True,past=False,future=False,passive=False,imperative=False,future_moode=False,confirmed=False,transitive=False,display_format="HTML"):
	import libqutrub.mosaref_main as mosaref
	import libqutrub.ar_verb as ar_verb
	import libqutrub.classverb as verbclass
	import libqutrub.verb_const as verb_const
	import pyarabic.arabrepr as myrepr
	from libqutrub.verb_valid import is_valid_infinitive_verb
	valid = is_valid_infinitive_verb(word)
	listetenses=[];
	if valid:
		future_type= ar_verb.get_future_type_by_name(future_type);
		bab_sarf=0;
		vb = verbclass.VerbClass(word,transitive,future_type);
		#vb.verb_class();
		vb.set_display(display_format);
	#test the uniformate function
		if all :
			if transitive :
##    				print "transitive";
				listetenses= verb_const.TABLE_TENSE
				result= vb.conjugate_all_tenses();
			else:
##    				print "intransitive";
				listetenses = verb_const.TableIndicativeTense;
##    				print len(TableIndicativeTense)
				result= vb.conjugate_all_tenses(listetenses);
		else :
			listetenses=[];
			if past : listetenses.append(verb_const.TensePast);
			if (past and passive and transitive) : listetenses.append(verb_const.TensePassivePast)
			if future : listetenses.append(verb_const.TenseFuture);
			if (future and passive and transitive) : listetenses.append(verb_const.TensePassiveFuture)
			if (future_moode) :
				listetenses.append(verb_const.TenseSubjunctiveFuture)
				listetenses.append(verb_const.TenseJussiveFuture)
			if (confirmed) :
				if (future):listetenses.append(verb_const.TenseConfirmedFuture);
				if (imperative):listetenses.append(verb_const.TenseConfirmedImperative);
			if (future and passive and transitive and confirmed) :
				listetenses.append(verb_const.TensePassiveConfirmedFuture);
			if (passive and transitive and future_moode) :
				listetenses.append(verb_const.TensePassiveSubjunctiveFuture)
				listetenses.append(verb_const.TensePassiveJussiveFuture)
			if imperative : listetenses.append(verb_const.TenseImperative)
			result =vb.conjugate_all_tenses(listetenses);
    		#self.result["HTML"]=vb.conj_display.display("HTML",listetenses)
		#return result;
		#return vb.conj_display.display("HTML",listetenses)
		#return vb.conj_display.display("DICT",listetenses)
		mrepr = myrepr.ArabicRepr()
		return vb.conj_display.display("TABLE",listetenses)		
		return mrepr.repr(vb.conj_display.display("TABLE",listetenses))
		
		return mrepr.repr(result)
	else: return None;
Exemple #2
0
def do_sarf(word,future_type,all=True,past=False,future=False,passive=False,imperative=False,future_moode=False,confirmed=False,transitive=False,display_format="HTML"):
    import libqutrub.mosaref_main as mosaref
    import libqutrub.ar_verb as ar_verb
    import libqutrub.classverb as verbclass
    import libqutrub.verb_const as verb_const
    import pyarabic.arabrepr as myrepr
    from libqutrub.verb_valid import is_valid_infinitive_verb
    valid = is_valid_infinitive_verb(word)
    listetenses=[];
    if valid:
        future_type= ar_verb.get_future_type_by_name(future_type);
        bab_sarf=0;
        vb = verbclass.VerbClass(word,transitive,future_type);
        #vb.verb_class();
        vb.set_display(display_format);
    #test the uniformate function
        if all :
            if transitive :
##                  print "transitive";
                listetenses= verb_const.TABLE_TENSE
                result= vb.conjugate_all_tenses();
            else:
##                  print "intransitive";
                listetenses = verb_const.TableIndicativeTense;
##                  print len(TableIndicativeTense)
                result= vb.conjugate_all_tenses(listetenses);
        else :
            listetenses=[];
            if past : listetenses.append(verb_const.TensePast);
            if (past and passive and transitive) : listetenses.append(verb_const.TensePassivePast)
            if future : listetenses.append(verb_const.TenseFuture);
            if (future and passive and transitive) : listetenses.append(verb_const.TensePassiveFuture)
            if (future_moode) :
                listetenses.append(verb_const.TenseSubjunctiveFuture)
                listetenses.append(verb_const.TenseJussiveFuture)
            if (confirmed) :
                if (future):listetenses.append(verb_const.TenseConfirmedFuture);
                if (imperative):listetenses.append(verb_const.TenseConfirmedImperative);
            if (future and passive and transitive and confirmed) :
                listetenses.append(verb_const.TensePassiveConfirmedFuture);
            if (passive and transitive and future_moode) :
                listetenses.append(verb_const.TensePassiveSubjunctiveFuture)
                listetenses.append(verb_const.TensePassiveJussiveFuture)
            if imperative : listetenses.append(verb_const.TenseImperative)
            result =vb.conjugate_all_tenses(listetenses);
            #self.result["HTML"]=vb.conj_display.display("HTML",listetenses)
        #return result;

        return vb.conj_display.display("TABLE",listetenses)
    else:
        

    else: return None;
Exemple #3
0
def get_future_form(verb_vocalised, haraka = araby.FATHA):
    """
    Get The future form of a verb. for example the future form of
     qal with Damma as a Haraka of future verb, we get yqolu.
    الحصول على صيغة الفعل في المضارع، فالفعل قال، وحركة عينه في المضارع صمة، نحصل على يقول.
    @param verb_vocalised: given verb.
    @type verb_vocalised:unicode.
    @param haraka: the future mark for triverbs.
    @type haraka: unicode.
    @return: The conjugated form in the future tense.
    @rtype: unicode.
    """
    word = verb_vocalised
    transitive = True
    future_type = haraka
    if future_type not in (araby.FATHA, araby.DAMMA, araby.KASRA):
        future_type = ar_verb.get_future_type_by_name(future_type)
    vbc = classverb.VerbClass(word, transitive, future_type)
    #vb.verb_class()
    return vbc.conjugate_tense_pronoun(vconst.TenseFuture, vconst.PronounHuwa)
Exemple #4
0
def get_future_form(verb_vocalised, haraka=araby.FATHA):
    """
    Get The future form of a verb. for example the future form of
     qal with Damma as a Haraka of future verb, we get yqolu.
    الحصول على صيغة الفعل في المضارع، فالفعل قال، وحركة عينه في المضارع صمة، نحصل على يقول.
    @param verb_vocalised: given verb.
    @type verb_vocalised:unicode.
    @param haraka: the future mark for triverbs.
    @type haraka: unicode.
    @return: The conjugated form in the future tense.
    @rtype: unicode.
    """
    word = verb_vocalised
    transitive = True
    future_type = haraka
    if future_type not in (araby.FATHA, araby.DAMMA, araby.KASRA):
        future_type = ar_verb.get_future_type_by_name(future_type)
    vbc = classverb.VerbClass(word, transitive, future_type)
    #vb.verb_class()
    return vbc.conjugate_tense_pronoun(vconst.TenseFuture, vconst.PronounHuwa)
Exemple #5
0
def do_sarf(word, future_type, alltense = True, past = False, future = False, 
passive = False, imperative = False, future_moode = False, confirmed = False,
 transitive = False, display_format = "HTML"):
    """
    The main function to conjugate verbs.
    You must specify all parameters.
    Can be used as an example to call the conjugation class.
    @param word: the givern verb. the given word must be vocalized, 
    if it's 3 letters length only, else, the verb can be unvocalized, 
     but the Shadda must be given, it' considered as letter.
    @type word: unicode.
    @param future_type: For Triliteral verbs, 
    you must give the mark of Ain in the future, 
    كة عين الفعل في المضارع. it's given as a name of haraka (فتحة، ضمة، كسرة).
    @type future_type: unicode(فتحة، ضمة، كسرة).
    @param all: conjugate in all arabic tenses.
    @type all: Boolean, default(True)
    @param past: conjugate in past tense ألماضي
    @type past: Boolean, default(False)
    @param future: conjugate in arabic present and future tenses المضارع
    @type future: Boolean, default(False)
    @param passive: conjugate in passive voice  المبني للمجهول
    @type passive: Boolean, default(False)
    @param imperative: conjugate in imperative tense الأمر
    @type imperative: Boolean, default(False)
    @param future_moode: conjugate in future moode tenses المضارع المنصوب والمجزوم
    @type future_moode: Boolean, default(False)
    @param confirmed: conjugate in confirmed cases tense المؤكّد
    @type confirmed: Boolean, default(False)
    @param transitive: the verb transitivity التعدي واللزوم
    @type transitive: Boolean, default(False)
    @param display_format: Choose the display format:
        - 'Text':
        - 'HTML':
        - 'HTMLColoredDiacritics':
        - 'DICT':
        - 'CSV':
        - 'GUI':
        - 'TABLE':
        - 'XML':
        - 'TeX':
        - 'ROWS':
    @type display_format: string, default("HTML") 
    @return: The conjugation result
    @rtype: According to display_format.
    """
    valid = verb_valid.is_valid_infinitive_verb(word)
    if valid:
        future_type = ar_verb.get_future_type_by_name(future_type)
        #~ bab_sarf = 0
        #init the verb class to treat the verb
        vbc = classverb.VerbClass(word, transitive, future_type)
        vbc.set_display(display_format)

        if alltense :
            result =  vbc.conjugate_all_tenses()
        else :
            listetenses = []
            if past :
                listetenses.append(vconst.TensePast)
            if (past and passive ) :
                listetenses.append(vconst.TensePassivePast)
            if future : 
                listetenses.append(vconst.TenseFuture)
            if (future and passive ) :
                listetenses.append(vconst.TensePassiveFuture)
            if (future_moode) :
                listetenses.append(vconst.TenseSubjunctiveFuture)
                listetenses.append(vconst.TenseJussiveFuture)
            if (confirmed) :
                if (future):
                    listetenses.append(vconst.TenseConfirmedFuture)
                if (imperative):
                    listetenses.append(vconst.TenseConfirmedImperative)
            if (future and transitive and confirmed) :
                listetenses.append(vconst.TensePassiveConfirmedFuture)
            if (passive and future_moode) :
                listetenses.append(vconst.TensePassiveSubjunctiveFuture)
                listetenses.append(vconst.TensePassiveJussiveFuture)
            if imperative :
                listetenses.append(vconst.TenseImperative)
            result  = vbc.conjugate_all_tenses(listetenses)
        return result
    else: return None
Exemple #6
0
def do_sarf(word,
            future_type,
            alltense=True,
            past=False,
            future=False,
            passive=False,
            imperative=False,
            future_moode=False,
            confirmed=False,
            transitive=False,
            display_format="HTML"):
    """
    The main function to conjugate verbs.
    You must specify all parameters.
    Can be used as an example to call the conjugation class.
    @param word: the givern verb. the given word must be vocalized, 
    if it's 3 letters length only, else, the verb can be unvocalized, 
     but the Shadda must be given, it' considered as letter.
    @type word: unicode.
    @param future_type: For Triliteral verbs, 
    you must give the mark of Ain in the future, 
    كة عين الفعل في المضارع. it's given as a name of haraka (فتحة، ضمة، كسرة).
    @type future_type: unicode(فتحة، ضمة، كسرة).
    @param all: conjugate in all arabic tenses.
    @type all: Boolean, default(True)
    @param past: conjugate in past tense ألماضي
    @type past: Boolean, default(False)
    @param future: conjugate in arabic present and future tenses المضارع
    @type future: Boolean, default(False)
    @param passive: conjugate in passive voice  المبني للمجهول
    @type passive: Boolean, default(False)
    @param imperative: conjugate in imperative tense الأمر
    @type imperative: Boolean, default(False)
    @param future_moode: conjugate in future moode tenses المضارع المنصوب والمجزوم
    @type future_moode: Boolean, default(False)
    @param confirmed: conjugate in confirmed cases tense المؤكّد
    @type confirmed: Boolean, default(False)
    @param transitive: the verb transitivity التعدي واللزوم
    @type transitive: Boolean, default(False)
    @param display_format: Choose the display format:
        - 'Text':
        - 'HTML':
        - 'HTMLColoredDiacritics':
        - 'DICT':
        - 'CSV':
        - 'GUI':
        - 'TABLE':
        - 'XML':
        - 'TeX':
        - 'ROWS':
    @type display_format: string, default("HTML") 
    @return: The conjugation result
    @rtype: According to display_format.
    """
    valid = verb_valid.is_valid_infinitive_verb(word)
    if valid:
        future_type = ar_verb.get_future_type_by_name(future_type)
        #~ bab_sarf = 0
        #init the verb class to treat the verb
        vbc = classverb.VerbClass(word, transitive, future_type)
        vbc.set_display(display_format)

        if alltense:
            result = vbc.conjugate_all_tenses()
        else:
            listetenses = []
            if past:
                listetenses.append(vconst.TensePast)
            if (past and passive):
                listetenses.append(vconst.TensePassivePast)
            if future:
                listetenses.append(vconst.TenseFuture)
            if (future and passive):
                listetenses.append(vconst.TensePassiveFuture)
            if (future_moode):
                listetenses.append(vconst.TenseSubjunctiveFuture)
                listetenses.append(vconst.TenseJussiveFuture)
            if (confirmed):
                if (future):
                    listetenses.append(vconst.TenseConfirmedFuture)
                if (imperative):
                    listetenses.append(vconst.TenseConfirmedImperative)
            if (future and transitive and confirmed):
                listetenses.append(vconst.TensePassiveConfirmedFuture)
            if (passive and future_moode):
                listetenses.append(vconst.TensePassiveSubjunctiveFuture)
                listetenses.append(vconst.TensePassiveJussiveFuture)
            if imperative:
                listetenses.append(vconst.TenseImperative)
            result = vbc.conjugate_all_tenses(listetenses)
        return result
    else:
        return None
Exemple #7
0
    def __init__(self, verb, transitive, future_type=FATHA):
        """ 
        init method
        @param verb: the given verb
        @type verb: unicode.
        @param transitive: the verb is transitive or not
        @type transitive: Boolean.        
        @param future_type: The mark of the third radical letter in the verb, 
        used for triletiral verb only. Default value is Fatha; 
        @type future_type: unicode; one arabic letter (Fatha, Damma, Kasra).        
        """    
        self.verb = verb
        # this cache is used to avoid duplicated operatioon in standardisation,
        # treat_sukun, and uniformate suffix
        self.cache_standard = cache_standard
        self.internal_verb = ar_verb.normalize(verb)
        self.future_type = ar_verb.get_future_type_by_name(future_type)
        (self.word_letters, self.word_marks) = ar_verb.uniformate_verb(verb)
        #Before last haraka in the past
        self.past_haraka = araby.secondlast_char(self.word_marks)
        self.word_marks = ar_verb.uniformate_alef_origin(self.word_marks, 
        self.internal_verb, self.future_type)

        self.transitive = transitive
        self.hamza_zaida = False
        self.tab_conjug_stem = {}
        verb = self.verb
        tab_type = [u"", u"", u"", u"فعل ثلاثي", u"فعل رباعي", u"فعل خماسي", 
        u"فعل سداسي", u"فعل سباعي", u"فعل ثماني", u"فعل تساعي"]
        verb = ar_verb.normalize(verb)

        self.unvocalized = araby.strip_harakat(verb)
        verb_nm = self.unvocalized
        self.vlength = len(verb_nm)
        self.vtype = tab_type[self.vlength]

        # الهمزة زائدة
        self.hamza_zaida = self._is_hamza_zaida(verb_nm)

        # التاء الزائدة
        #deprecated
        #self.teh_zaida=self.is_teh_zaida(verb_nm)

        # معالجة حالة الأفعال الشاذة
        # إذا كان الفعل من الشواذ، استخرجنا جذوع التصريف من جدوله
        #وإلا ولّدنا جذوع تصريفه
        # في المضارع والأمر فقط
        # أما الماضي فليس فيه شذوذ
        self.past_stem = ""
        self._prepare_past_stem()
        self._prepare_passive_past_stem()
        if self._is_irregular_verb():
            self._prepare_irregular_future_imperative_stem()

        else:
            self._prepare_future_imperative_stem()


        # display object
        self.conj_display = conjugatedisplay.ConjugateDisplay(self.verb)
        if self.transitive  :
            self.conj_display.add_attribut(u"اللزوم/التعدي", u"متعدي")
        else :
            self.conj_display.add_attribut(u"اللزوم/التعدي", u"لازم")
        self.conj_display.add_attribut(u"الفعل", self.verb)
        self.conj_display.add_attribut(u"نوع الفعل", self.vtype)
        self.future_form = self.conjugate_tense_pronoun(vconst.TenseFuture, 
        vconst.PronounHuwa)
        self.conj_display.set_future_form(self.future_form)
        if self.transitive :
            self.conj_display.settransitive()
        self.conj_display.setbab(self.future_type)