forked from cltl/KafNafParserPy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
dependency_data.py
157 lines (130 loc) · 3.88 KB
/
dependency_data.py
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
"""
Parser for the dependency layer in KAF/NAF
"""
from lxml import etree
#from lxml.objectify import dump
class Cdependency:
"""
This class encapsulates a dependency object in KAF/NAF
"""
def __init__(self,node=None):
"""
Constructor of the object
@type node: xml Element or None (to create and empty one)
@param node: this is the node of the element. If it is None it will create a new object
"""
if node is None:
self.node = etree.Element('dep')
else:
self.node = node
def get_node_comment(self):
"""
Returns the lxml element for the comment
@rtype: lxml Element
@return: the lxml element for the comment
"""
return self.node_comment
def get_node(self):
"""
Returns the node of the element
@rtype: xml Element
@return: the node of the element
"""
return self.node
def get_from(self):
"""
Returns the from attribute of the dependency
@rtype: string
@return: the from attribute
"""
return self.node.get('from')
def get_to(self):
"""
Returns the to attribute of the dependency
@rtype: string
@return: the to attribute
"""
return self.node.get('to')
def get_function(self):
"""
Returns the function attribute of the dependency
@rtype: string
@return: the function attribute
"""
return self.node.get('rfunc')
def set_from(self, f):
"""
Sets the from attribute
@type f: string
@param f: the from attribute
"""
self.node.set('from',f)
def set_to(self,t):
"""
Sets the to attribute
@type t: string
@param t: the to attribute
"""
self.node.set('to',t)
def set_function(self,f):
"""
Sets the function attribute
@type f: string
@param f: the function attribute
"""
self.node.set('rfunc',f)
def set_comment(self,c):
"""
Sets the XML comment for the dependency
@type c: string
@param c: the string comment
"""
c = c.replace('--','- -')
self.node.insert(0,etree.Comment(c) )
def __str__(self):
return dump(self.node)
class Cdependencies:
"""
This class encapsulates the dependency layer in KAF/NAF
"""
def __init__(self,node=None):
"""
Constructor of the object
@type node: xml Element or None (to create and empty one)
@param node: this is the node of the element. If it is None it will create a new object
"""
if node is None:
self.node = etree.Element('deps')
else:
self.node = node
def get_node(self):
"""
Returns the node of the element
@rtype: xml Element
@return: the node of the element
"""
return self.node
def to_kaf(self):
pass
def to_naf(self):
pass
def __str__(self):
return dump(self.node)
def __get_node_deps(self):
for node_dep in self.node.findall('dep'):
yield node_dep
def get_dependencies(self):
"""
Iterator that returns all the dependencies in the layer
@rtype: L{Cdependency}
@return: list of dependencies (iterator)
"""
for node in self.__get_node_deps():
yield Cdependency(node)
def add_dependency(self,my_dep):
"""
Adds a dependency object to the layer
@type my_dep: L{Cdependency}
@param my_dep: the dependency object to be added
"""
self.node.append(my_dep.get_node())