nanabozo ist eine Befehlszeilenanwendung, die CHTML-Skripte in reinen C-Code übersetzt. Mit anderen Worten können Sie HTML (oder gleichwertig) mit C/C ++ mischen, wie Sie es mit PHP tun würden.
Hier ist ein einfaches CHTML -Beispiel:
<?
#define page_title "Hallo Weltbeispiel"
int main (void) {
Char *World = "World";
/ * Header */
print ("content-type: text/html; charset = utf-8 n n");
?>
<html>
<kopf>
<title> <? = page_title?> </title>
</head>
<body>
<H1> < % "Hallo % s!", Welt?> </h1>
</body>
</html>
<?
Rückkehr 0;
} // Ende main ())
?>
Lassen Sie uns diesen Ausschnitt in eine Datei namens helloworld.php (warum nicht) einfügen, dann führen wir nanabozo wie folgt aus:
Nanabozo HelloWorld.php HelloWorld.c
Und jetzt untersuchen wir, wie helloworld.c aussieht:
/* * Generiert von Nanabozo (nicht bearbeiten) * Sun 14. Januar 11:08:12 CET 2018 */
Das ist ein informativer, selbsterklärender Kommentar. Sie können diesen Kommentar -Header mit der Option -c deaktivieren, eine leere Zeichenfolge ( -c "" ) übergeben oder stattdessen einen eigenen Kommentar haben, wenn Sie möchten ( -c "$(cat license.txt)" ):
#include <stdio.h> #Define Print (x) Fputs (x, stdout)
Standardmäßig ist stdio.h enthalten und der print definiert. Wie Sie sehen können, ist stdout die Datei, an die wir unseren Text senden, genau wie eine andere CGI -Anwendung:
/ * Beginnen Sie C (Zeile 1) */
#define page_title "Hallo Weltbeispiel"
int main (void) {
Char *World = "World";
/ * Header */
print ("content-type: text/html; charset = utf-8 n n");
/ * Ende C (Zeile 8) */
Bei der ersten Datei wird der erste Teil unseres C -Codes von Beginn/End -Kommentaren eingeschlossen. Sie können diese Kommentare mit der Option -n weglassen, wenn Sie möchten, sind jedoch für Debugging -Zwecke nützlich.
Nichts Besonderes hier, unser CGI braucht eine main() -Funktion. Beachten Sie, dass der print verwendet wird, um die üblichen obligatorischen Header zu senden:
print ("<html> n"
"<kopf> n"
"<title>");
Unser HTML -Skript beginnt. Der print wird verwendet, um ihn an stdout zu übergeben:
/ * Beginnen Sie C = (Zeile 11) *// * print (page_title); / * Ende c = (Zeile 11) */
Der C -Code, print zwischen den Tags <?= ?>
Ein weiterer HTML -Teil folgt:
print ("</title> n"
"</head> n"
"<body> n"
"<h1>");
Was war dann zwischen den Tags <?% und ?> Als Argumente an die Funktion printf übergeben:
/ * Beginnen Sie C% (Zeile 14) *// *
printf ("Hallo %s!", World);
/ * Ende c% (Zeile 14) */
Schließlich der Rest der HTML und das Ende der main() -Funktion:
print ("</h1> n"
"</body> n"
"</html> n");
/ * Beginnen Sie C (Zeile 17) */
Rückkehr 0;
} // Ende main ())
/ * End C (Zeile 20) */
Sie können helloworld.c kompilieren und Ihre CGI -Anwendung ist fertig. In Eile können Sie so etwas ausprobieren wie:
Nanabozo HelloWorld.php | gcc -xc -o helloWorld.cgi -
nanabozo hat Optionen, um verschiedene Arbeitsabläufe zu erhalten.
Die Option -M kann verwendet werden, um eine grundlegende Hauptfunktionsdefinitionsdefinition aufzunehmen, die Ihr Skript umwickelt.
Mit der Option -t können Sie vor einer anderen Ausgabe einen grundlegenden HTTP-Header vom HTTP-Header (Text/HTML, CharSet UTF-8) senden.
Mit der Option -A kann verwendet werden, um eine Zeichenfolge zu übergeben, um den Inhalt des CHTML -Skripts vorzubereiten .
Die Option -Z kann verwendet werden, um eine Zeichenfolge zu übergeben, um den Inhalt des CHTML -Skripts anzuhängen .
Unser einfaches Beispiel könnte ohne die Definition der main() -Funktion neu geschrieben werden. In bash könnte es so sein:
nanabozo -a $ 'int main (void) { n' -z $ ' n treturn 0; n}' helloWorld.php helloWorld.c
# Beachten Sie, dass dies entspricht:
nanabozo -m HelloWorld.php HelloWorld.c
Sie könnten die Dinge jedoch noch schlimmer machen:
<HelloWorld.php Nanabozo -a "$ (cat myfile.h myfile.c)"> helloWorld.c
Mit der Option -P können Sie einen alternativen Funktionsnamen übergeben, um die print zu ersetzen.
Die Option -F kann verwendet werden, um einen alternativen Funktionsnamen zu übergeben, um die printf -Funktion zu ersetzen.
Und wenn Sie sowohl print als auch printf ersetzen, wird stdio.h nicht enthalten. Ein Befehl wie:
nanabozo -p print -f printf helloWorld.php HelloWorld.c
wird weder stdio.h enthalten noch print definiert. Sie müssen sich auf Ihrer Seite um sie kümmern.
Die Option -V druckt Versionsinformationen und beendet.
Die Option -H druckt Nutzungsinformationen und Ausgaben.
Wenn Ihre CHTML -Datei länger als 512 Zeichen (die menschlich akzeptabel) Linien hat, können Sie mit einem höheren Wert mit INPUTSIZE definiert.
Und wenn Sie einen Fehler oder etwas problematisch finden, wenden Sie sich bitte an stan(at)astrorigin.com .
Einfach:
allmählich machen
Ein Paket für Debian -Systeme sollte auf Github und Homepage gefunden werden.
nanabozo ist unter der GPL V2 -Lizenz lizenziert:
Nanabozo - Tool für CHTML -Skriptcodierung Copyright (c) 2018-2020 Stanislas Marquis <[email protected]> Dieses Programm ist kostenlose Software: Sie können es neu verteilen und/oder ändern es gemäß den Bestimmungen der GNU General Public Lizenz wie veröffentlicht von Die kostenlose Software -Stiftung, entweder Version 2 der Lizenz oder (nach Ihrer Option) Jede spätere Version. Dieses Programm wird in der Hoffnung verteilt, dass es nützlich sein wird, aber ohne Garantie; ohne die implizite Garantie von Handelsfähigkeit oder Fitness für einen bestimmten Zweck. Siehe das GNU Allgemeine öffentliche Lizenz für weitere Details. Sie hätten eine Kopie der GNU General Public Lizenz erhalten haben sollen zusammen mit diesem Programm. Wenn nicht, siehe <https://www.gnu.org/licenses/>.