MiniSplit::HtmlSplit - Html Splitter Module
use MiniSplit::HtmlSplit; $hs = new MiniSplit::HtmlSplit;
# キーワードは含まず、大文字小文字の区別をする $hs->set_props(KEYWORD_INC => 0, CASE_SENSITIVE => 1);
# 対象ファイルを ./text.html に設定 $hs->set_file_name("./test.html");
# 抽出処理(可変文字列の展開あり) # TEST キーワード部分を抽出 $text = $hs->get_file_part("TEST", {var1 => "可変文字列1", var2 => "可変文字列2"});
MiniSplit::HtmlSplit クラスは、Perl 5 向けのモジュールで、
・HTML ファイルから特定の部分を抽出
・抽出した中に含まれる可変文字列部分を変換
という機能を提供します(以降、MiniSplit::HtmlSplit は HtmlSplit と省略)。
初期設定では、特定の部分の抽出のために、切り出したいファイルの中で次のように
<!-- HtmlSplit:???? START --> ... <!-- HtmlSplit:???? END -->
というコメントを記述します。``????'' 部分には、後でその場所をファイル内で固有に特定するためのキーワードを指定します(この初期設定の検索条件については、 set_file_part メソッドの解説にあります)。
例えば、次のように記述すると、
あああ <!-- HtmlSplit:hogehoge START --> 切り出したい部分 <!-- HtmlSplit:hogehoge END --> いいい
HtmlSplit 使用時に、 get_file_part メソッドで ``hogehoge'' を指定すると、対応する START 〜 END 間を抽出可能です。
この抽出部分を識別する文字列 (<!-- HtmlSplit 〜 -->) は、set_split_text() メソッドで変更可能です。
可変文字列部分については FileSplit の機能を利用していて、同じように ${hogehoge} の形で HTML に指定し、その変更内容を HtmlSplit 使用時に指定します。この可変文字列部分の詳しい詳細は、the FileSplit manpage の仕様書を参考にして下さい。
これらの機能については、ソースアーカイブ添付のサンプルが詳しいので、そちらを参照して下さい。
また、HtmlSplit は FileSplit のサプブラスで、メソッドを継承しています。 HtmlSplit を使用する場合にも、set_props(), get_props(), get_file_name() は利用することを想定していますので、それらについては the FileSplit manpage を参照して下さい。
HtmlSplit は、次のようなメソッドがあります。
HtmlSplit の新しいオブジェクトを作成します。
引数として、set_props() メソッドと同じ内容を渡し、動作設定をすることが可能です。
get_file_part() メソッドでファイルを抽出する際の抽出開始〜終了位置を判別するキーワードが埋め込まれる文字列を指定します。
$com_text
には開始終了部分共通の前半部分、$start_text,
$end_text
にはそれぞれ、開始/終了に固有の後半部分(同じ内容も可)を指定します。
この指定には、正規表現の指定も可能です。
例えば、
$fs->set_split_text("<!-- Split:", " S -->", " E -->");
と指定する場合には、HTML ファイル中で、
<!-- Split:hogehoge S --> 抽出したい部分 <!-- Split:hogehoge E -->
と記述します。
もしも、次のように
$fs->set_split_text("共通部分", "", "終了"); $fs->set_split_text("共通部分", "開始", undef);
といったように、文字列なし/未定義値を、開始/終了の固有部分で渡すと、
・開始位置の場合にはファイル先頭から ・終了位置の場合にはファイル末尾まで
と扱います。
復帰値で、以前に設定されていた値を配列で返します(並びは引数と同じ順番)。
初期設定値は、
共通部分:'[ \t]*<!--\s*HtmlSplit\s*:' 開始固有:'\s+START\s*-->[ \t]*\n?' 終了固有:'\s+END\s*-->[ \t]*\n?'
としています。
内部での処理時には、HTML テキスト中の \r\n の改行コードは \n に変換しています。set_split_text() でのパターン指定には、改行コードは \n を使用して下さい。
get_file_part()
メソッドでファイルを抽出する際の抽出開始〜終了位置を判別するキーワードが埋め込まれる文字列として、現在設定されている値を取得します。
復帰値で、設定されている内容を (共通部分, 開始固有, 終了固有) の配列で返します。
@split_point = $hs->get_split_text();
HtmlSplit の操作対象とするファイル名を設定します。
$hs->set_file_name("./splitfile.txt");
復帰値で、成功した場合には真値、ファイルのオープンが出来ない等の場合には偽値を返します。
内部での処理用に、HTML テキスト中の \r\n の改行コードを \n に、この set_file_name() で変換しています。set_split_text() でのパターン指定など、改行コードは \n を使用して下さい。
その他の点については、親クラスである the FileSplit manpage 中の set_file_name() メソッドの説明を参照して下さい。
HtmlSplit の操作対象として設定されているファイルから、指定部分の抽出を行ないます。
復帰値で、抽出したテキストを返します。 もし、対応する抽出箇所が無いなどの場合には、空文字列で復帰します。
引数の $split_pos
には抽出箇所に対応するキーワードを指定します。もしこれが未定義値/空文字列の場合、ファイル全体を抽出対象とします。
引数の {var_name => var_val, ...} には、ファイル中に含まれる可変文字列として変換するものの名前と値を、キーと値のペアとして設定したハッシュ値の参照を渡して下さい。可変文字列の展開が必要ない場合には、この引数を指定しない/空のハッシュ値を渡して下さい。
テキストは、初期設定では euc コードで出力します。 もしも、出力コードを変更したい場合等は、set_props() メソッドで明示的に入力コード等を指定して下さい。
set_props() 等で OUTPUT_CODE を 'sjis' にしてしている場合には、改行コードを\n から \r\n
にして出力しています(親クラスの FileSplit の get_file_part()
では変換していませんが、HtmlSplit はこの変換をします)。
詳しい説明については、最初の DESCRIPTION を参照して下さい。
Rab-Duck, rabduck@infoseek.jp