/ 最近 .rdf 追記 編集 設定 本棚

脳log[20050517] 更新時に特別なことをしたいプラグインがあったので | Wikiスタイルでソースを引用した時に、えらく広範囲に打ち消し線が表示されて困ってるあなた(俺?)へ



2005年05月17日 (火)

[tDiary] 更新時に特別なことをしたいプラグインがあったので

class TDiaryUpdate < TDiaryAdmin
	def initialize( cgi, rhtml, conf )
		@title = conf.to_native( cgi.params['title'][0] )
		@body = conf.to_native( cgi.params['body'][0] )
		@hide = cgi.params['hide'][0] == 'true' ? true : false
		super
	end

protected
	def do_eval_rhtml( prefix )
		super
		@plugin.instance_eval { update_proc }
		@diary.eval_rhtml({'date_format'=>''}, PATH) rescue nil; # この行を追加
		anchor = @plugin.instance_eval( %Q[anchor "#{@diary.date.strftime('%Y%m%d')}"].untaint )
		clear_cache( /(latest|#{@date.strftime( '%Y%m' )})/ )
		raise ForceRedirect::new( "#{@conf.index}#{anchor}" )
	end
end

一行追加した。更新時の負荷増加なんて無問題でしょ。optが手抜きなのは気にしない方向で。

加えて、カテゴリを使った場合は update_procで category.rbによって section.bodyが評価されるので更にゴニョゴニョしないと「更新時に一度だけ実行」というわけにはいかない。

ここでハタと気付く。update_procでできるなら tdiary.rbをいじることないやん。category.rbの真似しよう。

 追記:2005-09-26

コレ(↓)。category.rbのより簡単なのは、category.rbでは Pluginクラスとは違うクラス(のインスタンス)の中で評価するために bindingを受け渡したりしてるから。

add_update_proc{
  diary = @diaries[@date.strftime('%Y%m%d')];
  diary.each_section do |s|
    apply_plugin(s.subtitle_to_html);
    apply_plugin(s.body_to_html);
  end
}

[tDiary] Wikiスタイルでソースを引用した時に、えらく広範囲に打ち消し線が表示されて困ってるあなた(俺?)へ

==

==

のように、プラグイン呼び出しを装って単なる文字列を埋め込むのがよろしかろう。

いやそれよりも整形済みテキストとして表示すれば。

See also...

listed by...