jasagiri @ ウィキ
rulebyDSL-ferrari
最終更新:
jasagiri
-
view
Ferrari
Ferrari は Ruleby DSL の文法のひとつです。 ‘rule’ メソッドの4つのパラメータが定義しています:
- ルールを一意に識別する任意のSymbol
- (優先度のような)ルールの属性を含んだ任意のHash
- たくさんのArrayのパターン(“left hand side”)
- ルールが満たされているときに実行されるブロック(“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