WODZ: Web One Dot Zero
Introducción:
WODZ intenta solucionar el problema del mantenimiento de una página web personal de aspecto moderno a la vez que pretende:
- Evitar la dependencia de mecanismos dinámicos (db, cgi, php, ...)
- Separar el contenido del diseño.
- El contenido se almacenará preferiblemente en un formato de texto plano que contenga algún tipo de marca que permita su posterior tratamiento (ie, uno de los así llamados "lenguajes de marcas ligeros".
- Se contemplará el encoding tanto del archivo de contenido como del html generado.
A la hora de implementar WODZ se ha intentado reusar todos los elementos ya existentes para que fuese fácil y rápido de implementar y de mantener. Para cumplir estos objetivos se escogió python como lenguaje de programación, ya que es permite un rápido desarrollo y tiene a su disposición una serie de librerías que hacen casi inmediatas la consecución de los objetivos antes listados; a saber:
- La configuración de las distintas páginas de hace mediante el módulo de python configobj. Este simple mecanismo de lectura (y escritura) de archivos de configuración permite fácilmente leer variables desde un archivo de texto y guardarlas en forma de diccionario, permitiendo el uso inmediato del código python.
- Para separar el diseño del contenido se usa el módulo de python para htmltmpl. El htmltmpl es un sistema de templating sobre html muy afianzado en el mundo perl, lo que hace que sea estable y bien documentado.
- El uso de markdown como lenguaje de marcas ligero a través del módulo de python python-mardown. markdown además cumple con los requerimientos estéticos de ser "agradable" leído como simple texto plano. Inspirado en el estilo tradicional de los mails en texto plano, parece más apropiado que alguno de los lenguajes usados en wikis.
- python tiene una un excelente soporte para diferentes encoding a través del módulo codecs, que hace posible el trabajo con ficheros escritos en diferentes codecs.
Visión general de WODZ:
Toda la información necesaria para la generación de un sitio web puede clasificarse en:
- Información relativa a la estructura del sitio.
- Información relativa al contenido de cada página.
- Información relativa al diseño de cada página.
- Información relativa a la configuración de cada página.
Estructura del sitio:
La información relativa a la estructura del sitio es de tipo "árbol" y se proporciona mediante la organización de los archivos fuentes del sitio en una estructura de directorios adecuada.
Dado un directorio raíz para los archivos fuentes del sitio, WODZ sigue un criterio basado en el formato de nombres de directorios y archivos para construir la estructura del site...
En cuanto a los directorios, que significan una rama de la estructura en árbol del sitio, WODZ sólo lee aquellos cuyo nombre son de la forma xxxx.section. Dentro de cada uno de estos directorios (así como en el propio raíz de las fuentes del site) es necesario que exista un archivo llamado section.info, que contiene la configuración del index de esa rama; véase la sección relativa a la configuración para más información sobre los archivos de configuración.
Dentro de cada uno de estos directorios que son tratados como ramas de la estructura en forma de árbol, WODZ buscará todos los archivos cuyos nombres sean de la forma yyyy.web. Estos archivos contienen la configuración de cada una de las hojas (páginas) de la estructura en árbol del site. Se creará una hoja (página) por cada uno de estos archivos; véase la sección relativa a la configuración para más información sobre los archivos de configuración.
Contenido de cada página:
La forma en que se proporciona el contenido de cada página depende del tipo de página declarada. La declaración del tipo de página se hace a tavés de la variable "page_type" en el archivo de configuración. Puede ser un simple archivo para el caso más usual: "page_type = page" o la traducción a html de un documento en LaTeX para "page_type = latex". En cualquier caso, el contenido se especifica mediante el uso de la variable de configuración "content = file-or-dir-name".
Siempre que el contenido sea texto, se espera que este esté en formato mdl (markdown).
Diseño de cada página:
El diseño de página se basa en el módulo html-tmpl, que usa por un lado CSS y por otro las variables definidad por WOPZ.
Véase la documentación del html-tmpl para información sobre la sintaxis.
Sobre las variables disponibles para cada página, serán:
- Todas las definidas en el archivo de configuración de la página o sección.
- Algunas a mayores definidas dentro del código del WOPZ
- En el caso de una sección, dentro del bucle Sections, las definidas en los archivos de configuaración de todas las secciones un nivel por debajo de la sección considerada.
- En el caso de una sección, dentro del bucle Pages, las definidas en los archivos de configuaración de todas las páginas que pertenecen a sección considerada.
Configuración de cada página:
TODO