LoginSignup
15
14

More than 5 years have passed since last update.

Hubotの正規表現を可視化する

Posted at

環境

  • 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はこちらから

正規表現で記載している行にカーソルを持って行くとこのように表示される
SS.png

文字だけで書かれているよりわかりやすい!

ちゃんと動くかローカルでテストしてみる。
※ローカルで動かすときは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> シ  いたけ一人前追加でーす。はいよろこんでー

これで、正規表現の確認も動かす前に確認できるようになるかなっと。。。

15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14