目ずらし記事

mezalaのブログ

対応する閉じタグに属性値をコメント

めずらしきこと。

今の所属に移ってから,自分でHTMLを書くよりも人の書いたHTMLを直すという機会が多くなった。Another HTML-lintで採点するとマイナス数百点なんてページを平気で公開していたりするので,直すのも一苦労である。いやむしろ一から自分で書いたほうがどれだけ楽だろうか。入れ子感覚がないので,開閉タグの関係がむちゃくちゃなのである。そんなとき自作の対応タグ検索マクロを使っていたのだが,閉じタグに属性をコメントするようにしたらずいぶん楽になった。

= TsuiTag v0.33 = by H_ear
#if 0
対応するhtmlタグを探す
シフト実行で対応する要素に付与されたclass/id属性値を閉じタグにコメント記入
#endif
 * mad for vz!
16 ^OT "T TsuiTag"
        ?. &s
        #M                              ;#0.32 起動位置マーク
        &Le(pu,wa+130) &#M(1)           ;save mark #1
        mp[, ps[, zh[-, rx[-, ew[+, ec[+, ly[, mb[-,
        n+,                             ;<n>est level
        k=ks&1,
        f-,                             ;#0.3 <f>属性フラグ
        (cd=='>')?#58
        (cd!='<')?{
                (-1){ #s (cd=='<'||lx<1)?{ (cd!='<')?>z } }     ;表示行内のみ
        }
        #28 (cp.1=='/')?c-, ?c+,        ;<c>ommand num
        #f ps=pr, #G
        (c && k)?&01                    ;#0.3 copy id/class
        &>
        (f && k)?{                      ;#0.3 write property
                lx[, #>
                &?("<!-- $$%s -->",t)
                &x(0])                  ;#0.31 cursor
        }
 :z     ; --- exit ---
        (n)?{ &#U(1) &m(19) }
        &Le(wa+130,pu)                  ;mark #1
        (mb])?#B
        ky], ec], ew], rx], zh], ps], mp],
        &d #] .
0:      ; --- 入れ子を数えて対応するタグを検索 ---
        ; ex. <UL>……<ul>……</UL>……</ul>
        ;  n+= +1      +1      -1       -1
        &o(#r+c)
        (r)??{
                #28
                &f(cp.-1,"</") (r==-1)?>^
                (r)?{ (cp.-2!='<')?>^ } ;確かに終了タグか?
                n+=(c*2-1)*(1-r*2),
                (n>0)?>^
        }
1:      ; ---- id/class属性値を取得 ---- #0.30-0.33
        mb-, &Sn(pr) (r){ #d }
        (cd!=' ')?.
        t=pn..-26,                      ;t: tmpbuf4(256)*
        #28 wa..19.2-,                  ;ラインバッファの文字列化
        &Sc(t,cp,255) #54               ;カーソル以降を複写
        &So(t,"class=")
        (r)?{ t=r+7, >p }
        &So(t,"id=")
        (r)?{ t=r+4, >p }
        .:p &SF(t,$22) (r)??. r.0-, f+,
 *
[Variables]
        n       <n>est level
        c       <c>ommand num
        f       <f>lag
        k       <k>s&1
        t       <t>mpbuf4 (addr./passing)
[Buffers]
        pr      as ps
        (pa     as ps) #0.32//
        tmpbuf4 copy lbuf
        pu      as wa+130
[History]
1998/11/13 0.10 1st:VWXのOR検索版:VWXのバグで使い物にならなかった
2003/08/19 0.20 OR検索呪縛を解きネストに対応
2009/02/23 0.30 シフト実行時閉じタグ検索でid/class属性値をコメント書込み
2009/02/24 0.31 コメント書込み後のカーソル位置調整(不完全:行内桁位置を想定)
2009/02/24 0.32 起動位置をマークしておくことにした
2009/02/24 0.33 id/class属性値のメモリ上取得に伴いpaからtmpbuf4へ変更
[Notes]
こんなふうにコメントを付ける
<div class="hoge">
<div id="foo">
</div><!-- $foo -->
</div><!-- $hoge -->