lib/socrates/adapters/console.rb in socrates-0.1.16 vs lib/socrates/adapters/console.rb in socrates-0.1.17
- old
+ new
@@ -1,14 +1,15 @@
+require "socrates/adapters/adapter"
require "socrates/adapters/stubs"
module Socrates
module Adapters
class Console
+ include Socrates::Adapters::Adapter
include StubUserDirectory
CLIENT_ID = "CONSOLE"
- CHANNEL = "C1"
def initialize(name: "@socrates")
super()
@name = name
end
@@ -20,44 +21,25 @@
end
def channel_from(context: nil, user: nil)
raise ArgumentError, "Must provide one of :context or :user" if context.nil? && user.nil?
- CHANNEL
- end
-
- def send_message(session, message, send_now: false)
- raise ArgumentError, "Channel is required" unless session.channel.present?
-
- session.messages[session.channel] << message
- flush_session(session, channel: session.channel) if send_now
- end
-
- def send_direct_message(session, message, recipient)
- raise ArgumentError, "User is required" unless recipient.present?
-
- name =
- if recipient.respond_to?(:name)
- recipient.name
- elsif recipient.respond_to?(:id)
- recipient.id
- else
- recipient
- end
-
- session.messages[name] << message
- end
-
- def flush_session(session, channel: nil) # TODO: Dry this up? Session? Included module?
- session.messages.select { |c, _| channel.nil? || channel == c }.each do |c, messages|
- _send_message(c, messages.join("\n\n"))
- messages.clear
+ if context&.fetch(:channel).present?
+ context[:channel]
+ elsif user.present?
+ display_user(user)
+ else
+ "?"
end
end
private
- def _send_message(channel, message) # TODO: Underscored name?
+ def display_user(user)
+ (user&.name || user&.id || user)&.upcase
+ end
+
+ def send_message(channel, message)
puts "\n#{colorize(channel, "34;1")}: #{message}"
end
def colorize(str, color_code)
"\e[#{color_code}m#{str}\e[0m"