Class: P15ID::Message

Inherits:
Object
  • Object
show all
Defined in:
lib/p15id/message.rb

Constant Summary collapse

MESSAGE_START =
"\x05"
MESSAGE_END =
"\x0a"
MESSAGE_DESCRIPTION =
"CTR"
MD_SD_SEPARATOR =
"\x03"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeMessage

Returns a new instance of Message.



10
11
12
# File 'lib/p15id/message.rb', line 10

def initialize
  @segments = []
end

Instance Attribute Details

#segmentsObject (readonly)

Returns the value of attribute segments.



3
4
5
# File 'lib/p15id/message.rb', line 3

def segments
  @segments
end

Instance Method Details

#add_segment(segment) ⇒ Object



14
15
16
17
18
# File 'lib/p15id/message.rb', line 14

def add_segment(segment)
  return if @segments.any? { |s| s.segment == segment.segment }

  @segments << segment
end

#to_bytesObject



25
26
27
28
# File 'lib/p15id/message.rb', line 25

def to_bytes
  segments = @segments.map(&:to_bytes).join
  to_s(segments: segments, message_start: MESSAGE_START, message_end: MESSAGE_END, md_sd_separator: MD_SD_SEPARATOR)
end

#to_s(segments: nil, message_start: "{", message_end: "}", md_sd_separator: "#") ⇒ Object



20
21
22
23
# File 'lib/p15id/message.rb', line 20

def to_s(segments: nil, message_start: "{", message_end: "}", md_sd_separator: "#")
  segments ||= @segments.map(&:to_s).join
  "#{message_start}#{MESSAGE_DESCRIPTION}#{md_sd_separator}#{segments}#{message_end}"
end