環境
- hubot 2.19.0
- Atom 1.8.0
正規表現を書いてみる
nekobot.coffee
# scripts/nekobot.coffee
#Commands:
# msg - Return a message msg
#
module.exports = (robot) ->
robot.hear /(.*)$/i, (msg) ->
room = msg.envelope.room
text = msg.message.text
text_en = encodeURIComponent text
if room == "test"
msg.send room, "#{text} "
前回書いたとりあえず全てに反応するrobot.hear /(.*)$/i, (msg) ->
くらいなら可視化しなくても問題はない。。。
しかし皆がSlackでふざけすぎた結果がコレだ
nekobot.coffee
# scripts/nekobot.coffee
#Commands:
# しいたけ - Return a message しいたけ一人前追加でーす。はいよろこんでー
#
module.exports = (robot) ->
robot.hear /(shiitake|([C椎]|[しシ]\s*([いイぃィー]))\s*([たタ]\s*[けケ]|茸)|Shiitake\s*mushrooms|เห็ดหอม)/i, (msg) ->
room = msg.envelope.room
if room == "Shell"
text = msg.match[1]
msg.send "#{text}一人前追加でーす。はいよろこんでー"
「しいたけ」だけに反応する要求が、次第に英語やらタイ語まで。。。
ぱっとみだと何の発言に対して反応するのかがわかりにくい
本題 正規表現見える化する
Atomにちょうどいいpackageがあった。それがregex-railroad-diagram
だ
さっそくinstallして使ってみる
regex-railroad-diagramはこちらから
正規表現で記載している行にカーソルを持って行くとこのように表示される
文字だけで書かれているよりわかりやすい!
ちゃんと動くかローカルでテストしてみる。
※ローカルで動かすときはroom == "Shell"
にするとちゃんと返してくれる
$ bin/hubot
nekobot> [Tue Jul 12 2016 21:26:50 GMT+0900 (JST)] INFO hubot-redis-brain: Using default redis on localhost:6379
nekobot>
nekobot> siitake
nekobot> しいたけ
nekobot> しいたけ一人前追加でーす。はいよろこんでー
nekobot> shiitake
nekobot> shiitake一人前追加でーす。はいよろこんでー
nekobot> し い た け
nekobot> し い た け一人前追加でーす。はいよろこんでー
nekobot> シ いたけ
nekobot> シ いたけ一人前追加でーす。はいよろこんでー
これで、正規表現の確認も動かす前に確認できるようになるかなっと。。。