Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

環境

  • 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> シ  いたけ一人前追加でーす。はいよろこんでー

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away