※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

Ferrari

Ferrari は Ruleby DSL の文法のひとつです。 ‘rule’ メソッドの4つのパラメータが定義しています:

  1. ルールを一意に識別する任意のSymbol
  2. (優先度のような)ルールの属性を含んだ任意のHash
  3. たくさんのArrayのパターン(“left hand side”)
  4. ルールが満たされているときに実行されるブロック(“right hand side”)

この例ではこの文法を使います。:

rule :hello, [Message, :m, method.status == :HELLO] do |context|
  puts context[:m].message
end

このルールでは、:HELLO と同じ状態のメッセージオブジェクトの存在を探すパターンを定義しています。 ブロックパラメータは、このパターンに一致するオブジェクトを順に実行します。=The Left Hand Side= この例で最も重要な箇所は、ルールの左側で表された Array パラメータの内容です。それぞれの配列はクラスタイプで始まり、任意のハンドルはオブジェクトをフォローしています。(ブロックで参照をつけることが出来るように)

Next, the Array contains any number of conditions that must be true in order for the pattern to match. The example above contains only one condition: 
method.status == :HELLO