2013年11月14日

EmEditorマクロ・brタグ挿入のリスト

 先の記事で書いた、行末にbrタグを付けるマクロのプログラムリスト。
 解説はこちら。
EmEditorマクロ・html文書にbrタグ挿入

 この記事も含めて、まとめはこちらLink

// 全ての改行に<br />追加

// 文書一括置換定義
function AllRep(SWord , RWord) {
    return document.selection.Replace( SWord , RWord
        , eeReplaceAll | eeFindReplaceRegExp );
}
// 範囲一括置換定義
function SelRep(SWord , RWord) {
    return document.selection.Replace( SWord , RWord
        , eeReplaceSelOnly | eeFindReplaceRegExp | eeReplaceAll );
}
// 文字列検索の定義
function FWord( SWord ) {
    if( document.selection.Find( SWord
        , eeFindNext | eeFindReplaceRegExp) ){  // 文字があれば
        return document.selection.
            GetActivePointY( eePosLogical );    // Y位置を返す
    } else {                                    // 無ければ
        return -1;                              // -1を返す
    }
}
// タグ範囲内置換の定義
function TagRep(SWord , RWord) {
    document.selection.StartOfDocument(false);  // 先頭に移動
    while( 1 ) {                   // ループ定義
        YStart = FWord( TopWord ); // 開始位置検索
        if( YStart < 0 ) break;    // 文字が無ければループ解除
        YEnd = FWord( EndWord );   // 終了位置検索
        if( YEnd < 0 ) break;      // 文字が無ければループ解除
        document.selection.SetActivePoint
            ( eePosLogical , 1 , YStart , false ); // 行の先頭
        document.selection.SetActivePoint
            ( eePosLogical , 1 , YEnd+1 , true );  // 範囲指定
        SelRep( BrTag + "\\n" , "\\n"); // タグ削除
        document.selection.Collapse();  // 範囲選択解除
    }
}
BrTag = "<br />";               // brタグ指定
AllRep( "\\n" , "<br />\\n" );  // 改行全てに<br />追加

NotTag = new Array(             // 除外タグ指定
    "html" ,"head" ,"body" ,"title" ,"meta"
    ,"div" ,"p"
    ,"table" ,"caption" ,"th" ,"tr" ,"td"
    ,"ul" ,"li"
    ,"hr" ,"br"
    ,"blockquote" ,"fieldset" ,"legend"
    ,"/pre"
    ,"/h[1-6]"
    ,"/script"
    ,",<!--,-->"
);
for(i=0; i<NotTag.length; i++) {          // タグの個数分ループ
    switch ( NotTag[i].slice(0,1) ){      // 1文字目の内容で分岐
        case "/":                         // タグ範囲内(改行含)
            Word = NotTag[i].slice(1);    // 2文字目以降を取得
            TopWord = "< *" + Word + ".*?>";
            EndWord = "<[ /]*" + Word + " *>";
            TagRep();
            break;
        case ",":                         // タグ以外の範囲
            Word = NotTag[i].split(",");  // ,で区切った文字を分割
            TopWord = Word[1];
            EndWord = Word[2];
            TagRep();
            break;
        default:                          // それ以外のタグ範囲
            AllRep(
                "(<[ /]*" + NotTag[i] + ".*?>)" + BrTag + "\\n"
                , "\\1\\n"
            );
        break;
    }
}
document.selection.Collapse();              // 範囲選択解除
document.HighlightFind=false;               // 検索強調解除
document.selection.StartOfDocument(false);  // 先頭に戻る



タグ:EmEditor

posted by 司隆 at 21:07 | Comment(0) | Computer
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

×

この広告は180日以上新しい記事の投稿がないブログに表示されております。