Controlar el atributo rel de forma nativa con Textile

He logrado conseguir algo de tiempo, y quiero compartir algunos cambios que le hice a la libreria Textile que viene en “Textpattern”:http://www.textpattern.com para manejar el atributo _rel_ de los enlaces.

Según el “W3C”:http://www.w3.org/TR/html401/struct/links.html#adef-rel el atributo _rel_ describe la relación del documento enlazado en la propiedad _href_ así entonces se pueden definir “tipos de links”:http://www.w3.org/TR/html401/types.html#type-links separados por espacios.

Existen adicional a lo que especifica la W3C una propuesta de utilizar _rel_ para el manejo de “microformatos”:http://microformats.org/ diseñados con énfasis en los humanos y no en las máquinas para la mejor distribución de datos adoptando patrones y comportamientos ya establecidos.

La modificación de la librería de Textile “mantenida en este sitio web”:http://textile.thresholdstate.com/, se dió inicialmente ante la necesidad de dar soporte a nuevas páginas que se abren al presionar un enlace. Esta propiedad del enlace es conocida como _target=”_blank”_ y que no es soportado por XHTML Transitional o Strict y que falla al tratar de validar su código.

Un enlace normal mediante Textile se ve y se escribe de la siguiente forma:

==”link text (title)”:http://example.com==

Produciendo este código:

link text

El cambio en la librería Textile permite crear enlaces escribiendo de la siguiente forma:

==”link text (title)<more>”:http://example.com==

y que produce el siguiente código:

link text

h3. Modificaciones

Antes de continuar realiza un backup de la libreria, para estos cambios trabajamos con la versión incluída en la distribucion “4.0.4″:http://textpattern.com/weblog/237/textpattern-404-released de Textpattern.

Ir a la línea 718

(?:\(([^)]+)\)(?=”))? # $title

Reemplázala por

(?:\(([^)]+)\))? # $title
\s?
(?:\<([^)]+)\>(?=”))? # $URLrel

Ahora vamos a la línea 732 y reemplazamos

list(, $pre, $atts, $text, $title, $url, $slash, $post) = $m;

por

list(, $pre, $atts, $text, $title, $URLrel, $url, $slash, $post) = $m;

Vamos a la línea 737

$atts .= ($title != ‘’) ? ‘ title=”’ . $this->encode_html($title) . ‘”’ : ‘’;

Debajo de esta línea agregamos

$atts .= ($URLrel != ‘’) ? ‘ rel=”’ . $URLrel . ‘” ‘ : ‘’;

*Nota:* El atributo _rel_ no requiere codificación especial de caracteres así que la dejamos así.

Eso es todo

Ya he modificado la librería en esta instalación de Textpattern, así que “este enlace (Native textile code for manage link “rel” attributes)“:http://forum.textpattern.com/viewtopic.php?id=20808 contiene el atributo rel bien demarcado y enlaza al foro oficial donde he dejado la propuesta para este cambio.

Saludos