image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« 2009-03-07 | トップページ | 2009-03-09 »

2009-03-08

2009-03-08

ruby で DSL

- http://www.infoq.com/jp/articles/properties-metaprogramming
> InfoQ: メタプログラミングを使ってRubyにプロパティを追加する

この記事では、最終的なコードは示されていないが、
次の記事では、(最終的な実装  + アルファ機能) のコード例が示されている。

- http://electricsheep.blogspot.com/2007/04/metaprogramming-and-dsl-resources.html
> dreaming of electric sheep: Metaprogramming and DSL Resources?

property の設定変更のリスナー設定だけでなく、設定できる値の範囲設定をしている。素晴らしい!

ruby, ruby1.9, jruby いずれでも動作する。

property  foo に対して add_foo_listener() をよび出さなかった場合に
実行時にエラーが発生したので、次のように修正をした。

      def fire_event_for(sym, arg)
        @listener ||= { }       // 追加
        @listener[sym] ||= [] // 追加
        @listener[sym].each { |l| l.call(arg) }
      end

もっとよい修正法がある気もするが。
(追加したコードが definemethod("add_#{sym_listener)
  にあるものと重複してしまっているので...)

http://svn.sourceforge.jp/view/trunk/Edinet/tools/dsl/?root=ruby-xbrl
に 変更を加えたソースコードを commit  してある。

« 2009-03-07 | トップページ | 2009-03-09 »

mokuji

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク