/[ambar]/ambar/utils.py
ViewVC logotype

Diff of /ambar/utils.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2.7 by TuringTest, Tue Aug 19 22:46:26 2003 UTC revision 2.8 by TuringTest, Fri Sep 5 21:26:01 2003 UTC
# Line 27  from random import randint Line 27  from random import randint
27  import sys  import sys
28  from time import ctime  from time import ctime
29  from xml.dom import minidom  from xml.dom import minidom
30    from string import strip
31    
32  # ---------------------------------------------------------------  # ---------------------------------------------------------------
33  # Clase para excepciones dentro de juego (por ejemplo, el usuario  # Clase para excepciones dentro de juego (por ejemplo, el usuario
# Line 37  from xml.dom import minidom Line 37  from xml.dom import minidom
37  class ExcepcionDeJuego(Exception):  class ExcepcionDeJuego(Exception):
38    
39      def __init__(self, mensaje=""):      def __init__(self, mensaje=""):
40          self.__mensaje = mensaje          self.__mensaje = mensaje
41    
42      def __str__(self):      def __str__(self):
43          return self.__mensaje          return self.__mensaje
44    
45    
46  # ---------------------------  # ---------------------------
# Line 119  def cerrar_log(): Line 119  def cerrar_log():
119  def extraer_contenido_xml(elem):  def extraer_contenido_xml(elem):
120      """Extrae todo el texto contenido dentro del elemento.      """Extrae todo el texto contenido dentro del elemento.
121         Parametros:         Parametros:
122             - elem(xml.dom.minidom.Node): una instancia de elemento XML             - elem(xml.dom.minidom.Node): una instancia de elemento XML
123         Requiere:         Requiere:
124             elem != None             elem != None
125         Asegura:         Asegura:
126             return != None             return != None
127      """      """
128      contenido = ""      contenido = ""
129      for sub_elem in elem.childNodes:      for sub_elem in elem.childNodes:
130          if sub_elem.nodeType == minidom.Node.TEXT_NODE:          if sub_elem.nodeType == minidom.Node.TEXT_NODE:
131              contenido = contenido + sub_elem.data.encode('ISO-8859-1')              contenido = contenido + sub_elem.data.encode('ISO-8859-1')
132      return contenido      return contenido
133    
134    
# Line 136  def extraer_atributo_xml(elem, nombre_at Line 136  def extraer_atributo_xml(elem, nombre_at
136      """Extrae el valor de un atributo del elemento.      """Extrae el valor de un atributo del elemento.
137         Si el elemento no contiene el atributo, produce una excepcion KeyError.         Si el elemento no contiene el atributo, produce una excepcion KeyError.
138         Parametros:         Parametros:
139             - elem(xml.dom.minidom.Node): una instancia de elemento XML             - elem(xml.dom.minidom.Node): una instancia de elemento XML
140             - nombre_atributo(string): el nombre del atributo a extraer             - nombre_atributo(string): el nombre del atributo a extraer
141         Requiere:         Requiere:
142             elem != None             elem != None
143             nombre_atributo != None             nombre_atributo != None
144         Asegura:         Asegura:
145             return != None             return != None
146      """      """
147      return elem.attributes[nombre_atributo].value.encode('ISO-8859-1')      return elem.attributes[nombre_atributo].value.encode('ISO-8859-1')
148    
149  def extraer_nombre_xml(elem):  def extraer_nombre_xml(elem):
150      """Extrae el nombre del tag de un elemento.      """Extrae el nombre del tag de un elemento.
151         Parametros:         Parametros:
152             - elem(xml.dom.minidom.Node): una instancia de elemento XML                 - elem(xml.dom.minidom.Node): una instancia de elemento XML    
153         Requiere:         Requiere:
154             elem != None             elem != None
155         Asegura:         Asegura:
156             return != None             return != None
157      """      """
158      return elem.nodeName.encode('ISO-8859-1')      return elem.nodeName.encode('ISO-8859-1')
159    
160  def limpiar_nodos_text_xml(elem):  def limpiar_nodos_text_xml(elem):
161      """Elimina los nodos con nombre Text de un elemento      """Elimina los nodos con nombre Text de un elemento
162         Parametros:         Parametros:
163             - elem(xml.dom.minidom.Node): una instancia de elemento XML                 - elem(xml.dom.minidom.Node): una instancia de elemento XML    
164         Requiere:         Requiere:
165             elem != None             elem != None
166      """      """
167      for nodo in elem.childNodes[:]:      for nodo in elem.childNodes[:]:
168          if not 'Element:' in str(nodo).split():          if not 'Element:' in str(nodo).split():
169              elem.childNodes.remove(nodo)              elem.childNodes.remove(nodo)
170    
171    def listatributo(atributo):
172        """Convierte en lista un atributo de tipo string con esta forma: <item1, item2, ...> """
173        listablancos = atributo.split(',')
174        lista = map(strip, listablancos)
175        return lista
176        
177  # ---------------  # ---------------
178  # Miscelánea pura  # Miscelánea pura
179  # ---------------  # ---------------
# Line 184  def extraer_id(string): Line 190  def extraer_id(string):
190      if len(string) == 0:      if len(string) == 0:
191          return ""          return ""
192      else:      else:
193          ind_abrir = string.find("[")          ind_abrir = string.find("[")
194          ind_cerrar = string.find("]")          ind_cerrar = string.find("]")
195          if ind_abrir != -1 and ind_cerrar != -1:          if ind_abrir != -1 and ind_cerrar != -1:
196              return normalizar_id(string[ind_abrir+1 : ind_cerrar])              return normalizar_id(string[ind_abrir+1 : ind_cerrar])
197          else:          else:
198              for palabra in string.split():              for palabra in string.split():
199                  if not palabra.lower() in ["el", "la", "los", "las", "un", "uno", "una",                  if not palabra.lower() in ["el", "la", "los", "las", "un", "uno", "una",
200                                             "unos", "unas", "que", "El", "La", "Los", "Las",                                             "unos", "unas", "que", "El", "La", "Los", "Las",
201                                             "Un", "Uno", "Una", "Unos", "Unas", "Que"]:                                             "Un", "Uno", "Una", "Unos", "Unas", "Que"]:
202                      return normalizar_id(palabra)                      return normalizar_id(palabra)
203              return "no tiene id"              return "no tiene id"
204    
205    
206  def normalizar_id(id):  def normalizar_id(id):
# Line 220  def escribir_excepcion(): Line 226  def escribir_excepcion():
226    
227          texto = "  Fichero " + \          texto = "  Fichero " + \
228                  code.co_filename + \                  code.co_filename + \
229                  ", línea " + str(lineno) + \                  ", línea " + str(lineno) + \
230                  " en " + code.co_name                  " en " + code.co_name
231          if code.co_name != "?":          if code.co_name != "?":
232  #           args = code.co_varnames[0:code.co_argcount]  #           args = code.co_varnames[0:code.co_argcount]
233  #           texto += ("(" + " ".join(args) + ")")  #           texto += ("(" + " ".join(args) + ")")
234              texto += "()"              texto += "()"
235    
236          escribir(texto)          escribir(texto)
237    
238          traceback = traceback.tb_next          traceback = traceback.tb_next
239    
240      escribir("Excepción " + \      escribir("Excepción " + \
241               str(sys.exc_info()[0]) + \               str(sys.exc_info()[0]) + \
242               ": " + \               ": " + \
243               str(sys.exc_info()[1]))               str(sys.exc_info()[1]))
244    
245  def trazar(mensaje_depuracion, nombre_modulo, nivel_depuracion=1):  def trazar(mensaje_depuracion, nombre_modulo=None, nivel_depuracion=1):
246      """Escribe un mensaje de traza (si el servidor se activa en modo depuracion)      """Escribe un mensaje de traza (si el servidor se activa en modo depuracion)
247            
248      Para activar el servidor en modo depuracion, usar      Para activar el servidor en modo depuracion, usar
249      ./mine.py -d <nivel de depuracion>  -m {<nombre de modulo a trazar>}*      ./mine.py -d <nivel de depuracion>  -m {<nombre de modulo a trazar>}*
250      """      """
251      from mundo import Mundo      
252      if nivel_depuracion <= Mundo.nivel_depuracion: # muestra solo trazas hasta el nivel de depuracion activo      try:
253          if nombre_modulo in Mundo.modulos_depurados:          if not nombre_modulo:
254                  escribir("Traza " + nombre_modulo + ": " + mensaje_depuracion)              import inspect
255                #print "·",inspect.getmodule(mensaje_depuracion), "(",inspect.getmodule(mensaje_depuracion).name
256                nombre_modulo = inspect.getmodule(mensaje_depuracion).name
257            
258            from mundo import Mundo
259            if nivel_depuracion <= Mundo.nivel_depuracion: # muestra solo trazas hasta el nivel de depuracion activo
260                if nombre_modulo in Mundo.modulos_depurados:
261                        escribir("Traza " + nombre_modulo + ": " + mensaje_depuracion)
262        except:
263            pass
264    
265    
266    
# Line 254  def izip(*args): Line 269  def izip(*args):
269      un indice en la primera posición de las tuplas.      un indice en la primera posición de las tuplas.
270    
271      Ejemplo:      Ejemplo:
272          print izip(['a', 'b', 'c'])          print izip(['a', 'b', 'c'])
273          [(0, 'a'), (1, 'b'), (2, 'c')]          [(0, 'a'), (1, 'b'), (2, 'c')]
274    
275      Útil para buscar la posición de un objeto en una lista:      Útil para buscar la posición de un objeto en una lista:
276          for (i, obj) in izip(lista_de_objetos):          for (i, obj) in izip(lista_de_objetos):
277              if cumple_condicion(obj):              if cumple_condicion(obj):
278                  return i                  return i
279    
280      (c) Magnus Licka      (c) Magnus Licka
281      http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/163525      http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/163525
282      """      """
283      return zip(range(len(args[0])), *args)      return zip(range(len(args[0])), *args)
284    
285    if (__name__ == '__main__'):
286            print listatributo(" a, b, c ")
287            pass
288            

Legend:
Removed from v.2.7  
changed lines
  Added in v.2.8

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26