grepの結果を場合分け置換する
// ^<ul>があればrank++, </ul>があればrank--, <li>はrankだけ' 'を追加. gofiletop; #rank = 0; $temp = ""; searchdown "(<ul>|</ul>|<li>)", regular, nocasesense; //do whileの1回目 while(result){ $temp = gettext(seltopx, seltopy, selendx, selendy, 1); //選択範囲の取得。deleteで消すので範囲保持. if (strstr($temp, "<ul>") >= 0){ //分岐. #rank = #rank + 1; delete; } else if (strstr($temp, "</ul>") >= 0){ #rank = #rank - 1; delete; } else if (strstr($temp, "<li>") >= 0){ #i = 0; delete; insert "\n"; while (#i < #rank){ insert " "; #i = #i + 1; } } gofiletop; //逐一上まで戻る. searchdown "(<ul>|</ul>|<li>)", regular, nocasesense; //do whileの2回目以降. }
単に置換するだけならreplaceallfastを使えば早いのですが、HTMLのul階層構造を反映させて置換したい場合はulタグのランクを常に意識しなければならず、ランクによってliタグをどうするか決定しなければなりませんでした。
てこずった点は以下。久々だったので構文すら忘れていました。