qutuf / SourceCode /Controllers /Transducers /TransitionAction.py
Boulbaba's picture
Upload 210 files
21baa2f verified
'''
Created on ٢٣‏/٠٣‏/٢٠١٠
@Created by: Muhammad Altabba
'''
import re;
class TransitionAction(object):
"""
# PyUML: Do not remove this line! # XMI_ID:_qzIINI35Ed-gg8GOK1TmhA
"""
'''
State Action
'''
Type = '';
AttributeName = '';
Value = '';
OnRelativeIndex = 0;
def __init__(self, attributeName, type, value, onRelativeIndex):
'''
Constructor
'''
self.AttributeName = attributeName;
self.Type = type;
self.Value = value;
self.OnRelativeIndex = onRelativeIndex;
pass
def ApplyToWord(self, sentence, wordIndex):
# print('-- apply...');
word = sentence.Words[wordIndex + self.OnRelativeIndex];
if self.Type == 'str':
setattr(word, self.AttributeName, self.Value);
elif self.Type == 'set.append':
# print('-- apply:')
eval('word.'+self.AttributeName).append(eval(self.Value));
# word.__getattribute__(self.AttributeName).append(eval(self.Value));
elif self.Type == 'dict':
# #Test Needed -------------------------------------------------------------
#value has the shape: {key1: value1, key2: value2}
dictionary = eval(self.Value);
for key, value in dictionary.items():
word.__getattribute__(self.AttributeName)[key] = value;
elif self.Type == 'general':
setattr(word, self.AttributeName, eval(self.Value));
# #Test Needed -------------------------------------------------------------
pass
def ApplyToWordSurfaceFormMorphemes(self, sentence, wordIndex, surfaceFormMorphemesIndexes):
# print('-- apply ApplyToWordSurfaceFormMorphemes...');
word = sentence.Words[wordIndex + self.OnRelativeIndex];
if self.Type == 'method':
for i in range(len(surfaceFormMorphemesIndexes)):
eval('word.SurfaceFormMorphemes[surfaceFormMorphemesIndexes[i]].'+self.AttributeName+'('+self.Value+')');
pass