Module: Miu::Readable

Defined in:
lib/miu/readable.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/miu/readable.rb', line 6

def self.included(base)
  base.class_eval do
    def read_with_packet
      parts = []
      loop do
        parts << read_without_packet
        break unless more_parts?
      end

      packet = Packet.load parts
      begin
        data = Miu::Utility.symbolize_keys(packet.data, true) rescue packet.data
        type = data[:type] rescue nil
        message_class = Miu::Messages.guess(type)
        packet.data = message_class.new data
        packet
      rescue => e
        raise MessageLoadError, e
      end
    end

    alias_method :read_without_packet, :read
    alias_method :read, :read_with_packet
  end

  base.send :include, ::Enumerable
end

Instance Method Details

#eachObject



34
35
36
37
38
39
40
41
42
# File 'lib/miu/readable.rb', line 34

def each
  if block_given?
    loop do
      yield read
    end
  end

  return self
end