hikiのattachプラグイン

tDiaryのimageプラグインを無理やりhikiに入れて使ってたのだが、hikiのattachプラグインでほぼ同じことができることを発見。早く気づけ。んで、これまたtDiaryでやったのと同じようにサイズとfloatが指定できるように改造。

--- save/attach.rb	Sat Jun 26 23:11:24 2004
+++ attach.rb	Mon Mar 14 18:51:20 2005
@@ -75,8 +75,13 @@
s << %Q!#{file_name.escapeHTML}</a>!
end

-def attach_image_anchor(file_name, page=@page)
-  s =  %Q!<img alt="#{file_name.escapeHTML}" src="!
+def attach_image_anchor(file_name, page=@page, width=nil, height=nil, place=nil)
+  if (width && height)
+    imgsize = %Q!width="#{width}" height="#{height}"!
+  else
+    imgsize = ''
+  end
+  s =  %Q!<img class="#{place}" alt="#{file_name.escapeHTML}" #{imgsize} src="!
s << %Q!#{$cgi_name}#{cmdstr('plugin', "plugin=attach_download;p=#{page.escape};file_name=#{file_name.escape}")}">!
s << %Q!</img>!
end
@@ -149,11 +154,11 @@
end
end

-def attach_view(file_name, page=@page)
+def attach_view(file_name, width=nil, height=nil, place=nil, page=@page)
if file_name =~ /\.(txt|rd|rb|c|pl|py|sh|java|html|htm|css|xml|xsl)\z/i
attach_src(file_name, page)
elsif file_name =~ /\.(jpeg|jpg|png|gif|bmp)\z/i
-    attach_image_anchor(file_name, page)
+    attach_image_anchor(file_name, page, width, height, place)
end
end

attach_viewの"page=@page"という引数は、省略したら現在のページになるので、@pageに現在のページ名が入ってると思うのだが、

{{attach_view(xxx.gif,,80,60)}}

というように指定するとページ名前がnilになってしまって動作しない。仕方ないので、オリジナルとの互換性がなくなってしまうが、

{{atach_view(filename,width,height,place,page)}}

というsyntaxにした。