![]() |
Etiquetas vB.
Esta pregunta va dirigida a los moderadores del foro: ¿Dónde puedo conseguir el código de la etiqueta [delphi]?
¿Cómo funcionan estas etiquetas? ¿Se tienen que implementar necesariamente en un foro? No sé si este es el subforo correcto para preguntar esto, pero no sabía donde meter el hilo y lo metí en Varios. Muchas gracias por adelantado. |
Hola,
A mí se me ocurre preguntarte qué es lo que pretendes conseguir, qué necesitas, vaya. ¿Quieres mostrar código Delphi en una página Web tal como se hace en estos Foros cuando se emplea la etiqueta [ DELPHI ]? ¿Quieres implementar la etiqueta susomentada en algún Foro que carezca de esta? En fin, tal vez respondiendo a estas preguntas aumenten las posibles respuestas acerca de lo que planteas. ;) |
Ambas cosas, la verdad. Quiero implementar la etiqueta en un foro de un colega (foro de programadores de mi pueblo, está en catalán) y también en un weblog que me he hecho sobre programación (de momento sólo en catalán, pero muy pronto también en castellano). También me gustaria ver el código para crear una etiqueta para el lenguaje C.
Muchas gracias. |
Hola,
Pues creo que fue Román el encargado de llevar a cabo lo necesario para que la etiqueta [ DELPHI ] funcione. Él podrá, seguramente, explicarte cómo puedes hacerlo. Únicamente creo que se sería preciso que el foro de tu amigo estuviera hecho con el sistema que se utiliza en estos mismos Foros, puesto que es de suponer que cada sistema (PHPBB, vBulletin, etc.) implemente algo así de distinta manera. ¿Miras en la página Web de vBulletin (si es el caso) a ver si hubiera alguna forma de hacerlo ya estandarizada, como pudiera ser el uso de "plugins" o algo así? ;) No sé si exista alguna especie de "parser" escrito en JavaScript o PHP, por ejemplo, que pudiera ayudarte a implementar lo que precisas es una determinada página Web, independientemente de si utiliza algún sistema de foros como los mencionados o no hace uso de ellos. Tal vez sea cuestión de echar un vistazo en tu buscador de Internet favorito. ;) |
Mi weblog está hecho en Blogger y el foro de mi amigo usa los foros XMB. En cuanto Román lea esto ya me dirá como lo hizo (si quiere) y ya intentaré convertirlos (si es necesario).
Muchas gracias. |
Vaya... Roman tarda en/no quiere responder...
|
Cita:
// Saludos |
Hola,
Cita:
|
Lo siento Román, sé que no has contestado porqué no has visto el post, de haberlo visto estoy seguro de que hubieses contestado. Sólo pretendia que mi post subiera otra vez a la cabeza del subforo para que lo vieras, era una forma de llamar la atención. Quizá, mi comentario no ha estado del todo oportuno, en ningún momento he pensado/queria decir que me ignoras. Tú también tienes derecho a una vida privada en plenas condiciones, y desde ningún punto de vista, estos foros han de superar, en cuanto a primordialidad, a tu vida.
Una vez más, te pido disculpas por el comentario. No pretendia tacharte de pasota, ni de desinteresado. Mil perdones, que este pequeño incidente no obstaculize nuestra relación de colaboradores (yo siempre que pueda, se que tú tambén, intentaré ayudar a todos los usuarios). No pretendo ser repetitivo, pero por si no han quedado claras mis disculpas: Mil perdones, compañero Román. |
Por favor, Román, no estés molesto. Te pido mil disculpas.
|
Como ya te comentó David, la implementación específica dependerá del sistema de foros que uses y yo desconozco por completo el que mencionas.
El resaltado en sí se hace mediante un script PHP. Por el momento no tengo pensado publicarlo pero puedo darte la idea general, que, en mi opinión, es mucho mejor que poner el código final. Dado que estamos hablando de PHP, muevo además este hilo al foro correspondiente. La base del resaltado es la identificación de los distintos tokens a resaltar mediante el uso de expresiones regulares. A grandes rasgos, una expresión regular es un patrón que permite identificar porciones de texto. Sin duda todos hemos escrito alguna vez algo como: Código:
msdos>dir arch.*bk Sin embargo, el uso de comodines es una aproximación muy limitada a las expresiones regulares. PHP utiliza las expresiones PCRE (Perl Compatible Regular Expressions) que permiten detectar una amplia gama de patrones. Por ejemplo, la expresión Código:
[a-z_][a-z0-9_]*
Esto es, el patrón identificará, por ejemplo: Código:
_hola Código:
2hola Otro ejemplo de expresión regular: Código:
'.*' Código:
Cadena := 'esta es ' + 'una cadena'; Para evitar esto hay que utilizar la directiva ? para indicar que se detecte "lo mínimo posible": Código:
'.*?' Con esto, el compilador de expresiones regulares parará en el segundo apóstrofe indicando que la cadena 'esta es ' coincide con el patrón y volverá a comenzar en el tercer apóstrofe deteniéndose nuevamente en el cuarto indicando que 'una cadena' también satisface el patrón. Una situación similar se presenta con los bloques de comentarios. La expresión regular sería: Código:
{.*?} Código:
[a-z]{3,4} Para poder incluir las llaves (y otros caracteres especiales) como parte de la expresión regular, deben "escaparse" con el símbolo de escape \. Así, la expresión para bloques de comentarios quedaría: Código:
\{.*?\} Código:
\(\*.*?\*\) \n, en los comentarios de línea significa "final de línea", de manera que el patrón detectará todo lo que comience con // y termine cuando termine la línea. Dos expresiones regulares, X y Z, pueden unirse con el operador | de disyunción: Código:
X|Z Código:
\{.*?\}|\(\*.*?\*\)|//.*?\n|//.*$ Aquí agregué Código:
//.*$ Código:
unit Hola; Con esto detectamos las partes más importantes para el resaltado de código pascal:
PHP incluye varias funciones para el manejo de expresiones regulares tipo Perl. La que usé en el resaltador es preg_replace_callback: Código PHP:
Ahora bien, lo que yo paso en $reg_exp, es la concatenación de todas las expresiones regulares descritas: Código PHP:
Básicamente, cada coincidencia se reemplazará con el mismo texto encontrado pero rodeado de etiquetas <span>, por ejemplo, en Código:
cadena := 'esta es una cadena'; Código:
<span class="quote">'esta es una cadena'</span> El tercer parámetro de preg_replace_callback es el texto que deseamos resaltar y el segundo parámetro es el nombre de una función que es la que efectuará los reemplazos: Código PHP:
En este arreglo, el primer elemento, $matches[0] contiene la porción de texto que haya coincidido, $matches[1] la parte que haya concidido con el primer grupo, $matches[2] la parte que haya coincidido con el segundo grupo, etc. En nuestra función de reemplazo tenemos entonces que comparar $matches[0] con cada grupo para saber qué reemplazar: Código PHP:
Como se ve, la función debe regresar el texto reemplazado. En el caso de identificadores, no todo identificador es una palabara reservada, así que debemos cotejar el identificador contra una lista de palabras reservadas: Código PHP:
Código PHP:
Esto más o menos cubre todo lo necesario para el resaltado. Cabe notar que podríamos simplificarlo usando preg_replace en lugar de preg_replace_callback. Una vez para los comentarios, otra vez para las cadenas y una tercera vez para las palabras reservadas (preg_replace acepta un areglo como parámetro indicando que han de reemplazarse todos los elementos que encuentre en el arreglo), pero me pareció más flexible así ya que además podemos ampliar la expresión regular para abarcar, por ejemplo:
Obviamente, conviene un mediano entendimiento del uso de expresiones regulares para lo cual, además del mismo manual de PHP, podrás encontrar infinidad de tutoriales en la red. Yo, de hecho aprendí con éste. // Saludos |
Hola,
Enhorabuena Román, explicación y ayuda excelentes. ;) |
Maese Roman, que bárbaro ;)
|
Interesante la información Roman, la verdad es que estoy interesado en tratar de hacer algo asi para una web.
Código PHP:
|
En blogger yo tengo implementada una serie de estilos que me permiten que lo que aparece entre la etiqueta <code> pueda aparecer con la sintaxis de Pascal, SQL, etc... resaltada, en mi blog puedes ver ejemplos de como se ve el resultado, pero al final el texto que pones entre estas etiquetas tiene que ser en XHTML para que la hoja de estilos pueda hacer su trabajo... para la exportación del código pascal a formato XHTML lo hago usando el programa PSPAD, el resto es solo copiar y pegar en el blogger o el cliente de escritorio que utilices para administrar tu blog, muy práctico a mi parecer, si te sirve te envío los estilos que utilizo y tu puedes adecuarlos a la plantilla que utilices
|
Cita:
// Saludos |
Cita:
Saludos |
Este mensaje de roman me parece un excelente tutorial de expresiones regulares en español. De hecho, será mi punto de referencia dentro y fuera del club para los neófitos en este tema.
Gracias por tan excelente contenido, amigo roman. Saludos. ;) |
Si Gunman sabía quien le responderia la duda, porque no le manda un Mail en lugar de tener que rogar publicamente que le contesten.
Es una sugerencia...... |
:confused:
// Saludos |
La franja horaria es GMT +2. Ahora son las 13:16:28. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi