image

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

検索

最近のトラックバック

無料ブログはココログ

« libxml-ruby-0.9.9 March 5, 2009 | トップページ | ピックアップ:内定切りの次は試用期間切り、牛丼「すき家」のアルバイトは業務委託であり残業代は発生しない、etc... »

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  してある。

« libxml-ruby-0.9.9 March 5, 2009 | トップページ | ピックアップ:内定切りの次は試用期間切り、牛丼「すき家」のアルバイトは業務委託であり残業代は発生しない、etc... »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/184434/44282173

この記事へのトラックバック一覧です: ruby で DSL:

« libxml-ruby-0.9.9 March 5, 2009 | トップページ | ピックアップ:内定切りの次は試用期間切り、牛丼「すき家」のアルバイトは業務委託であり残業代は発生しない、etc... »

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 あわせて読みたい

リンク