nanabozo es una aplicación de línea de comandos que traduce los scripts de CHTML en código C puro. En otros términos, le permite mezclar HTML (o equivalente) con C/C ++, como lo haría con PHP.
Aquí hay un simple ejemplo de chtml:
<?
#define page_title "Hello World Ejemplo"
int main (void) {
char *world = "mundo";
/ * Encabezados */
print ("Content-type: text/html; charset = utf-8 n n");
?>
<html>
<Evista>
<title> <? = Page_title?> </title>
</ablo>
<Body>
<h1> <? % "¡Hola % s!", World?> </h1>
</body>
</html>
<?
regresar 0;
} // end main ()
?>
Ponamos ese fragmento en un archivo llamado helloworld.php (por qué no), luego ejecutamos nanabozo así:
nanabozo helloworld.php helloworld.c
Y ahora examinemos cómo se ve helloworld.c :
/* * Generado por Nanabozo (no editar) * Sol 14 de enero 11:08:12 CET 2018 */
Ese es un comentario informativo y por sí mismo. Puede deshabilitar ese encabezado de comentarios con la opción -c , pasarlo una cadena vacía ( -c "" ), o tener su propio comentario si lo desea ( -c "$(cat license.txt)" )::
#Include <stdio.h> #define imprime (x) fputs (x, stdout)
Por defecto, se incluye stdio.h y la print la función definida. Como puede ver, stdout es el archivo al que estamos enviando nuestro texto, al igual que otra aplicación CGI:
/ * Comienza C (línea 1) */
#define page_title "Hello World Ejemplo"
int main (void) {
char *world = "mundo";
/ * Encabezados */
print ("Content-type: text/html; charset = utf-8 n n");
/ * End C (línea 8) */
Adjunto por comentarios de inicio/final , la primera parte de nuestro código C se da aquí, como lo fue en el primer archivo. Puede omitir esos comentarios con la opción -n si lo desea, pero son útiles para fines de depuración.
No hay nada especial aquí, nuestro CGI necesita una función main() . Tenga en cuenta que la print de la función se usa para enviar los encabezados obligatorios habituales:
imprimir ("<html> n"
"<Head> n"
"<title>");
Comienza nuestro script HTML. La print de la función se usa para pasarlo a stdout :
/ * Comienza c = (línea 11) */ print (page_title); / * End c = (línea 11) */
El código C que estaba entre las etiquetas <?= Y ?> Se da como argumento a la print de la función.
Sigue otra parte HTML:
imprimir ("</title> n"
"</head> n"
"<body> n"
"<h1>");
Entonces, ¿qué estaba entre las etiquetas <?% Y ?> Se pasa como argumentos a la función printf :
/ * Comienza C% (línea 14) */
printf ("¡Hola %s!", Mundo);
/ * Finalizar C% (línea 14) */
Finalmente, el resto del HTML y el extremo de la función main() :
imprimir ("</h1> n"
"</body> n"
"</html> n");
/ * Comienza C (línea 17) */
regresar 0;
} // end main ()
/ * End C (línea 20) */
Puede compilar helloworld.c y su aplicación CGI está lista. A toda prisa, puedes probar algo como:
nanabozo helloworld.php | gcc -xc -o helloworld.cgi -
nanabozo tiene opciones para acomodarse para diferentes flujos de trabajo.
La opción -M se puede usar para incluir una definición básica de la función de la función que envuelve en torno a su script.
La opción -t se puede usar para enviar un encabezado HTTP de tipo contenido básico (Text/HTML, Charset UTF-8) antes de cualquier otra salida.
La opción -A se puede usar para pasar una cadena para prevenir el contenido del script CHTML.
La opción -z se puede usar para pasar una cadena para agregar al contenido del script Chtml.
Nuestro simple ejemplo podría reescribirse sin la definición de la función main() . En bash , podría ser así:
nanabozo -a $ 'int # Tenga en cuenta que es equivalente a: nanabozo -m helloworld.php helloworld.c
Sin embargo, podrías empeorar las cosas:
<helloworld.php nanabozo -a "$ (cat myfile.h myfile.c)"> helloworld.c
La opción -p se puede usar para pasar un nombre de función alternativo para reemplazar la función print .
La opción -f se puede usar para pasar un nombre de función alternativo para reemplazar la función printf .
Y si reemplaza tanto print como printf , stdio.h no se incluirá. Un comando como:
nanabozo -p print -f printf helloworld.php helloworld.c
no tendrá stdio.h incluido, ni print definido. Tienes que cuidarlos de tu lado.
La opción -v imprime la información de la versión y sale.
La opción -h imprime información de uso y sale.
Si su archivo CHTML tiene líneas de más de 512 caracteres (lo humanamente aceptable), puede recompilar con INPUTSIZE definido con un valor más alto.
Y si encuentra un error o algo problemático, comuníquese con stan(at)astrorigin.com .
Simplemente:
hacer instalar todo
Se debe encontrar un paquete para los sistemas Debian en GitHub y Home Page.
nanabozo tiene licencia bajo la licencia GPL V2:
Nanabozo - Herramienta para la codificación de scripts CHTML Copyright (c) 2018-2020 Stanislas Marquis <[email protected]> Este programa es un software gratuito: puede redistribuirlo y/o modificarlo Según los términos de la Licencia Pública General de GNU publicada por Free Software Foundation, ya sea la versión 2 de la licencia, o (a su opción) cualquier versión posterior. Este programa se distribuye con la esperanza de que sea útil, pero sin ninguna garantía; sin siquiera la garantía implícita de Comerciabilidad o aptitud para un propósito particular. Ver el GNU Licencia pública general para más detalles. Debería haber recibido una copia de la Licencia Pública General de GNU junto con este programa. Si no, consulte <https://www.gnu.org/licenses/>.