intel_hex 0.5.5 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5f4dfc549e66964b205d64f063f38c1dc091e8bfc92755076c9f267d72f50422
4
- data.tar.gz: 87e987fd8decf8520c5648ea524d0e79da09c0950a8713c887e8afc66ece629c
3
+ metadata.gz: 7e9b3e1ac296dc24200085c8caf43a92b54992dcc7ed004fd9d161ebacdfe110
4
+ data.tar.gz: e326ec82a051e30d46854937a512eded7aae47e3457611340c0c849a1e968c97
5
5
  SHA512:
6
- metadata.gz: ec5dd2ac67f7387f4602f2806633f0a26e717ed9a27b35f0ac01baee8a70856a485cbd63fb6a597841b0c29c14653d50daf8c1bb5a225bbd03d2106b73b65317
7
- data.tar.gz: cfdace7c69d4f52cea5728b9d38851c6f0da2dc8f6e6e0669d05f99829296c17668e6fb0298d69b38673d5197c2c23a2205500e405a94cdce30b27b9efc2d819
6
+ metadata.gz: 825b4a4487c619711af73b6e3c33502dd834ebf4eb8c5a4f7fae2699035c0921cdc94319a6d5cb6211ab6c4bf0919f9a4a046d6222d819d4271e58c1f3557380
7
+ data.tar.gz: 6431fcd752fa749e005a118a64249b880fdd79f175c75d075d9809327a57488391960937a009fe5e7cbaa1d1ad7e5132686498596d411d84ab48dfeee1947a7b
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  # An Intel hex file parser, for Ruby
2
2
 
