Sha256: 81a527eccfa4b9a486e10efb479b661bb66d56b2c56eca3ebcaf7b0c791fbbe8

Contents?: true

Size: 736 Bytes

Versions: 11

Compression:

Stored size: 736 Bytes

Contents

class DcmBuffer
  attr_reader :buffer, :header, :constructor
  def initialize
    @constructor = nil
    @header      = :pre
    @buffer      = []
  end

  def start!(constructor, buffer)
    fail "Nested parameter" unless self.buffer.empty?
    fail "Missing DCM header" if self.header == :pre

    @header      = :done
    @constructor = constructor
    @buffer      = buffer
  end

  def finish!(line)
    fail "Unexpected END" if constructor.nil?
    append!(line)

    constructor.from_dcm(buffer).tap { reset! }
  end

  def reset!
    @constructor = nil
    @buffer      = []
  end

  def header_seen!
    @header = :after
  end

  def append!(line)
    fail "No label started" if constructor.nil?

    @buffer << line
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
automotive-ecu-0.1.10 lib/ecu/interfaces/dcm/buffer.rb
automotive-ecu-0.1.9 lib/ecu/interfaces/dcm/buffer.rb
automotive-ecu-0.1.8 lib/ecu/interfaces/dcm/buffer.rb
automotive-ecu-0.1.7 lib/ecu/interfaces/dcm/buffer.rb
automotive-ecu-0.1.6 lib/ecu/interfaces/dcm/buffer.rb
automotive-ecu-0.1.5 lib/ecu/interfaces/dcm/buffer.rb
automotive-ecu-0.1.4 lib/ecu/interfaces/dcm/buffer.rb
automotive-ecu-0.1.3 lib/ecu/interfaces/dcm/buffer.rb
automotive-ecu-0.1.2 lib/ecu/interfaces/dcm/buffer.rb
automotive-ecu-0.1.1 lib/ecu/interfaces/dcm/buffer.rb
automotive-ecu-0.1.0 lib/ecu/interfaces/dcm/buffer.rb