File size: 3,691 Bytes
21baa2f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106

'''
Created on ٢٩‏/٠٥‏/٢٠١٠

@Created by: Muhammad Altabba
'''
from ....Models.Tagging.POSTags.ParticlePOS import *;
from ....Controllers.Morphology.Entities.Particle import *;


class StandAloneParticle(object):
    """
     # PyUML: Do not remove this line! # XMI_ID:_hULWSI34Ed-gg8GOK1TmhA
    """
    '''
    Particle
    '''
    
    
    VoweledForm = '';
        
    
    UnvoweledForm = '';
    
    
    PrefixeClasses = ''; 
       
    
    SuffixeClasses = '';
    
    POS = ParticlePOS();

    def __init__(self):
        '''
        Constructor
        '''
        
        self.POS = ParticlePOS();
        self.POS.MainClass = POSConstants.MainClass.Particle;
        self.VoweledForm = '';
        self.UnvoweledForm = '';
        self.PrefixeClasses = '';
        self.SuffixeClasses = '';
    pass
        
    def AssignFromAlKalilDB(self, unvoweledForm, voweledForm, prefixeClasses, suffixeClasses, type):
    #سابقاً كان يتم تعبئته من الملف
    #toolwords.xml
    #ولاحقاً أصبح من
    #standaloneparticles.xml
        
        self.VoweledForm = voweledForm;
        self.UnvoweledForm = unvoweledForm;
        self.PrefixeClasses = prefixeClasses;
        self.SuffixeClasses = suffixeClasses;
        
        if(type == 'حرف جر'):
            self.POS.SubClass = ParticlePOSConstants.SubClass.Preposition;  
        elif(type == 'حرف جزم'):
            self.POS.SubClass = ParticlePOSConstants.SubClass.Apocopative;  
        elif(type == 'حرف نصب'):
            self.POS.SubClass = ParticlePOSConstants.SubClass.Accusative;
        elif(type == 'حرف ناسخ'):
            self.POS.SubClass = ParticlePOSConstants.SubClass.Annuler;
        elif(type == 'حرف عطف'):
            self.POS.SubClass = ParticlePOSConstants.SubClass.Conjunction;
        elif(type == 'حرف نداء'):
            self.POS.SubClass = ParticlePOSConstants.SubClass.Vocative;
        elif(type == 'حرف استثناء'):
            self.POS.SubClass = ParticlePOSConstants.SubClass.Exceptive;
        elif(type == 'حرف استفهام'):
            self.POS.SubClass = ParticlePOSConstants.SubClass.Interrogative;
        elif(type == 'حرف استقبال'):
            self.POS.SubClass = ParticlePOSConstants.SubClass.Futurity;
        elif(type == 'حرف شرط'):
            self.POS.SubClass = ParticlePOSConstants.SubClass.Conditional;
        elif(type == 'حرف تحقيق'):
            self.POS.SubClass = ParticlePOSConstants.SubClass.RealizationORAlmost; 
        elif(type == 'حرف نصب فرعي'):
            self.POS.SubClass = ParticlePOSConstants.SubClass.PartialAccusative;            
        elif(type == 'حرف تعليل'):
            self.POS.SubClass = ParticlePOSConstants.SubClass.Causative;            
        elif(type == 'حرف نفي'):
            self.POS.SubClass = ParticlePOSConstants.SubClass.Negative;
        elif(type == 'حرف قسم'):
            self.POS.SubClass = ParticlePOSConstants.SubClass.Jurative;
        
#        elif(type == 'حرف استئناف'):
#            #غير موجودة في الخليل وضعتها من أجل المستقبل
#            self.POS.SubClass = ParticlePOSConstants.SubClass.Resumption;
#            
        else:
            raise Exception('This type [' + type + '] is not known for a Particle!');
        
    pass
                        
      
    def ReturnAsParticle(self):
        
        pos = self.POS.Clone();
        particle = Particle(self.UnvoweledForm, self.VoweledForm, ParticleConstants.State.StandAlone, pos);
                
        return particle;
    pass