nanabozo adalah aplikasi baris perintah yang menerjemahkan skrip CHTML ke dalam kode C murni. Dalam istilah lain, ini memungkinkan Anda mencampur HTML (atau setara) dengan C/C ++, seperti yang Anda lakukan dengan PHP.
Berikut adalah contoh CHTML sederhana:
<?
#define page_title "Hello World Contoh"
int main (void) {
char *dunia = "dunia";
/ * Header */
print ("tipe konten: teks/html; charset = utf-8 n n");
?>
<Html>
<head>
<iteme> <? = page_title?> </iteme>
</head>
<body>
<h1> <? % "halo % s!", dunia?> </h1>
</body>
</html>
<?
kembali 0;
} // end main ()
?>
Mari kita taruh cuplikan itu ke dalam file yang disebut helloworld.php (mengapa tidak), lalu kita menjalankan nanabozo seperti ini:
nanabozo helloworld.php helloworld.c
Dan sekarang mari kita periksa seperti apa helloworld.c
/* * Dihasilkan oleh nanabozo (jangan edit) * Sun Jan 14 11:08:12 CET 2018 */
Itu adalah komentar informasi yang jelas. Anda dapat menonaktifkan header komentar itu dengan opsi -c , meneruskannya string kosong ( -c "" ), atau memiliki komentar Anda sendiri sebagai gantinya jika Anda mau ( -c "$(cat license.txt)" ):
#include <stdio.h> #define print (x) fput (x, stdout)
Secara default, stdio.h disertakan, dan fungsi print yang ditentukan. Seperti yang Anda lihat, stdout adalah file yang kami kirimkan kepada teks kami, seperti aplikasi CGI lainnya:
/ * Mulai C (baris 1) */
#define page_title "Hello World Contoh"
int main (void) {
char *dunia = "dunia";
/ * Header */
print ("tipe konten: teks/html; charset = utf-8 n n");
/ * End c (baris 8) */
Terlampir oleh komentar awal/akhir , bagian pertama dari kode C kami diberikan di sini, seperti pada file pertama. Anda dapat menghilangkan komentar tersebut dengan opsi -n jika Anda mau, tetapi mereka berguna untuk tujuan debugging.
Tidak ada yang istimewa di sini, CGI kami membutuhkan fungsi main() . Perhatikan bahwa print fungsi digunakan untuk mengirim header wajib yang biasa:
print ("<html> n"
"<head> n"
"<title>");
Skrip HTML kami dimulai. print fungsi digunakan untuk meneruskannya ke stdout :
/ * Mulai c = (baris 11) */ print (page_title); / * End c = (baris 11) */
Kode C yang ada di antara tag <?= Dan ?> Diberikan sebagai argumen pada fungsi print .
Bagian HTML lainnya mengikuti:
print ("</iteme> n"
"</head> n"
"<body> n"
"<h1>");
Lalu, apa yang ada di antara tag <?% Dan ?> Disahkan sebagai argumen pada fungsi printf :
/ * Mulai c% (baris 14) */
printf ("Hello %s!", World);
/ * End c% (baris 14) */
Akhirnya, sisa HTML dan akhir fungsi main() :
cetak ("</h1> n"
"</body> n"
"</html> n");
/ * Mulai C (baris 17) */
kembali 0;
} // end main ()
/ * End c (baris 20) */
Anda dapat mengkompilasi helloworld.c dan aplikasi CGI Anda sudah siap. Dengan tergesa -gesa, Anda dapat mencoba sesuatu seperti:
nanabozo helloworld.php | gcc -xc -o helloworld.cgi -
nanabozo memiliki opsi untuk mengakomodasi alur kerja yang berbeda.
Opsi -m dapat digunakan untuk memasukkan definisi dasar, fungsi utama utama yang membungkus skrip Anda.
Opsi -t dapat digunakan untuk mengirim header http tipe konten dasar (Teks/HTML, Charset UTF-8) sebelum output lainnya.
Opsi -a dapat digunakan untuk melewati string untuk diatur ke konten skrip CHTML.
Opsi -Z dapat digunakan untuk melewati string untuk menambahkan konten skrip CHTML.
Contoh sederhana kami dapat ditulis ulang tanpa definisi fungsi main() . Di bash , bisa seperti ini:
nanabozo -a $ 'int main (void) { n' -z $ ' n treturn 0; n}' helloworld.php helloworld.c
# Perhatikan itu setara dengan:
nanabozo -m helloworld.php helloworld.c
Namun Anda bisa membuat segalanya lebih buruk:
<helloworld.php nanabozo -a "$ (cat myfile.h myfile.c)"> helloworld.c
Opsi -p dapat digunakan untuk melewati nama fungsi alternatif untuk mengganti fungsi print .
Opsi -F dapat digunakan untuk melewati nama fungsi alternatif untuk menggantikan fungsi printf .
Dan jika Anda mengganti print dan printf , stdio.h tidak akan dimasukkan. Perintah seperti:
nanabozo -p print -f printf helloworld.php helloworld.c
tidak akan memiliki stdio.h termasuk, atau print yang ditentukan. Anda harus merawat mereka di pihak Anda.
Opsi -V mencetak informasi versi dan keluar.
Opsi -H mencetak informasi penggunaan dan keluar.
Jika file CHTML Anda memiliki baris lebih dari 512 karakter (dapat diterima secara manusiawi), Anda dapat mengkompilasi ulang dengan INPUTSIZE yang ditentukan dengan nilai yang lebih tinggi.
Dan jika Anda menemukan bug atau sesuatu yang bermasalah, silakan hubungi stan(at)astrorigin.com .
Hanya:
Buat instalasi-semua
Paket untuk sistem Debian harus ditemukan di github dan beranda.
nanabozo dilisensikan di bawah lisensi GPL V2:
NANABOZO - Alat untuk CHTML Script -Coding Hak Cipta (C) 2018-2020 Stanislas Marquis <[email protected]> Program ini adalah perangkat lunak gratis: Anda dapat mendistribusikan ulang dan/atau memodifikasi itu di bawah ketentuan lisensi publik umum GNU seperti yang diterbitkan oleh Yayasan Perangkat Lunak Gratis, Versi 2 Lisensi, atau (di opsi Anda) versi selanjutnya. Program ini didistribusikan dengan harapan akan bermanfaat, tetapi tanpa jaminan apa pun; bahkan tanpa jaminan tersirat Dapat diperjualbelikan atau kebugaran untuk tujuan tertentu. Lihat Lisensi Publik Umum GNU untuk lebih jelasnya. Anda seharusnya menerima salinan Lisensi Publik Umum GNU Seiring dengan program ini. Jika tidak, lihat <https://www.gnu.org/licenses/>.