at posts/single.html

tDiary の Wiki スタイル (HikiDoc) で複数行の整形済みテキスト

コードを貼りつけるのが面倒だ - Hacking is believing@itoshi.tv (2006-05-04)」より。

Wikiスタイルの場合、コードを貼り付けるには行頭に空白文字を一文字入れる。しかし、ある程度長いコードになると手動でインデントするのが面倒くさい。

確かに。 ViVi で編集するときは一括置換で空白を入れているけど、面倒なのは面倒。

実は、最新版の tDiary の Wiki スタイル(HikiDoc 導入後なので2.1.3か2.1.4あたり?)では、長い行のテキストを簡単に整形済みテキストとして表示できるようになっている。 開始行に「<<<」と書いて、終了行に「>>>」と書けばいい。

例えば、以下のように書くと…

<<<
def parse_pre( text )
  ret = text
  ret.gsub!( /^#{MULTI_PRE_OPEN_RE}$(.*?)^#{MULTI_PRE_CLOSE_RE}$/m ) do |str|
    "\n" + store_block( "<pre>%s</pre>" % restore_pre( $1 ) ) + "\n\n"
  end
  ret.gsub!( /(?:#{PRE_RE}.*\n?)+/ ) do |str|
    str.chomp!
    str.gsub!( PRE_RE, '' )
    "\n" + store_block( "<pre>\n%s\n</pre>" % restore_pre( str ) ) + "\n\n"
  end
  ret
end
>>>

以下のように表示される。

def parse_pre( text )
  ret = text
  ret.gsub!( /^#{MULTI_PRE_OPEN_RE}$(.*?)^#{MULTI_PRE_CLOSE_RE}$/m ) do |str|
    "\n" + store_block( "<pre>%s</pre>" % restore_pre( $1 ) ) + "\n\n"
  end
  ret.gsub!( /(?:#{PRE_RE}.*\n?)+/ ) do |str|
    str.chomp!
    str.gsub!( PRE_RE, '' )
    "\n" + store_block( "<pre>\n%s\n</pre>" % restore_pre( str ) ) + "\n\n"
  end
  ret
end

※ このソースは HikiDoc からコピーさせてもらいました。

Rails の勉強で HikiDoc を使ったときに偶然見つけたもので、 HikiDoc の記法にも載っていないし、複数行 pre のマークアップはあれでいいのかという開発者の声もある。 公式にはサポートされていない記法っぽいので、突然変わる危険性はあるなぁ…。

関連する日記