« TagOverride | Home | MT関係のイベントに参加しました。 »

October 24, 2009

Re: [Perl]MT形式のエクスポート用に出力をエスケープする

MT形式のエクスポート用に出力をエスケープする - 刺身☆ブーメランのはてなダイアリー

そうか。MTのエクスポート形式って業界標準なのか。。。

エスケープ結果を復元するコードが無かったので自分で書こうとしたが、もとのコードだとエスケープ後のデリミタと同じパターン(-----<>など)が元の文字列に存在した時に、正確に復元できないという問題に気づいたが、あきらめて風呂に入っているうちに解決策を思いついた。
文字列中のすべての「-」のみの行を3倍とかに変更してしまえば、安全にエスケープでき、かつラウンドトリップ可能となるはずです。3倍なのは本来のデリミタ( '-' x 5 || '-' x 8 )と重複しないためで、彗星と直接の関係ありません。

実際には、後方互換性が必要になる(このエスケープ形式に対応していないインポーターでも違和感無く読み込めるのが理想)ので、実戦投入は無理でしょう。
元記事のほうでは、HTML表示した場合に見た目変化が無いように空タグっぽい<>を末尾に追加したのだと思うのですが、MTなんかでは最終的な出力先がHTMLとは限らないので、良く無い事が起こりそうな気もします。デリミタと重複する行の末尾にスペースを一個追加してしまう、というあたりが落としどころになるのでしょうか。

No TrackBacks

TrackBack URL: http://new.aklaswad.com/cgi-bin/mt/mt-tb.cgi/287

1 Comment

おー、GitHubのあれや、3倍ネタをコレのためでしたか。

Leave a comment

OpenID accepted here Learn more about OpenID

About this Entry

This page contains a single entry by aklaswad published on October 24, 2009 4:13 PM.

TagOverride was the previous entry in this blog.

MT関係のイベントに参加しました。 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.