nanabozoは、 CHTMLスクリプトを純粋なCコードに変換するコマンドラインアプリケーションです。言い換えれば、PHPと同様に、HTML(または同等)とC/C ++を組み合わせることができます。
これが単純なCHTMLの例です。
<?
#define page_title "hello worldの例"
int main(void){
char *world = "world";
/ *ヘッダー */
print( "content-type:text/html; charset = utf-8 n n");
?>
<html>
<head>
<title> <?= page_title?> </title>
</head>
<body>
<h1> <?% "hello%s!"、world?> </h1>
</body>
</html>
<?
0を返します。
} // end main()
?>
そのスニペットをhelloworld.phpというファイルに入れましょう(なぜそうではないのか)、次のようにnanabozoを実行します。
Nanabozo Helloworld.php Helloworld.C
そして今、 helloworld.cがどのように見えるかを調べましょう:
/* *ナナボゾによって生成された(編集しないでください) *日曜日1月14日11:08:12 CET 2018 */
それは情報的な自明のコメントです。そのコメントヘッダーをオプション-Cで無効にするか、空の文字列( -c "" )を渡すか、代わりに独自のコメントを持っている場合は、必要に応じて( -c "$(cat license.txt)" ):
#include <stdio.h> #define print(x)fputs(x、stdout)
デフォルトでは、 stdio.hが含まれており、関数printが定義されています。ご覧のとおり、 stdout 、別のCGIアプリケーションのように、テキストを送信しているファイルです。
/ * begin c(line 1) */
#define page_title "hello worldの例"
int main(void){
char *world = "world";
/ *ヘッダー */
print( "content-type:text/html; charset = utf-8 n n");
/ * end c(8行目) */
begin/endコメントに囲まれているため、最初のファイルにあるように、Cコードの最初の部分がここに記載されています。これらのコメントは、必要に応じてOption -Nでコメントを省略できますが、デバッグの目的に役立ちます。
ここでは特別なことは何もありません。CGIにはmain()関数が必要です。機能print 、通常の必須ヘッダーを送信するために使用されることに注意してください。
print( "<html> n" 「<head> n」 「<title>」);
HTMLスクリプトが始まります。関数print 、それをstdoutに渡すために使用されます:
/ * begin c =(列11) */ print(page_title); / * end c =(11行目) */
タグの間にあるCコード<?= and ?>は、関数printの引数として与えられます。
別のHTMLパートが続きます:
print( "</title> n" 「</head> n」 「<body> n」 "<h1>");
次に、タグ<?%と?>の間にあるものは、関数printfの引数として渡されます。
/ * c%を開始する(14行目) */ printf( "hello%s!"、world); / * C%を終了する(14行目) */
最後に、HTMLの残りの部分とmain()関数の終わり:
print( "</h1> n"
「</body> n」
"</html> n");
/ * begin c(17行目) */
0を返します。
} // end main()
/ * end c(20行目) */
helloworld.cをコンパイルでき、CGIアプリケーションの準備が整います。急いで、あなたは次のようなことを試すことができます:
Nanabozo Helloworld.php | gcc -xc -o helloworld.cgi-
nanabozoは、さまざまなワークフローに伴うオプションがあります。
オプション-Mを使用して、スクリプトに基本的なメイン関数定義を包むことができます。
オプション-Tを使用して、他の出力の前に基本的なコンテンツタイプのHTTPヘッダー(Text/HTML、charset utf-8)を送信できます。
オプション-Aを使用して、文字列を渡すためにCHTMLスクリプトのコンテンツにプレイティングできます。
Option -Zを使用して文字列を渡すことができ、CHTMLスクリプトのコンテンツに追加できます。
私たちの簡単な例はmain()関数の定義なしで書き直すことができます。 bashでは、こんな感じかもしれません:
nanabozo -a $ 'int main(void){ n' -z $ ' n treturn 0; n}' helloworld.php helloworld.c
#それに相当する注意:
Nanabozo -M Helloworld.php Helloworld.C
しかし、あなたは物事をさらに悪化させることができます:
<helloworld.php nanabozo -a "$(cat myfile.h myfile.c)"> helloworld.c
オプション-Pを使用して、代替機能名を渡してprint機能を置き換えることができます。
Option -Fを使用して、 printf関数を置き換えるための代替関数名を渡すことができます。
また、 printとprintf両方を置き換えると、 stdio.h含まれません。次のようなコマンド:
nanabozo -p print -f printf helloworld.php helloworld.c
stdio.hは含まれていません。また、 print定義されていません。あなたはあなたの側でそれらの世話をしなければなりません。
オプション-Vはバージョン情報を印刷して終了します。
オプション-hは、使用情報と出口を印刷します。
CHTMLファイルに512文字より長い行がある場合(人間に許容可能)、より高い値で定義されたINPUTSIZEで再コンパイルできます。
また、バグや問題のあるものが見つかった場合は、 stan(at)astrorigin.comにお問い合わせください。
単に:
install-allを作成します
Debianシステム用のパッケージは、GithubとHomepageにある必要があります。
nanabozoは、GPL V2ライセンスに基づいてライセンスされています。
Nanabozo- CHTMLスクリプトコーディングのツール Copyright(c)2018-2020 Stanislas Marquis <[email protected]> このプログラムはフリーソフトウェアです:あなたはそれを再配布したり、変更することができます 発行されたGNU一般公開ライセンスの条件の下で ライセンスのバージョン2、または (オプションで)後のバージョン。 このプログラムは、それが役立つことを期待して配布されています、 しかし、保証なし。暗黙の保証さえありません 特定の目的に対する商品性またはフィットネス。を参照してください 詳細については、GNU一般公開ライセンス。 GNU一般公開ライセンスのコピーを受け取る必要があります このプログラムとともに。そうでない場合は、<https://www.gnu.org/licenses/>を参照してください。