HTML ドキュメント作成ツール

HPP (HTML Pre-Processor)

Ver 0.10

ダウンロード 19KB

ソフト名 HPPVer. 0.10
ファイル名 HPP011.LZH
バイト数 20,111 Bytes
著作権者 木屋 善夫
対応機種 Microsoft Windows 98/ Windows NT 4.0
動作確認 自作DOS/V機 / Windows 98 にて確認
掲載日 Windows NT 4.0 SP5
作成方法 LHAにて解凍
種別 フリーソフトウェア
転載条件 ありませんが、事後にメールをいただければ幸いです。

HTML ファイルをテキストエディターを使ってバリバリ書いていると、どうしても同じようなことの繰り返しになってしまいます。

特に、ヘッダーやフッターなどは統一してやりたいと思うのですが、どうしても直し忘れなどがあります。

C言語などでプログラミングしていますと、ファイルを部品化して必要なものを必要なところに読み込むことができます。この機能がどうしても欲しくて、最初は、Visual C++ のプリプロセッサーを使用していました。

ファイルのインクルードとマクロが使えるので、サイト全体で統一したい部分屋かてーごりーないで統一したいものなどを部品化することができ、画期的に楽になりました。

ところが、いろいろとやっているうちに不都合に気がつきました。C言語用のプリプロセッサーは、マクロ展開できるのは1行に限られています。ところが、&lf;script>&lf;!-- //-->&lf;/script>は、1行に記述してはいけないようなのです。

また、"" で括られた文字列内も置き換えることができません。

う〜ん、困った…。仕方ないので「自分で作っちゃえ!」ってことになりました。土日をまるまるつぶして2日間で作りました。現在仕様そのものがβ版ですので、どんどん、変更されています。その辺のところは覚悟してご使用になってください。m(_ _)m


使用法

まず、HPP.EXE をパスの通っているフォルダーに格納してください。

