|
|
- module SlackMathbot
- module Hooks
- module Message
- extend Base
-
- def message(data)
- data = Hashie::Mash.new(data)
- bot_name, command, arguments = parse_command(data.text)
- return unless bot_name == SlackMathbot.config.user
- klass = command_to_class(command || 'Default')
- klass.call data, command, arguments
- end
-
- private
-
- def parse_command(text)
- return unless text
- text = '= ' + text[1..text.length] if text[0] == '='
- parts = text.split.reject(&:blank?)
- if parts && parts[0] == '='
- parts[0] = SlackMathbot.config.user
- parts.insert 1, 'calculate'
- end
- [parts.first.downcase, parts[1].try(:downcase), parts[2..parts.length]] if parts && parts.any?
- end
-
- def command_to_class(command)
- klass = "SlackMathbot::Commands::#{command.titleize}".constantize rescue nil
- klass || SlackMathbot::Commands::Unknown
- end
- end
- end
- end
|