(整形済み)になります。 big (大字)になります。 bigX X個の(大字)になります。 small (小字)になります。 smallX X個の(小字)になります。 center(中央揃え)になります。 hX タグになります。Xは番号。この命令はnextを暗黙に指定します。 font= (書体指定)の引数を拡張情報に直接指定します。 color= (書体指定)になります。拡張情報はcolor要素に指定する色指定(色名 or カラーコード)です。 |prev,br|拡張情報の1文字目が " で無い場合は、自動的に""で拡張情報を囲みます。 size= (書体指定)になります。拡張情報はsize要素に指定する文字サイズです。 |prev,br|拡張情報の1文字目が " で無い場合は、自動的に""で拡張情報を囲みます。 a= (リンク)の引数を拡張情報に直接指定します。 link= (リンク)になります。拡張情報はhref要素に指定するリンク先URLです。 |prev,br|拡張情報の1文字目が " で無い場合は、自動的に""で拡張情報を囲みます。 target= (リンク)になります。拡張情報はtarget要素に指定するフレーム名です。 |prev,br|拡張情報の1文字目が " で無い場合は、自動的に""で拡張情報を囲みます。 name= (リンク)になります。拡張情報はname要素に指定する名前です。 |prev,br|拡張情報の1文字目が " で無い場合は、自動的に""で拡張情報を囲みます。 span= の引数を拡張情報に直接指定します。 plain 該当要素はHTML変換を強制無効。 lconv 該当要素はHTML変換を強制有効。 |endtable| |base| |hr=color=blue| |prev,b,big,name=06|6.HTMLcreaterとの相違点、改善点 この節では、HTMLConverterの前身であるHTMLcreaterとの差について書きます。 HTMLConverterは拡張の限界に来たHTMLcreaterのソースを全部捨てて新しく根本から書き直されたプログラムです。 HTMLcreaterで使用できていた変換命令付きファイルの記述をそのまま利用できるよう、 できる限り記法を維持しましたが、一部処理に相違が生まれています。 ●継続命令(行命令)を連続して使用した場合の出力 HTMLcreaterでは同じ継続命令を連続して使用しても、1行毎に終了タグが出力されていました。 HTMLConverterでは同じ継続命令が連続して使用された場合、終了タグを出力する数を最小にします。 この結果、ブラウザで表示した時に行間が変化することがあります。 ●動作変更命令と連結制御命令 HTMLcreaterとHTMLConverterでは、動作変更命令と連結制御命令を重ねた時の処理が微妙に異なります。 新版の方が自然な解釈だと、思うのですが・・・ ●brとautobrとnobrとnoautobr命令 HTMLcreaterの時の「br」「nobr」命令はそれぞれ「autobr」「noautobr」に改名されました。 また、「br」命令は新しく「改行1個」になる命令になりました。 ●設定画面とini命令の変更 設定ファイルの別ファイル保存や設定ファイルを実行時に指定するini命令は、 実のところHTMLcreaterの設計時には想定されていませんでした。 HTMLcreaterはもともと拡張能力の乏しい構造だったため、これらの機能をうまく取り込むことが出来ず、 使い勝手のいいものとはいえない形で無理やり実装されていました。 HTMLConverterではこれらを設計段階から取り込むことで、使い勝手が向上しました。 具体的には・・・ ●従来は主設定ファイルに指定された「カレントディレクトリ情報」を 使用してini命令でのファイル位置を決定していました。 しかしこの情報がずれると非常にややこしいことになるという問題がありました。 今回は位置をHCIフォルダに固定することにより、この情報を撤廃しました。 ●従来はHTML開始タグなどの項目は開始直後にファイルに書き込まれていたため、 後から設定ファイルを再ロードしても反映することが出来ませんでした。 (これが1行目から記述しなければいけなかった理由です) 今回はそれぞれを独立して保持するようにしたため、 HTML開始タグなどの項目をファイルに書き込むのを最後まで引き伸ばせるようになりました。 これにより実行中に何度も設定ファイルを読み込むような方法に対応できるようになりました。 ●ヘッダー置換命令の制限緩和 従来の「ini」「title」「exrepsX」「exrepeX」はファイルの先頭に記述されている必要がありました。 今回はこれらは排他命令となり、ファイル中のどこの1行にしても処理できるようになりました。 ただし、「exrepsX」「exrepeX」は実行後に「ini」命令を使うと解除されてしまいます。 ●置換命令の強化 従来は10個、各500バイトまでだった「repX」「setrepX=」で使う置換テーブルはパワーアップして、 100個、各30000バイトまでになりました。 また、ファイルの更新時刻、現在時刻、変換中のファイル名などが100〜104番に追加されました。 100〜104番は「repX」命令で参照できますが、「setrepX=」命令での設定はできません。 ●table=命令の重複 従来は「table=」命令を複数回重ねると正常に処理できませんでした。 今回は多重数をカウントし、重複して「table=」命令を使用できるようになりました。 ●要素分割と自動置換 分割キーで分割した後の文字列と設定ファイルに登録された自動置換キーが一致した場合、 自動的に登録された文字列に置換される新機能です。 ●C/C++言語色変えモードの追加 当サイトのプログラミング講座C/C++編のソース色変え用のプログラムが統合された新機能です。 実行結果はプログラミング講座C/C++編の「条件分岐「if / else」(前編)(C/C++)」あたり以降をご覧ください。 ●HTML構造維持処理の強化 従来は貧弱で、ないも同然だったHTML構造維持処理が、大幅に強化されました。 これにより複雑な定義でもある程度、対応できるようになりました。 HTML構造維持処理とは、「後から定義したものを先に閉じる」というHTMLの階層構造を維持する処理です。 IEなどは階層構造を無視した記述をしても、普通に表示されてしまうのであまり目立ちはしないのですが・・・ 例としては、以下のような記述があります。 ↓命令行(1〜4を太字、2〜6を大字、3〜5を斜体、1〜8を青字、3〜7を緑字にする(重なった場合後発優先)) |tt| |1-4b,2-6big,3-5i,1-8color=blue,3-7color=green|0 1 2 3 4 5 6 7 8 9 ↓ブラウザでの見え方 |1-4b,2-6big,3-5i,1-8color=blue,3-7color=green|0 1 2 3 4 5 6 7 8 9 ↓HTMLソース(長いので3行に分割しました) |base|tt 0 1 2 3 4 5 6 7 8 9
|base| ・・・とこのようになんかものすごい事になってますが、 2の直後にくる文字色変更のために、その後に定義されたが一度解除され、再定義されています。 4の直後では一番最初に定義されたを解除するために、が再定義されています。 5の直後ではこの時点で一番最初に定義されたを解除するために、が再定義されています。 6の直後ではまたこの時点で一番最初に定義されたを解除するために、が再定義されています。 7の直後は普通に文字色変更のためにを解除しています。 ・・・といった感じです。 こんな定義使うことはそうないとは思いますが、 ここまで来るとタグ挿入型のエディタやテキストエディタではなかなか記述するのは大変だと思うので、 そういう時は普段そういうエディタを使っている人もコレを持ち出してくれるといいなぁと思います。 ●color=とsize=命令の仕様変更(Ver1.01〜) color=とsize=命令は、先頭文字が " でなかった場合に自動的に "" で要素を囲むようになりました。 |1.3.4tt| 従来は |color=#888888| とすると と出力されていましたが、 |1.2tt| Ver1.01以降では と出力されるようになりました。 ●link=,target=,name=命令の仕様変更(Ver1.01〜) link=,target=,name=の各命令は従来は無条件に "" で要素を囲んでいましたが、 先頭文字が " でなかった場合のみ、自動的に "" で要素を囲むようになりました。 ●base命令の追加 設定してから再設定するまでの全ての行に割り当てられる命令を設定する新機能です。 |base|tt のように設定すると再設定するまで全ての行に「tt」(等幅)命令を指定したことになります。 また、この方法で設定すると通常の命令同様、HTML構造維持処理の管轄に入ります。 必要なら一度終了した後、再定義するなどの動作も行います。 特に、テーブルの中など、再定義が多発する面倒な場所で最も効果を発揮します。 |1.3tt| (まさにすぐ下の全部等幅になってるテーブルは開始直後で |base|tt を使い、終点で |base| を使用して作っています) ●追加された新命令 HTMLConverterになる際、いくつか命令が新しく追加されました。 追加された命令は以下の通りです。 |table=border|命令 効果 分類 |base|tt cppsrc C/C++ソース色変えモードの開始。多重できません。 排他命令 endcppsrc C/C++ソース色変えモードの終了。 排他命令 base 自動的に指定される命令文字列(単独、行命令指定)を設定します。設定値は行データ。 |ins,plain,br|ここで指定した命令文字列は各行の先頭に書いたのと同義です。
解除するには空文字列を再設定してください。 排他命令 setsplit 分割キーを再設定します。新しい分割キーは行データ。 排他命令 setjoin 接合キーを再設定します。新しい接合キーは行データ。 排他命令 /* スキップの開始。*/命令が出現するまで他の命令や文字列は無視されます。 排他命令 */ スキップの終了。 排他命令 br
(改行)になります。 単独命令 srclineout C/C++ソース色変えモードで行番号出力をONにします。 単独命令 nosrclineout C/C++ソース色変えモードで行番号出力をOFFにします。 単独命令 center(中央揃え)になります。 継続命令 hX タグになります。Xは番号。この命令はnextを暗黙に指定します。(1.02以上) 継続命令 |endtable| |base| |hr=color=blue| |prev,b,big,name=07|7.正規表現について HTMLConverterで使用される正規表現は、独自の指定方法を持ちます。 Perl互換の指定方法も使用できるようにしたかったのですが、現状うまく実装できていないので・・・ (これは当サイト配布のSOLDOUTItemEditorの正規表現と同じです) パターン指定の一例 |+tt| A.「文字列 abc にマッチ」= abc B.「文字列 abc か def にマッチ」= %[%(abc%)%(def%)%] C.「数字が続く限りマッチ」= %/d D.「1〜3個のアルファベット(最長)にマッチ」= %1,3l E.「アルファベットが続く限りかつ文字列 012 が続かない」= %*l%!(012%) |/tt| 比較対象に zxcabc0123def という文字列を使い、オプションを使わないと、 上記は以下のように処理されます。(^があるところがマッチ範囲) |+tt| A. zxcabc0123def ^^^ B. zxcabc0123def ^^^ C. zxcabc0123def ^^^^ D. zxcabc0123def ^^^ E. zxcabc0123def ^^^^^ |/tt| 以下に独自形式のメモを記しておきます。(使う人がいるのかという疑問もありますが^^;) 上の例と照らし合わせて見ていただければ^^; |+tt| 特殊文字は必ず%から始まる。指定パターンは以下の通り 基本形:%[判定指定][最低数(v,V,u,U,t,hのみ番号)][.最低数(v,V,u,U,t,hのみ)][,最大数]指定文字 判定指定: +:最短マッチにする。 *:最長マッチにする。 !:否定にマッチする。(マッチした場合は長さ0) /:純粋最長マッチにする。(その先のパターンにマッチするかチェックしない) 最低数:最低この数がマッチしないとマッチしない 最高数:この数までマッチした場合は検索を終了する。 番号:抽出オブジェクトがある場合、その要素番号。 繰り返しが指定されている場合、一回ごとにリセットされる。 指定文字:先頭の%は最初の%のことです(10進数字は%%dじゃなくて%dです) 1.固定指定。数量子は使用不可。 %%:%文字 2.グループ指定。 %(〜%):指定した範囲をまとめる。)には数量子指定不可。 %{〜%}:指定した範囲がマッチした場合、抽出する。}には数量子指定不可。 %[〜%]:指定した範囲のオブジェクトのうち、いずれかに該当する場合にマッチする。 ]には数量子指定不可。 3.通常特殊文字 %d:10進数字(0-9)に該当。 %D:10進数字(0-9)以外に該当。 %x:16進数字(0-9a-f)に該当。 %X:16進数字(0-9A-F)に該当。 %n:16進数字(0-9a-fA-F)に該当。 %N:16進数字(0-9a-fA-F)以外に該当。 %a:小文字アルファベット(a-z)に該当。 %A:大文字アルファベット(A-Z)に該当。 %w:ホワイトスペース(\t )に該当。 %W:ホワイトスペースと改行(\t \r\n)に該当。 %i:ホワイトスペース(\t )以外に該当。 %I:ホワイトスペースと改行(\t \r\n)以外に該当。 %l:全てのアルファベット(a-zA-Z)に該当。 %L:全てのアルファベットと数字(a-zA-Z0-9)に該当。 %b:全てのアルファベット(a-zA-Z)以外に該当。 %B:全てのアルファベットと数字(a-zA-Z0-9)以外に該当。 %y:1バイト記号(!"#$%&'()=~|`{+*}<>?_-^\@[;:],./)に該当。 %Y:1バイト記号(!"#$%&'()=~|`{+*}<>?_-^\@[;:],./)以外に該当。 %k:全ての1バイト可視文字(a-zA-Z0-9!"#$%&'()=~|`{+*}<>?_-^\@[;:],./)に該当。 %K:全ての可視文字(%kに2バイト文字を加えたもの)に該当。 %c:コントロールキャラクタ(0x01-0x1f,0x7f)に該当。 %C:改行以外の(半、全とも)1文字に該当。 %s:プログラム識別子(a-zA-Z0-9_)に該当。 %S:プログラム識別子(a-zA-Z0-9_)以外に該当。 %j:全ての文字(半、全とも)1文字に該当。 %J:全ての全角1文字に該当。 %?:全ての半角1文字に該当。 %g:行頭に該当。 %G:行末に該当。 %^:文字列の先頭に該当。 %$:文字列の最後に該当。 %z:次のオブジェクトに該当。(%*zaの場合、aの最長マッチになる) 4.参照文字 %v:抽出済み配列に該当。番号指定は最初が0で後に向かう。番号指定がない場合は0とみなす。 %V:抽出済み配列に該当。番号指定は最後が0で前に向かう。番号指定がない場合は0とみなす。 5.範囲指定 %-:この後に続く2文字の範囲に該当する。 2文字には特殊文字や全角文字は使えない。 オブジェクトの範囲を取るわけではないので注意。 6.マッチング制御 %p:これ以降の文字列はマッチ範囲から除外される。(ただしマッチしなければマッチは失敗する) %P:%pに加え、この直後で文字列が終了した場合もマッチに成功する。 %e:抽出時のみ、抽出される範囲をここで終了する。 その後もマッチは続行、%pと組み合わせた場合は抽出範囲はこっちが優先 7.抽出済み配列操作 %t:最後に抽出した文字列を番号指定値に代入する。番号指定がない場合は0とみなす。 番号指定値が抽出した総数以上の場合は指定値まで配列が増え、隙間は空文字列で埋められる。 %T:配列の最後に空文字列を追加する。 %h:配列の番号指定値の要素を削除する。番号指定がない場合は0とみなす。 %H:配列の最後の要素を削除する。 |/tt| |hr=color=blue| |prev,b,big,name=08|8.更新履歴 ver1.03(07/09/11) [修正]「span=」命令が正しく動作しなかった問題を修正 v1.02(06/08/25) [追加]「hX」命令を追加 v1.01(06/06/16) [変更]color=,size=命令の""囲み制御を変更 [変更]link=,target=,name=命令の""囲み制御を変更 v1.00(06/05/26) 初版公開。 |hr=color=blue| HTMLConverter version 1.03 解説 終わり |1link=http://www5f.biglobe.ne.jp/~fuku-labo/,1target=_blank|開発元 fuku研究所