次に ??????.hts と言う名前のソースファイルを作成してください。このファイルは通常のHTML ファイルでかまいません。このファイルをコンパイルすると、?????.html と言う名前のファイルを作ります。拡張子に気をつけてください。もし、入力ファイルの拡張子が、.html だと、ソースファイルが失われてしまいます。(^_^;

次に Win98 の MS-DOSプロンプト、WinNT の コマンドラインから

C:\My Documents\HomePage>HPP ソースファイル名

とタイプしてください。

ソースファイルの内容が通常の HTML ファイルですと、そのまま出力されているはずです。


コメント

ホワイトスペースを除いた行頭に #= があるとその行はコメントと見なして切り捨てます。


行制御

行末が ## の場合、その行の改行文字を切り捨てます。

行末が # の場合、その行の改行文字を切り捨て、次の行と結合します。

# と ## の違いは重要です。HPP は、1行ずつ読み込んで変換処理を行います。従って、マクロの引数が複数行にわたることができません。これでは不便なので、行末に # を一つ置くことによって行を連結します。

HPP は、各行を処理するとき、まず、%%内を引数に置き換えてからマクロの展開に入ります。従って、1行の中に複数のマクロがあるときに、マクロ内で引数の値を変更しても後続のマクロには影響を与えません。

従って引数を変更するマクロを記述したときには必ず改行する必要がありますが、その場合空行が出力されてしまい出力結果の体裁が悪くなってしまいます。そこで、##を記述してやると、行そのものの連結は行わないので、正しくマクロ展開され、不要な改行が出力されないですみます。


マクロ展開

マクロは、マクロ名を $で括って記述すると展開されます。

と展開されます。

マクロには引数を与えることができます。マクロ定義中では引数は、%0% 〜 %99%と記述します。

と展開されます。


引数展開

HPP は読み込んだ行のマクロを展開する前に、% で括られた引数を置き換えます。

マクロの引数は、左から、%0% %1% %2% … %99% と置き換えられます。また、マクロそのものの名前を % で括ることによって置き換えることができます。

この展開は1段のみでマクロ中のマクロおよびコマンドはそのまま出力されます。

と展開されます。


コマンド

コマンドは、# で始まります。また、ホワイトスペースをのぞく行頭に起きます。使用できるコマンドは以下の通りです。

#include 指定されたファイルを読み込みます。
#define マクロを定義します。
#defineStyle スタイルを簡単に定義します。

オプション変更コマンド

#macroSeparator マクロ引数の区切り文字を変更します。
#macroPrefix マクロの接頭接尾文字を変更します。
#macroNestMax マクロのネストの上限を変更します。
#argumentPrefix 引数置換の接頭接尾文字を変更します。
#tabCount TAB->SPACE 変換の桁数を変更します。
#fileNameCorrection ファイル名補正の方法を指示します。

ブロックコマンド

#defineBlock
#endBlock
マクロ定義ブロック
#text
#endtext
プレーンテキストブロック
#HTML
#endHTML
HTML ブロック
#para
#endpara
複数段落ブロック
#tr
#endtr
テーブルの行定義ブロック

制御コマンド

#if
#elseif
#else
#endif
条件によってコンパイルするブロックを切り替えます。
#repeat
#endrepeat
ブロックを指定回数繰り返します。
#irp
#endirp
引数リストを1つずつ指定マクロに代入してブロックをコンパイルします。
#irpc
#endirpc
指定文字列を1文字ずつマクロに代入してブロックをコンパイルします。
#call
#endcall
ブロックの各行を引数として指定マクロを呼び出します。

マクロ変更コマンド

#eval 式を計算しその値をマクロに登録します。
#set 文字列をマクロに登録します。
#insert 引数リストに文字列を挿入します。
#delete 引数リストから引数を削除します。
#date 現在の日付および時刻を指定書式でマクロに登録します。
#fileName ファイル名前の正当性をチェックしマクロに登録します。
#fileDate ファイルのタイムスタンプを指定書式でマクロに登録します。
#fileSize ファイルのサイズをマクロに登録します。
#toupper 文字列をすべて大文字に変換してマクロに登録します。
#tolower 文字列をすべて小文字に変換してマクロに登録します。
#substr 文字列中の部分文字列をマクロに登録します。
#exist ファイルが存在するか調べ結果をマクロに登録します。

これらのコマンドはソースファイル中のどこにでも置くことができます。

コマンドの詳細


組み込みマクロ

複雑な処理を簡単に行うためにいくつかの組み込みマクロがあります。

$img イメージタグを出力
$a アンカータグを出力
$date 現在の日付と時刻を取得します。
$fileName 指定ファイルの正確なファイル名を出力
$fileDate 指定ファイルのタイムスタンプを出力
$fileSize 指定ファイルのサイズを出力
$eval 式の値を出力
$toupper 指定文字列を大文字に変換して出力(全角対応)
$tolower 指定文字列を小文字に変換して出力(全角対応)
$substr 指定文字列の部分文字列を出力
$if 2つの文字を比較し結果によって選択出力
$numFmt3 3桁ごとに ,(カンマ)で区切りって出力

組み込みマクロの詳細


日付の書式について

日付書式文字列は、C言語の strftime() と同じです。

%a 曜日の省略名
%A 曜日の正式名
%b 月の省略名
%B 月の正式名
%c ロケールに応じた日付と時間の表現
%d 10 進数で表す月の日付 (01〜31)
%H 24 時間表記の時間 (00〜23)
%I 12 時間表記の時間 (01〜12)
%j 10 進数で表す年頭からの日数 (001〜366)
%m 10 進数で表す月 (01〜12)
%M 10 進数で表す分 (00〜59)
%p 現在のロケールの AM/PM
%S 10 進数で表す秒 (00〜59)
%U 10 進数で表す週の通し番号。日曜日を週の最初の日とする (00〜53)。
%w 10 進数で表す曜日。日曜日を 0 とする (0〜6)。
%W 10 進数で表す週の通し番号。月曜日を週の最初の日とする (00〜53)。
%x 現在のロケールの日付表示
%X 現在のロケールの時刻表示
%y 10 進数で表す西暦の下 2 桁 (00〜99)
%Y 10 進数で表す 4 桁の西暦
%z、%Z 時間帯の名前またはその省略名。時間帯がわからない場合には文字を入れない。
%% パーセント記号

printf 関数と同じように、# フラグを書式指定コードの前に付けられます。その場合、書式指定コードの意味は以下のようになります。

%#a、%#A、%#b、%#B、%#p、%#X、%#z、%#Z、%#% # フラグは無視される
%#c 現在のロケールに応じた日付と時刻の長い表現。"Tuesday、March 14、1995、12:41:29" など
%#x 現在のロケールに応じた長い日付表現。"Tuesday、March 14、1995" など
%#d、%#H、%#I、%#j、%#m、%#M、%#S、%#U、%#w、%#W、%#y、%#Y 先行ゼロがあれば削除

式について

一部の引数には整数式を書くことができます。

数値及び演算は、通常32ビットの範囲で扱います。ただし、HIGH,LOW演算子は,32ビットの値のうちの下位16ビットのみを対象とし,上位16ビットを切り捨てます。

式の中には、後述の数値表記以外の任意の場所に、ホワイトスペースを含める事ができます。

数値文字列にホワイトスペースを含める事はできません。その代わりに,末尾以外の任意の場所に'_'を含める事ができます。

基数が後置の場合(nnnnHなど),数値の先頭は必ず数字(0〜9)で始まらなければなりません。

前置16進表記の$nnnnは,$の前または後に-をつけて,マイナスの値を指定する事ができます。 ($-A000 , -$A000 どちらでもかまわない) ただし,$の後ろに-をつける場合,演算子とは認識していませんので,ホワイトスペースを含める事はできません。

	数値表記:
	10進数	 nnnn 0dnnnn nnnnd nnnnD
	16進数	$nnnn 0xnnnn nnnnh nnnnH
	 8進数	      0onnnn nnnno nnnnO
	 2進数	      0bnnnn nnnnb nnnnB

	単項演算子:
		+	単項プラス
		-	単項マイナス
		~	ビットごとの補数 (1の補数)
		HIGH	16ビット中の上位8ビットの値
		LOW	16ビット中の下位8ビットの値

	単項論理演算子:
		!	論理否定

	2項演算子:
		*	乗算
		/	除算
		%	剰余
		+	加算
		-	減算
		<<	左シフト
		>>	右シフト
		&	ビットごとのAND (論理積)
		|	ビットごとのOR  (論理和)
		^	ビットごとのXOR (排他的論理和)

		==	等しい
		!=	等しくない
		<	より小さい
		<=	より小さいか等しい
		=>	より大きいか等しい
		>	より大きい

		&&	論理的 AND
		||	論理的 OR


	優先順位:
		+ - ! ~ HIGH LOW (単項)
		* / %
		+ -
		<< >>
		== != < <= => >
		& | ^
		&& ||


Homeへ 間違い、ウソ、わかりにくい所など、お気づきの点がございましたら、kiya@asahi.email.ne.jp までE-Mailをいただければと思います。 FreeSoftへ