このエントリは Mobb/Repp Advent Calendar の十九日目です
マッチのパッシング
この機能は次のバージョンにおいて実装される予定です。
次のようなBotを作成し、「hello Mobb」というメッセージを送った場合、得られる結果は「Yo」です。
require 'mobb'
on /hello (\w+)/ do |name|
'Yo'
end
on 'hello Mobb' do
'Survival of the fittest'
end
これは、Mobbのパターンマッチは定義した順番にチェックされるので、最初の /hello (\w+)/ がすべての hello で始まるメッセージを吸収してしまい、次に定義されている ‘hello Mobb’ にマッチすることは決してありません。
この例は非常に極端な例ですが、特定のケースにおいてマッチングをパスしたいことは発生すると思われます。そのため、次のバージョンではpassキーワードが導入されます。
require 'mobb'
on /hello (\w+)/ do |name|
pass if name.start_with?('M')
'Yo'
end
on 'hello Mobb' do
'Survival of the fittest'
end
passキーワードは、呼び出されるとその場でブロックの評価を停止し、on/receive キーワードのマッチングを再開します。上のBotでは、nameがMで始まる場合は、 on /hello (\w+)/ のブロックを抜け、次の on ‘hello Mobb’ にマッチします。その結果、得られる返答は「Yo」ではなく「Survival of the fittest」になります。(もちろんこの例では、Mobb以外のMで始まる名前を送るとすべてのケースでなにも返答しなくなってしまいますが)
Next Mobb
年内リリースがんばります