top  Index  Search  Changes  RSS  Login

howm wiki - HowmRD Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

!!概要
howmのcome-fromリンク(のデフォルト)とRDのimportの書式が競合してしまう問題を解決するため、howm用にRDの書式を修正したものです。

従来のrd2と共存できるようになっています。

!!必要なもの
*rdtool 0.6.14あたりとそれが動く環境
*GNU patch

…たぶん。

!!パッチの当て方
#作業ディレクトリに /usr/local/bin/rd2 と /usr/local/lib/ruby/site-ruby/1.8/rd/rdblockparser.tab.rb をコピーする。
#このページの末尾にある howmrd2.patch.rb を作業ディレクトリに作成して、実行する。 howm-rd2 と howmrdblockparser.tab.rb が生成される。
#それぞれを適切な場所に配置をする。
## su権限がある場合は /usr/local/bin/howm-rd2 と /usr/local/lib/ruby/site-ruby/1.8/rd/howmrdblockparser.tab.rb に配置。
## su権限がない/使わない場合は、適当な場所に howm-rd2 と rd/howmrdblockparser.tab.rb を配置し(ex: ~/bin/howm-rd2 , ~/lib/rd/howmrdblockparser.tab.rb)、そして howm-rd2 の shebang に rd/howmrdblockparser.tab のパスを -I オプションで指定してください(ex: #!/usr/local/bin/ruby -I~/lib/)。

!!howm-rd2の使い方
importを利用したいときは、
<<<< header
としてください。それ以外には rd2 と使い方に変わりはありません。

!!その他
*テスト不足なので、問題があるかもしれません。作ったわりにはあんまり使っていないので。(^^;

*変則的なpatchでごめんなさい。特定ディレクトリのファイルをベースにしたり、それを別名でカレントに吐くやりかたがわからずこうなってしまいました。「diff/patchはこう使え!」というツッコミは特に歓迎です。

!!コメント

*2004-01-01 (木) 01:41:01 ''[[名無しさん]]'' : 孤立ページじゃもったいないっす。
*2004-01-01 (木) 10:48:41 ''[[名無しさん]]'' : thx。とりあえず2chに晒せばいいかなと放置してました(笑)
*2004-10-19 (火) 16:49:27 ''[[taku]]'' : 大変便利にhowmを使わせて頂いております。howm-rd2でコンバートしてみたのですが、((*hoge*))の強調がそのまま表示されてしまいます。環境はCYGWIN_NT-5.1 0967 1.5.11を使用しております。
*2004-10-19 (火) 23:18:40 ''[[名無しさん]]'' : howm-rd2 を書いた人じゃないんですけど, ((*hoge*)) にからむことはしてないような…. っていうか, 「((*hoge*))の強調がそのまま表示されてしまう」って具体的にはどういうことでしょう? 「howm-rd2 hoge.rd の出力が, <em>hoge</em> でなく○○となる」とかなら, hoge.rd の内容と○○とを書けば調べ(てもらい)やすいかも.
*2004-10-20 (水) 10:29:34 ''[[taku]]'' : - ブラウザで見た時に、<I>hoge</I>ではなく、ベタで((*hoge*))と表示されてしまうんです。
*2004-10-22 (金) 02:27:31 ''[[書いた人]]'' : verbatim だったりして :-) とりあえず素のRDtoolに("<<<"周りを調整した上で)食べさせてみて、問題が再現されるかを確認してください。
{{comment}}
----

!!howm-rd2.patch.rb

#!/usr/local/bin/ruby

def patch(new, patch)
   IO.popen("patch -b --output=#{new}", "w") do |io|
     io << patch
   end
end

def main
   @patchlist.each do |item|
     patch(item[:new], item[:patch])
   end
end

@patchlist = []
@patchlist << { :new => "./howm-rd2", :patch => <<'EOP' }
--- rd2 2003-03-08 21:45:07.000000000 +0900
+++ howm-rd2    2003-12-31 23:28:53.343515200 +0900
@@ -31,4 +31,14 @@
  require "rd/version"

+require "rd/howmrdblockparser.tab.rb"
+module RD
+  class Tree
+    def parse
+      parser = HowmRDParser.new
+      set_root(parser.parse(@src.to_a, self))
+    end
+  end
+end
+
  module Kconv
    NAME2CONST = {
EOP

@patchlist << { :new => "./howmrdblockparser.tab.rb", :patch => <<'EOP' }
--- rdblockparser.tab.rb 2003-09-05 09:17:00.000000000 +0900
+++ howmrdblockparser.tab.rb 2003-12-20 22:15:24.374804800 +0900
@@ -13,5 +13,5 @@
  module RD
  
-class RDParser < Racc::Parser
+class HowmRDParser < Racc::Parser
  
  module_eval <<'..end rd/rdblockparser.ry modeval..id420ca031b7', 'rd/rdblockparser.ry', 231
@@ -97,5 +97,5 @@
     tmpfile.print(part_out)
     tmpfile.close
-   subtree = parse_subtree(["=begin\n", "<<< #{basename}\n", "=end\n"])
+   subtree = parse_subtree(["=begin\n", "<<<< #{basename}\n", "=end\n"])
   end
   @in_part = nil
@@ -134,5 +134,5 @@
        return [:HEADLINE, [Headline.mark_to_level(mark), rest]]
      end
-  when /^<<<\s*(\S+)/
+  when /^<<<<\s*(\S+)/
      file = $1
      if_current_indent_equal("") do
EOP

main()
----