FGALDC 14 /RE:07086 RE^4:HTM2TXT.DEFへの葬送  こんにちは、文太 さん BROWSER.DEF は、どんなに完成度が低かろうとも、私にはあまり不満がないので、 文太さんの御意見を取り入れる事はあっても、自発的な改良はあまりする気はな かったりしています。 ところが、HTM2TXT.DEF の方は、いろいろと不満があるので、もうちょっとなん とかならんか、と思っています。 どこが不満かというと、余分な改行がつくとか、変換結果にスペースが多い、な んて言うのもありますが、私にとって一番の不満は、まず大きなファイルに対し ては著しく遅いという事。 ではマクロの中のどこで一番時間がかかっているかというと、&m で出力されるメ ッセージの間隔からして、たぶん改行を削除する部分でしょう。 でも、軽快なVzだから気にならないとはいえ、タグ削除などで一括置換を何回 もやっているので、内部的には、テキストの最初から最後までをなめるという事 を何回もやっているはずです。という事は、処理に要する時間はファイルのサイ ズと一括置換を行う回数の積に比例して増えていくわけです。 逆にいえば、テキストの最初から最後までを1回なめるだけにすれば、処理時間 は純粋にテキストのサイズだけに比例するようになり、すこしは高速化もはかれ るかもしれません。 ということで、このアイディアに沿って、一つマクロをでっち上げてみました。 ====htm2text.def==== ■html 文書整形 ■vwx 常駐 * M 1 ^V "htm2text.def" ?. &s &#M(4) mb-,ew[-,ec[+,zh[-,ps[=pw,mp[,Ei[-,ux+, mr255, #N "C:NUL" #m ;←手抜き #W :A (cd=='<')?{ #d #G &So(ps,"/")(r==ps)?{&10} &So(ps,"BR")(r==ps)?{#W #m b=0,#W} ;タグ比較部分、これもひどい :B (cd!='>')?{#d (r)??>B} >D } (cd=='&')?{ #d #G &SO(ps,"quot")(r==ps)?{#W &?("&") b='&',#W} &SO(ps,"lt")(r==ps)?{#W &?("<") b='<',#W} :C (cd!=';')?{#d (r)??>C} >D } a=cd,(a==10||a==13)?a=' ', (a==' ' && b==' ')?>D #W &?("%c",a) #W b=a, ;←ひどいなぁ(^^; :D #d (r)??>A &d ux-,Ei],mp],ps],zh],ec],ew],mb-, 10: #d #G &So(ps,"P")(r==ps)?{#W #m b=0,#W} :X (cd!='>')?{#d (r)??>X} * === 私としては、ヒストリーバッファのポインタ ps なんていうのを使っているので かなりのハイテクマクロだと思っていますのですが、皆さんにとっては思いっき りローテクなんでしょうな。 それに、試してみたけど、実行速度はあんまり早くはなかったなぁ。                                 としき