109 |
|
|
110 |
# Constructor |
# Constructor |
111 |
|
|
112 |
def __init__(self, elem_guion, macros, macros_extra = {}): |
def __init__(self, elem_guion, macros_tipos, macros_extra = {}): |
113 |
"""Parsea un nodo conteniendo una lista de elementos <accion>, <requisito> o <guion>. |
"""Parsea un nodo conteniendo una lista de elementos <accion>, <requisito> o <guion>. |
114 |
|
|
115 |
macros ((string, string)[]) es una lista con los nombres y tipos de las |
macros_tipos ((string, string)[]) es una lista con los nombres y tipos de las |
116 |
macros permitidos en el contexto de este guion. |
macros permitidos en el contexto de este guion. |
117 |
|
|
118 |
macros_extra (string:any) es un diccionario de macros que serán pasados |
macros_extra (string:any) es un diccionario de macros que serán pasados |
120 |
|
|
121 |
Requiere: |
Requiere: |
122 |
elem_guion != None |
elem_guion != None |
123 |
macros != None |
macros_tipos != None |
124 |
|
macros_extra != None |
125 |
""" |
""" |
126 |
|
|
127 |
# Atributos privados: |
# Atributos privados: |
167 |
|
|
168 |
for elem in elem_guion.childNodes: |
for elem in elem_guion.childNodes: |
169 |
if extraer_nombre_xml(elem) == "accion": |
if extraer_nombre_xml(elem) == "accion": |
170 |
acc = Accion.nueva_xml(elem, macros) |
self.__secuencia.append(Accion.nueva_xml(elem, macros_tipos)) |
|
self.__secuencia.append(Accion.nueva_xml(elem, macros)) |
|
171 |
elif extraer_nombre_xml(elem) == "requisito": |
elif extraer_nombre_xml(elem) == "requisito": |
172 |
self.__secuencia.append(Requisito.nuevo_xml(elem, macros)) |
self.__secuencia.append(Requisito.nuevo_xml(elem, macros_tipos)) |
173 |
elif extraer_nombre_xml(elem) == "guion": |
elif extraer_nombre_xml(elem) == "guion": |
174 |
self.__parsear_fichero(elem, macros, macros_extra) |
self.__parsear_fichero(elem, macros_tipos, macros_extra) |
175 |
|
|
176 |
|
|
177 |
# Métodos privados |
# Métodos privados |
178 |
|
|
179 |
def __parsear_fichero(self, elem_guion, macros, macros_extra): |
def __parsear_fichero(self, elem_guion, macros_tipos, macros_extra): |
180 |
id = extraer_atributo_xml(elem_guion, 'id') |
id = extraer_atributo_xml(elem_guion, 'id') |
181 |
|
|
182 |
for i in range(0, elem_guion.attributes.length): |
for i in range(0, elem_guion.attributes.length): |
190 |
|
|
191 |
elem_desc_guion = arbol_xml.documentElement |
elem_desc_guion = arbol_xml.documentElement |
192 |
|
|
193 |
self.__secuencia.append(Guion(elem_desc_guion, macros, macros_extra)) |
self.__secuencia.append(Guion(elem_desc_guion, macros_tipos, macros_extra)) |
194 |
# Observar que un guion puede contener recursivamente otros guiones |
# Observar que un guion puede contener recursivamente otros guiones |
195 |
|
|
196 |
|
|
197 |
# Métodos normales |
# Métodos normales |
198 |
|
|
199 |
def ejecutar(self, macros): |
def ejecutar(self, macros_valores): |
200 |
"""Ejecuta el guion en cuestion. |
"""Ejecuta el guion en cuestion. |
201 |
|
|
202 |
macros({String:any}) es un diccionario de los nombres de las macros a su valor |
macros_valores({String:any}) es un diccionario de los nombres de las macros a su valor |
203 |
final. |
final. |
204 |
|
|
205 |
Devuelve el resultado final de "aceptar" (1) o "cancelar" (0), o bien None |
Devuelve el resultado final de "aceptar" (1) o "cancelar" (0), o bien None |
206 |
si no se ha especificado (la serie no contiene ninguna de las dos acciones). |
si no se ha especificado (la serie no contiene ninguna de las dos acciones). |
207 |
|
|
208 |
Requiere: |
Requiere: |
209 |
macros != None |
macros_valores != None |
210 |
""" |
""" |
211 |
trazar("ejecutando guion clasico %s" % self.__id, "pnj", 2) |
trazar("ejecutando guion clasico %s" % self.__id, "pnj", 2) |
212 |
resultado = None |
resultado = None |
213 |
|
|
214 |
macros_total = macros |
macros_total = macros_valores |
215 |
macros_total.update(self.__macros_extra) |
macros_total.update(self.__macros_extra) |
216 |
|
|
217 |
for instancia in self.__secuencia: |
for instancia in self.__secuencia: |