Alters

Aventuras de DoHITB: DoHITB vs. JavaScript (I)

Buenas!

Haremos una breve pausa antes de seguir con el temario de Remote Tools, en la que os explicaré mi extraño y paranoico periplo con uno de los lenguajes (en mi opinión) más infames de los "mares de la programación":
 JavaScript.


"Yo domino JavaScript" creo que es la frase (hablando de programación) que más te puedes encontrar. ¿Y qué pasa? resulta que tienes un problema insignificante, vas a un foro, y el 90% de las respuestas se basan en la siguiente fórmula:

"Usa jQuery y..."

Lo siento. No llego a leer más... si dominas JavaScript no deberías tener que recurrir a jQuery (framework de JavaScript) más que para temas tales como animación, "drag & drop", etc.

No me vale eso de "para saber qué elemento hay seleccionado en un combobox, usa jQuery".

Y en fin, sin más conocimiento que el que tengo en JavaScript tenía que hacer un cometido bastante particular: un "parser" de XML, con posterior ordenado y eliminado de elementos duplicados.

Por partes:
  • Parser: se suele usar (o lo suelo usar) como anglicismo de la palabra tratar, analizar o convertir. Es decir, "parsear" es "tratar", por lo que "parser" sería "tratador". De forma análoga, entendemos (en java) el método "parseType" como "convertir a ...". En este caso he usado "parser" para referirme a una función/es (o clase/s) que trata un documento XML y lo convierte en Objetos previamente definidos.
  • XML: Según la Wiki es "Lenguaje de Marcas eXtensible". Es decir, es un lenguaje de marcas, así como lo es HTML. Con XML podemos definir entidades (por así decirlo) con sus características propias.
  • Ordenado: Las listas resultantes tienen que ser ordenadas
  • Único: Veremos que hay criterios para saber si un objeto está duplicado, por lo que tenemos que evitar que esto suceda.
Dividiremos esta aventura en varias partes:

  1. Parser
    1. Cargar el documento
    2. Recorrer el documento
      1. Algoritmo general
      2. Aplicar algoritmo
      3. La función puente
    3. Tratar el documento: funciones inferiores
    4. Incorporar en una clase
      1. Problemas con la pila
        1. ¿Pila? ¿De las de botón?
        2. Solución
  2. Ordenado
    1. Algoritmo de ordenación
    2. Incorporar en una clase
      1. Ampliación de la ordenación
        1. ASC / DESC
        2. Ítem / Objeto
  3. Eliminación duplicados
    1. Algoritmo de eliminación
    2. Incorporar en una clase
Exactamente cuatro (cinco si contamos esta). Como veis, la primera parte (parser) está partida en dos, puesto que es la que más contenido tiene.

Supongo (espero) que habrán lectores con conocimientos de JavaScript. Por favor, no se ofendan demasiado con las "broncas" que hecho a jQuery (es casi algo personal...), y no hace falta que me digáis que hay un método que ordena arrays (ya lo conozco, pero la filosofía de este blog es el DIY y el escepticismo - ergo me lo construyo yo todo).

Así, sin más, nos vemos... como siempre.

¡Hasta la próxima!