Sha256: 3bd908bf1818f111605172f5cbdc08dd5f68cb748e72076cd0d2ff6855cfb2a5

Contents?: true

Size: 949 Bytes

Versions: 6

Compression:

Stored size: 949 Bytes

Contents

module Marvin::IRC
  class Event
    attr_accessor :keys, :name, :raw_arguments, :prefix
    
    def initialize(name, *args)
      @name = name.to_sym
      @keys = args.flatten.map { |k| k.to_sym }
    end
    
    def to_hash
      return @hash_value unless @hash_value.blank?
      results = {}
      values = @raw_arguments.to_a
      last_index = @keys.size - 1
      @keys.each_with_index do |key, i|
        results[key] = (i == last_index ? values.join(" ").strip : values.shift)
      end
      results.merge!(@prefix.to_hash) unless @prefix.blank?
      @hash_value = results
    end
    
    def inspect
      "#<Marvin::IRC::Event name=#{@name} attributes=#{to_hash.inspect} >"
    end
    
    def to_event_name(prefix = nil)
      [prefix, @name].join("_").to_sym
    end
    
    def to_incoming_event_name
      to_event_name :incoming
    end
    
    def to_outgoing_event_name
      to_event_name :outgoing
    end
    
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
Sutto-marvin-0.8.0.0 lib/marvin/irc/event.rb
Sutto-marvin-0.8.0.1 lib/marvin/irc/event.rb
marvin-0.8.1 lib/marvin/irc/event.rb
marvin-0.8.0.2 lib/marvin/irc/event.rb
marvin-0.8.0.1 lib/marvin/irc/event.rb
marvin-0.8.0.0 lib/marvin/irc/event.rb