Sha256: 1b7ed194517508de2f35bb8a8d277031804154c3a4d6e81591c2f0c09da6e19b

Contents?: true

Size: 1.11 KB

Versions: 10

Compression:

Stored size: 1.11 KB

Contents

require "socrates/adapters/adapter"
require "socrates/adapters/stubs"

module Socrates
  module Adapters
    class Console
      include Socrates::Adapters::Adapter
      include StubUserDirectory

      CLIENT_ID = "CONSOLE"

      def initialize(name: "@socrates")
        super()
        @name = name
      end

      def client_id_from(context: nil, user: nil)
        raise ArgumentError, "Must provide one of :context or :user" if context.nil? && user.nil?

        CLIENT_ID
      end

      def channel_from(context: nil, user: nil)
        raise ArgumentError, "Must provide one of :context or :user" if context.nil? && user.nil?

        if context&.fetch(:channel).present?
          context[:channel]
        elsif user.present?
          display_user(user)
        else
          "?"
        end
      end

      private

      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"
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
socrates-0.1.26 lib/socrates/adapters/console.rb
socrates-0.1.25 lib/socrates/adapters/console.rb
socrates-0.1.24 lib/socrates/adapters/console.rb
socrates-0.1.23 lib/socrates/adapters/console.rb
socrates-0.1.22 lib/socrates/adapters/console.rb
socrates-0.1.21 lib/socrates/adapters/console.rb
socrates-0.1.20 lib/socrates/adapters/console.rb
socrates-0.1.19 lib/socrates/adapters/console.rb
socrates-0.1.18 lib/socrates/adapters/console.rb
socrates-0.1.17 lib/socrates/adapters/console.rb