|
マクロですが、「xxxx.html」ファイルを開いて実行すると、「xxxx.html.tag」って
ファイルにタグを追い出すようにしました。
追い出された状態で実行すると、元に戻します。
追い出すタグは、 <a href="...">とか、<img src="...">みたいに何らかのパラ
メータ(href=とかsrc=とか)が付いたやつだけにしました。
そんな感じのマクロにしましたが、使ってみると、いまいちのような感じです。
一回試してみて欲しいです。
--------------------------------------------------------------
HtmlTagOut.mac
--------------------------------------------------------------
// HtmlTagSplit.mac
// 2016.10.03 by 斉藤秀夫
//
// HTML形式ファイルの中のタグを分離するマクロ。
//
// XXXX.html <--> XXXX.html.notag + XXXX.html.tag
//
// <a href="...."> のようなタグを、 <tag1> のようなのに分離する。
// <a href="...">xxxx</a> は、 <tag1>xxxx</tag1> にする?
// <head>〜</head>
// <script>〜</script> は、それ全体を、 <tag1>とかに変換する。
//
//「.tag」ファイルでは、 tag1=<a href="...."> みたいにする。
// tag2=<script ..>〜</script>みたいにするけど、改行
はどうするか・・・
//
setcompatiblemode 0x20000; //検索条件をマクロ終了後に自動で戻す。
setcompatiblemode 0x200; //検索でヒットした文字列を範囲選択する。
if( basename == "" ) {
message "ファイル名がありません。ファイル名無しだとマクロ実行できま
せん。";
endmacro;
}
$tagfile = basename + ".tag";
#x = x; #y = y;
gofiletop;
searchdown2 "<(?!tag[0-9]+)[a-z]+\\s[^>]+?>", regular, nocasesense;
if( result != 0 ) {
//タグを追い出す
goto Label_TagOut;
} else {
searchdown2 "<tag[0-9]+>", regular, casesense;
if( result == 0 ) {
//
message "このファイルは変換の必要はありません。";
endmacro;
}
$mode = "in";
if( !existfile($tagfile) ) {
message $tagfile + "ファイルが存在しないので、タグの復元が出来ま
せん。";
endmacro;
}
goto Label_TagIn;
}
endmacro;
//htmlタグを.tagファイルに追い出す。
Label_TagOut:
question "現在のHTMLファイルにある長いタグを、" + $tagfile + "に追い出し
ます。";
if( result != yes ) {
endmacro;
}
if( updated ) {
question "このファイルは更新されてます。保存してから続行しますか?";
if( result == yes ) {
save;
} else {
message "マクロを中断します。";
endmacro;
}
}
#htmlfile = hidemaruhandle(0);
newfile;
changename $tagfile;
#tagfile = hidemaruhandle(0);
setactivehidemaru #htmlfile;
#tagnumber = 1; // "tag1"からスタート。
gofiletop;
while(1) {
searchdown2 "<(?!tag[0-9]+)[a-z]+\\s[^>]+?>", regular, nocasesense;
if( result == 0 ) {
break;
}
$s = gettext( seltopx, seltopy, selendx, selendy, 1 );
delete;
setactivehidemaru #tagfile;
gofileend;
insertfix "tag" + str(#tagnumber) + "=" + $s;
beginsel;
gofileend;
replaceallfast "\\n", "\\x01", regular, casesense, inselect;
gofileend;
insert "\n";
setactivehidemaru #htmlfile;
insert "<tag" + str(#tagnumber) + ">";
#tagnumber = #tagnumber + 1;
}
gofiletop;
if( #tagnumber == 1 ) {
closehidemaruforced #tagfile;
deletefile $tagfile;
message "タグが1つも見つかりませんでした。";
} else {
setactivehidemaru #tagfile;
save;
setactivehidemaru #htmlfile;
save;
closehidemaruforced #tagfile;
message str(#tagnumber - 1) + "個のタグを追い出しました。";
}
endmacro;
endmacro;
endmacro;
endmacro;
endmacro;
//tagファイルからタグを読み込む。成功したら.tagファイルは削除する。
Label_TagIn:
question $tagfile + "に追い出したタグを元に戻します。";
if( result != yes ) {
endmacro;
}
#htmlfile = hidemaruhandle(0);
openfile $tagfile;
if( result == 0 ) {
message $tagfile + " のオープンに失敗しました。マクロを中断します。";
endmacro;
}
#tagfile = hidemaruhandle(0);
setactivehidemaru #htmlfile;
gofiletop;
#convcount = 0;
while(1) {
searchdown2 "<tag[0-9]+>", regular, nocasesense;
if( result == 0 ) {
break;
}
$num = gettext( seltopx + 4, seltopy, selendx - 1, selendy, 1 );
#num = val($num);
if( #num < 1 ) {
//おかしい
message "タグの番号がおかしいです。マクロを中断します。";
endmacro;
}
setactivehidemaru #tagfile;
gofiletop;
searchdown2 "(?<=^tag" + $num + "=).+$", regular, casesense;
if( !result ) {
message "(?<=^tag" + $num + "=).+$";
message ".tagファイルから目的のタグが見つかりません。見つからな
いタグはスキップします。";
setactivehidemaru #htmlfile;
moveto selendx, selendy;
} else {
$s = gettext( seltopx, seltopy, selendx, selendy, 1 );
setactivehidemaru #htmlfile;
delete;
insert $s;
#convcount = #convcount + 1;
}
}
setactivehidemaru #htmlfile;
if( #convcount == 0 ) {
message "変換したタグは1つもありませんでした。";
endmacro;
}
replaceallfast "\\x01", "\\n", regular, casesense, inselect;
save;
setactivehidemaru #htmlfile;
closehidemaruforced #tagfile;
deletefile $tagfile;
endmacro;
endmacro;
endmacro;
endmacro;
|
|