3
3
  [![rspec test status](https://github.com/jeremycole/intel_hex/actions/workflows/rspec.yml/badge.svg)](https://github.com/jeremycole/intel_hex/actions/workflows/rspec.yml)
4
+ [![rubocop style check status](https://github.com/jeremycole/intel_hex/actions/workflows/rubocop.yml/badge.svg)](https://github.com/jeremycole/intel_hex/actions/workflows/rubocop.yml)
4
5
 
5
6
  See the [Wikipedia page on Intel HEX](https://en.wikipedia.org/wiki/Intel_HEX).
data/bin/intel_hex_reader CHANGED
@@ -1,36 +1,37 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'optparse'
5
- require 'intel_hex'
6
- require 'pp'
4
+ require "optparse"
5
+ require "intel_hex"
7
6
 
8
7
  @options = {
9
8
  file: nil,
10
9
  }
11
10
 
12
11
  OptionParser.new do |opts|
13
- opts.on('--help', 'Print this help.') do
12
+ opts.on("--help", "Print this help.") do
14
13
  puts
15
14
  puts opts
16
15
  puts
17
16
  exit
18
17
  end
19
- opts.on('-f', '--filename=FILE', 'Load the specified file.') do |o|
18
+ opts.on("-f", "--filename=FILE", "Load the specified file.") do |o|
20
19
  @options[:file] = o
21
20
  end
22
21
  end.parse!
23
22
 
24
- raise 'No file specified' unless @options[:file]
23
+ raise "No file specified" unless @options[:file]
25
24
 
26
25
  intel_hex_file = IntelHex::FileReader.new(@options[:file])
27
26
 
28
27
  intel_hex_file.each_record do |record|
29
- puts 'Record type=%-4s offset=%-4d length=%-4d checksum=%-4d %s' % [
28
+ puts format(
29
+ "Record type=%-4s offset=%-4d length=%-4d checksum=%-4d %s%s",
30
30
  record.type,
31
31
  record.offset,
32
32
  record.length,
33
33
  record.checksum,
34
- record.value_s,
35
- ]
34
+ record.value ? "#{record.type}=" : "",
35
+ record.value_s
36
+ )
36
37
  end
@@ -6,16 +6,12 @@ module IntelHex
6
6
  @filename = filename
7
7
  @address_base = 0
8
8
  @address_mask = 0xffff
9
- @esa = 0
10
- @ssa = 0
11
- @ela = 0
12
- @sla = 0
13
9
  end
14
10
 
15
11
  def each_record
16
- return to_enum(:each_record) unless block_given?
12
+ return enum_for(:each_record) unless block_given?
17
13
 
18
- file = File.open(@filename, 'r')
14
+ file = File.open(@filename, "r")
19
15
 
20
16
  begin
21
17
  file.each_line do |line|
@@ -29,22 +25,20 @@ module IntelHex
29
25
  end
30
26
 
31
27
  def each_byte_with_address
32
- return to_enum(:each_byte_with_address) unless block_given?
28
+ return enum_for(:each_byte_with_address) unless block_given?
33
29
 
34
30
  each_record do |record|
35
31
  case record.type
36
32
  when :data
37
33
  record.each_byte_with_address do |byte, offset|
38
- yield byte, (@address_base + offset) & @address_mask
34
+ yield byte, (@address_base + (offset & 0xffff)) & @address_mask
39
35
  end
40
36
  when :esa
41
- @esa = record.esa
42
- @address_base = @esa << 4 # bits 4..19 of address
43
- @address_mask = 0xfffff # 20 bit address size
37
+ @address_base = record.value << 4 # bits 4..19 of address
38
+ @address_mask = 0xfffff # 20 bit address size
44
39
  when :ela
45
- @ela = record.ela
46
- @address_base = @ela << 16 # bits 16..31 of address
47
- @address_mask = 0xffffffff # 32 bit address size
40
+ @address_base = record.value << 16 # bits 16..31 of address
41
+ @address_mask = 0xffffffff # 32 bit address size
48
42
  end
49
43
  end
50
44
 
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module IntelHex
4
+ class Record
5
+ class Data < Record
6
+ def self.type_id
7
+ 0
8
+ end
9
+
10
+ def self.type_name
11
+ :data
12
+ end
13
+
14
+ def self.type_data_length
15
+ (1..255)
16
+ end
17
+
18
+ def value
19
+ data
20
+ end
21
+
22
+ def value_s
23
+ data_string = data.map { |b| format("%02x", b) }.join(" ")
24
+
25
+ "[#{data_string}]"
26
+ end
27
+ end
28
+
29
+ def self.data(data = [])
30
+ record = Data.new
31
+ record.data = data
32
+ record
33
+ end
34
+
35
+ register_type(Data)
36
+ end
37
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "intel_hex/record/value_record_uint16"
4
+
5
+ module IntelHex
6
+ class Record
7
+ class Ela < ValueRecordUint16
8
+ def self.type_id
9
+ 4
10
+ end
11
+
12
+ def self.type_name
13
+ :ela
14
+ end
15
+ end
16
+
17
+ def self.ela(value = nil)
18
+ record = Ela.new
19
+ record.value = value if value
20
+ record
21
+ end
22
+
23
+ register_type(Ela)
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module IntelHex
4
+ class Record
5
+ class Eof < Record
6
+ def self.type_id
7
+ 1
8
+ end
9
+
10
+ def self.type_name
11
+ :eof
12
+ end
13
+
14
+ def self.type_data_length
15
+ 0
16
+ end
17
+ end
18
+
19
+ def self.eof
20
+ Eof.new
21
+ end
22
+
23
+ register_type(Eof)
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "intel_hex/record/value_record_uint16"
4
+
5
+ module IntelHex
6
+ class Record
7
+ class Esa < ValueRecordUint16
8
+ def self.type_id
9
+ 2
10
+ end
11
+
12
+ def self.type_name
13
+ :esa
14
+ end
15
+ end
16
+
17
+ def self.esa(value = nil)
18
+ record = Esa.new
19
+ record.value = value if value
20
+ record
21
+ end
22
+
23
+ register_type(Esa)
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "intel_hex/record/value_record_uint32"
4
+
5
+ module IntelHex
6
+ class Record
7
+ class Sla < ValueRecordUint32
8
+ def self.type_id
9
+ 5
10
+ end
11
+
12
+ def self.type_name
13
+ :sla
14
+ end
15
+ end
16
+
17
+ def self.sla(value = nil)
18
+ record = Sla.new
19
+ record.value = value if value
20
+ record
21
+ end
22
+
23
+ register_type(Sla)
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "intel_hex/record/value_record_uint32"
4
+
5
+ module IntelHex
6
+ class Record
7
+ class Ssa < ValueRecordUint32
8
+ def self.type_id
9
+ 3
10
+ end
11
+
12
+ def self.type_name
13
+ :ssa
14
+ end
15
+ end
16
+
17
+ def self.ssa(value = nil)
18
+ record = Ssa.new
19
+ record.value = value if value
20
+ record
21
+ end
22
+
23
+ register_type(Ssa)
24
+ end
25
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module IntelHex
4
+ class Record
5
+ class ValueRecordUint16 < Record
6
+ def self.type_data_length
7
+ 2
8
+ end
9
+
10
+ # Retrieve the 16-bit unsigned integer value from the record.
11
+ def value
12
+ (data[0] << 8) | data[1]
13
+ end
14
+
15
+ # Store a 32-bit unsigned integer value in the record.
16
+ def value=(value)
17
+ data[0..1] = [
18
+ (value & 0xff00) >> 8,
19
+ value & 0x00ff,
20
+ ]
21
+ @length = data.size
22
+ @checksum = recalculate_checksum
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module IntelHex
4
+ class Record
5
+ class ValueRecordUint32 < Record
6
+ def self.type_data_length
7
+ 4
8
+ end
9
+
10
+ # Retrieve the 32-bit unsigned integer value from the record.
11
+ def value
12
+ (data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3]
13
+ end
14
+
15
+ # Store a 32-bit unsigned integer value in the record.
16
+ def value=(value)
17
+ data[0..3] = [
18
+ (value & 0xff000000) >> 24,
19
+ (value & 0x00ff0000) >> 16,
20
+ (value & 0x0000ff00) >> 8,
21
+ value & 0x000000ff,
22
+ ]
23
+ @length = data.size
24
+ @checksum = recalculate_checksum
25
+ end
26
+ end
27
+ end
28
+ end
@@ -16,78 +16,62 @@ module IntelHex
16
16
  class InvalidChecksumError < ValidationError; end
17
17
 
18
18
  class Record
19
- TYPES = %i[
20
- data
21
- eof
22
- esa
23
- ssa
24
- ela
25
- sla
26
- ].freeze
19
+ class << self
20
+ def register_type(type)
21
+ @type_by_id ||= {}
22
+ @type_by_name ||= {}
27
23
 
28
- TYPE_MAP = TYPES.each_with_index.each_with_object({}) { |(k, i), h| h[k] = i }
24
+ raise "Type name #{type.type_name} is not a symbol" unless type.type_name.is_a?(Symbol)
25
+ raise "Type name #{type.type_name} redefined" if @type_by_name.include?(type.type_name)
26
+ raise "Type id #{type.type_id} redefined" if @type_by_id.include?(type.type_id)
29
27
 
30
- TYPE_DATA_LENGTH = {
31
- data: (1..255),
32
- eof: 0,
33
- esa: 2,
34
- ssa: 4,
35
- ela: 2,
36
- sla: 4,
37
- }.freeze
28
+ @type_by_id[type.type_id] = @type_by_name[type.type_name] = type
29
+ end
38
30
 
39
- def self.parse(line)
40
- raise MisformattedFileError, 'Expected \':\' at start of line' unless line[0] == ':'
41
- raise MisformattedFileError, 'Line length incorrect' unless line.size >= (1 + 2 + 4 + 2)
31
+ attr_reader :type_by_id, :type_by_name
42
32
 
43
- length = line[1..2].to_i(16)
44
- data_end = (9 + length * 2)
33
+ def type_id
34
+ raise NotImplementedError
35
+ end
45
36
 
46
- offset = line[3..6].to_i(16)
47
- type = TYPES[line[7..8].to_i(16)]
48
- data = line[9...data_end].chars.each_slice(2).map { |a| a.join.to_i(16) }
49
- checksum = line[data_end..(data_end + 2)].to_i(16)
37
+ def type_name
38
+ raise NotImplementedError
39
+ end
50
40
 
51
- Record.new(type, length, offset, data, checksum, line: line, validate: true)
52
- end
41
+ def type_data_length
42
+ raise NotImplementedError
43
+ end
53
44
 
54
- def self.data(data)
55
- record = Record.new(:data)
56
- record.data = data
57
- record
58
- end
45
+ def parse(line)
46
+ raise MisformattedFileError, "Expected ':' at start of line" unless line[0] == ":"
47
+ raise MisformattedFileError, "Line length incorrect" unless line.size >= (1 + 2 + 4 + 2)
59
48
 
60
- def self.eof
61
- Record.new(:eof)
62
- end
49
+ length = line[1..2].to_i(16)
50
+ data_end = (9 + (length * 2))
63
51
 
64
- def self.type_with_value(type, value)
65
- record = Record.new(type)
66
- record.send("#{type}=".to_sym, value)
67
- record
68
- end
52
+ offset = line[3..6].to_i(16)
53
+ type_id = line[7..8].to_i(16)
54
+ data = line[9...data_end].chars.each_slice(2).map { |a| a.join.to_i(16) }
55
+ checksum = line[data_end..(data_end + 2)].to_i(16)
69
56
 
70
- def self.esa(value)
71
- type_with_value(:esa, value)
72
- end
57
+ raise InvalidTypeError, "Unknown type #{type_id}" unless type_by_id.include?(type_id)
73
58
 
74
- def self.ssa(value)
75
- type_with_value(:ssa, value)
76
- end
59
+ type = type_by_id[type_id]
60
+ type.new(length, offset, data, checksum, line: line, validate: true)
61
+ end
77
62
 
78
- def self.ela(value)
79
- type_with_value(:ela, value)
80
- end
63
+ def inherited(subclass)
64
+ super
81
65
 
82
- def self.sla(value)
83
- type_with_value(:sla, value)
66
+ subclass.instance_eval { public_class_method :new }
67
+ end
84
68
  end
85
69
 
86
- attr_reader :length, :offset, :type, :data, :checksum, :line
70
+ private_class_method :new
71
+
72
+ attr_reader :length, :offset, :data, :checksum, :line
87
73
 
88
- # rubocop:disable Metrics/ParameterLists
89
- def initialize(type, length = 0, offset = 0, data = [], checksum = nil, line: nil, validate: false)
90
- @type = type
74
+ def initialize(length = 0, offset = 0, data = [], checksum = nil, line: nil, validate: false)
91
75
  @length = length
92
76
  @offset = offset
93
77
  @data = data
@@ -97,36 +81,67 @@ module IntelHex
97
81
 
98
82
  self.validate if validate
99
83
  end
100
- # rubocop:enable Metrics/ParameterLists
101
84
 
102
- def data_s
103
- "[#{data.map { |b| '%02x' % b }.join(' ')}]"
85
+ def type_id
86
+ self.class.type_id
104
87
  end
105
88
 
106
- def value_s
107
- return '' if type == :eof
89
+ def type_name
90
+ self.class.type_name
91
+ end
92
+
93
+ alias type type_name
94
+
95
+ def type_data_length
96
+ self.class.type_data_length
97
+ end
98
+
99
+ def data=(value)
100
+ raise InvalidDataError, "Incorrect data type" unless value.is_a?(Array)
101
+ raise InvalidLengthError, "Data length #{value.size} too large" unless value.size <= 255
102
+
103
+ @data = value
104
+ @length = data.size
105
+ @checksum = recalculate_checksum
106
+ end
107
+
108
+ def value
109
+ nil
110
+ end
108
111
 
109
- "#{type}=#{type == :data ? data_s : send(type)}"
112
+ def value_s
113
+ value.to_s
110
114
  end
111
115
 
112
116
  def to_s
113
- "#<#{self.class.name} type=#{type} offset=#{offset} length=#{length} #{value_s}>"
117
+ type_value = value ? "#{type}=#{value_s}" : ""
118
+ "#<#{self.class.name} type=#{type_name} offset=#{offset} length=#{length} #{type_value}>"
119
+ end
120
+
121
+ def to_h
122
+ {
123
+ type: type,
124
+ offset: offset,
125
+ length: length,
126
+ checksum: checksum,
127
+ }.merge({ type => value })
114
128
  end
115
129
 
116
130
  def to_ascii
117
- ':%02X%04X%02X%s%02X' % [
131
+ format(
132
+ ":%02X%04X%02X%s%02X",
118
133
  length,
119
134
  offset,
120
- TYPE_MAP[type],
121
- data.map { |b| '%02X' % b }.join,
122
- checksum,
123
- ]
135
+ type_id,
136
+ data.map { |b| format("%02X", b) }.join,
137
+ checksum
138
+ )
124
139
  end
125
140
 
126
141
  def calculate_checksum
127
142
  return @calculated_checksum if @calculated_checksum
128
143
 
129
- sum = length + ((offset & 0xff00) >> 8) + (offset & 0x00ff) + TYPE_MAP[type]
144
+ sum = length + ((offset & 0xff00) >> 8) + (offset & 0x00ff) + type_id
130
145
  sum += data.sum
131
146
 
132
147
  @calculated_checksum = (((sum & 0xff) ^ 0xff) + 1) & 0xff
@@ -145,35 +160,28 @@ module IntelHex
145
160
  end
146
161
 
147
162
  def validate
148
- validate_type
149
163
  validate_length
150
164
  validate_offset
151
165
  validate_data
152
166
  validate_checksum
153
167
  end
154
168
 
155
- def validate_type
156
- return if TYPE_MAP.include?(type)
157
-
158
- raise InvalidTypeError, "Type #{type} is invalid"
159
- end
160
-
161
169
  def validate_offset
162
170
  raise InvalidOffsetError, "Offset #{offset} is negative" unless offset >= 0
163
171
  raise InvalidOffsetError, "Offset #{offset} is too large" unless offset < 2**16
164
172
  end
165
173
 
166
174
  def validate_length
167
- valid_length = TYPE_DATA_LENGTH[type]
168
-
169
- case valid_length
175
+ case type_data_length
170
176
  when Integer
171
- return if length == valid_length
177
+ return if length == type_data_length
172
178
  when Range
173
- return if valid_length.include?(length)
179
+ return if type_data_length.include?(length)
180
+ else
181
+ raise InvalidTypeError, "Length for type #{type} is unhandled by validation"
174
182
  end
175
183
 
176
- raise InvalidLengthError, "Length for type #{type} must be #{valid_length}; #{length} given"
184
+ raise InvalidLengthError, "Length for type #{type} must be #{type_data_length}; #{length} given"
177
185
  end
178
186
 
179
187
  def validate_data
@@ -189,7 +197,7 @@ module IntelHex
189
197
  end
190
198
 
191
199
  def each_byte_with_address
192
- return Enumerator.new(self, :each_byte_with_address) unless block_given?
200
+ return enum_for(:each_byte_with_address) unless block_given?
193
201
 
194
202
  data.each_with_index do |byte, i|
195
203
  yield byte, offset + i
@@ -197,52 +205,12 @@ module IntelHex
197
205
 
198
206
  nil
199
207
  end
200
-
201
- def data=(value)
202
- raise 'Incorrect data type' unless value.is_a?(Array)
203
- raise InvalidLengthError, "Data length #{value.size} too large" unless value.size <= 255
204
-
205
- @data = value
206
- @length = data.size
207
- @checksum = recalculate_checksum
208
- end
209
-
210
- def data_to_uint16(offset = 0)
211
- (data[offset + 0] << 8) | data[offset + 1]
212
- end
213
-
214
- def uint16_to_data(value, offset = 0)
215
- data[(offset...(offset + 2))] = [
216
- (value & 0xff00) >> 8,
217
- value & 0x00ff,
218
- ]
219
- @length = data.size
220
- @checksum = recalculate_checksum
221
- end
222
-
223
- def data_to_uint32(offset = 0)
224
- (data[offset + 0] << 24) | (data[offset + 1] << 16) | (data[offset + 2] << 8) | data[offset + 3]
225
- end
226
-
227
- def uint32_to_data(value, offset = 0)
228
- data[(offset...(offset + 4))] = [
229
- (value & 0xff000000) >> 24,
230
- (value & 0x00ff0000) >> 16,
231
- (value & 0x0000ff00) >> 8,
232
- value & 0x000000ff,
233
- ]
234
- @length = data.size
235
- @checksum = recalculate_checksum
236
- end
237
-
238
- alias esa data_to_uint16
239
- alias ssa data_to_uint32
240
- alias ela data_to_uint16
241
- alias sla data_to_uint32
242
-
243
- alias esa= uint16_to_data
244
- alias ssa= uint32_to_data
245
- alias ela= uint16_to_data
246
- alias sla= uint32_to_data
247
208
  end
248
209
  end
210
+
211
+ require "intel_hex/record/data"
212
+ require "intel_hex/record/eof"
213
+ require "intel_hex/record/esa"
214
+ require "intel_hex/record/ssa"
215
+ require "intel_hex/record/ela"
216
+ require "intel_hex/record/sla"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module IntelHex
4
- VERSION = '0.5.5'
4
+ VERSION = "0.6.1"
5
5
  end
data/lib/intel_hex.rb CHANGED
@@ -3,6 +3,6 @@
3
3
  module IntelHex
4
4
  end
5
5
 
6
- require 'intel_hex/version'
7
- require 'intel_hex/record'
8
- require 'intel_hex/file_reader'
6
+ require "intel_hex/version"
7
+ require "intel_hex/record"
8
+ require "intel_hex/file_reader"
metadata CHANGED
@@ -1,57 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: intel_hex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Cole
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2021-09-12 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: rspec
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: rubocop
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rubocop-rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies: []
55
12
  description: An Intel hex file parser for (e.g. AVR) working with firmware files
56
13
  email: jeremy@jcole.us
57
14
  executables:
@@ -65,12 +22,20 @@ files:
65
22
  - lib/intel_hex.rb
66
23
  - lib/intel_hex/file_reader.rb
67
24
  - lib/intel_hex/record.rb
25
+ - lib/intel_hex/record/data.rb
26
+ - lib/intel_hex/record/ela.rb
27
+ - lib/intel_hex/record/eof.rb
28
+ - lib/intel_hex/record/esa.rb
29
+ - lib/intel_hex/record/sla.rb
30
+ - lib/intel_hex/record/ssa.rb
31
+ - lib/intel_hex/record/value_record_uint16.rb
32
+ - lib/intel_hex/record/value_record_uint32.rb
68
33
  - lib/intel_hex/version.rb
69
34
  homepage: https://github.com/jeremycole/intel_hex
70
35
  licenses:
71
36
  - BSD-3-Clause
72
- metadata: {}
73
- post_install_message:
37
+ metadata:
38
+ rubygems_mfa_required: 'true'
74
39
  rdoc_options: []
75
40
  require_paths:
76
41
  - lib
@@ -78,7 +43,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
78
43
  requirements:
79
44
  - - ">="
80
45
  - !ruby/object:Gem::Version
81
- version: '2.6'
46
+ version: '3.0'
82
47
  - - "<"
83
48
  - !ruby/object:Gem::Version
84
49
  version: '4'
@@ -88,8 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
53
  - !ruby/object:Gem::Version
89
54
  version: '0'
90
55
  requirements: []
91
- rubygems_version: 3.1.2
92
- signing_key:
56
+ rubygems_version: 3.6.7
93
57
  specification_version: 4
94
58
  summary: Parser for Intel hex files
95
59
  test_files: []