目ずらし記事

mezalaのブログ

実体参照生成・改訂

めずらしきこと。
実際に使ってみたらバグバグだったので改訂した。

= Entity.def v0.20 = by H_ear
#if 0
実体参照変換(ブロック範囲をランダムに変換)
使用目的は mailto:で指定したアドレスを収集されにくくするため
#endif
 * mad for vz!
1 ^\ "" ?.
        (mb-2)?{ &m("[!]mbモード確認.") . }
        (mr-$80)??{ &m("[!]mrモード確認.") . }
        mp[, ps[=pa, #G ps], mp],
        (mb)?{ &m("[!]改行を含んでいます.") . }
        &SF(pa,' ') (r)?{ &m("[!]空白を含んでいます.") . }
        &s mb=2, #28 (xc>0)?#B mb-,     ;mbを指定するだけでは再現しない
        &Sn(pa) l=r, i-,                ;paのサイズが上限
        ax=$2C00, &i($21) rn=cx+dx,     ;時刻を乱数の種に
 :l     ; ---- main loop ----
        (ck)?{ &m("全角文字があったので停止しました.") >z }
        &r
        (r%2 && r%3)                    ;6〜7割方の確率で変換
                ?#d
                ?{ cd[, #g &?("&#%d;",0]) }
        (l>i++)?>l
 :z     ; ---- exit ----
        &d #] .
 *
[Variables]
        l       length
        i       counter
[Buffers]
        pa      as ps
[History]
2009/01/21 0.10 1st
2009/01/25 0.20 エラーチェックをそれなりに増やした
[Notes]
mbに代入するだけではブロックモードにならない
#61の窓内部でpsのサイズを越えると出力時に途中で切れる