rsmp 0.40.0 → 0.40.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: 7db642eae802d3f31456b221ab6297516eb081375f1778cf06cd25b597ae3d07
4
- data.tar.gz: e64b67b905975ca8862dd3610a2c3553c8527378db05fc0242dbd56996f850a5
3
+ metadata.gz: 8cafa5ad2e105bea349b42e08a8dca7e15f0635bfdcddca16d30b31062c2582e
4
+ data.tar.gz: f424bab2c9e1f77f2c8f752b24d2fe591d2b2f057fb78d774319ab216a8469f0
5
5
  SHA512:
6
- metadata.gz: 9dbceb076fdfd4aee419daceb587c7802eaf664f3bde3bcd7bb944e9e1408e78b9da0987ca7b56ab0e29d65cc120822f2e2c501bff3de2f22676141194394af3
7
- data.tar.gz: 25cdeff92403011140b4164541ad94a785ad8b62449563a49f1ae1ccdc99f8489e940a310d140ddda3db34f66bcded08382d5e3bfdc5cf5307cb7529c11f94d7
6
+ metadata.gz: 7bd78f82df81c06aaff4cb3298a0e94297599deb66d55e582385d89ee70848edd5b60e2d37b9eb21e75cb30d51cadeff6ff10993d7972e27d96629b6cfc9636b
7
+ data.tar.gz: 5a571aa560ec17d2233945e2ad371f18edad0bfa55ea0f31974ca81adff6d5bd6a10552d13c7c5b48bebc3202235fb4aa6d3e5f4e0001f4dbad783657db2e16f
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rsmp (0.40.0)
4
+ rsmp (0.40.1)
5
5
  async (~> 2.32)
6
6
  colorize (~> 1.1)
7
7
  io-endpoint (~> 0.15)
@@ -7,7 +7,7 @@ module RSMP
7
7
  def setup_inputs(inputs)
8
8
  if inputs
9
9
  num_inputs = inputs['total']
10
- @input_programming = inputs['programming']
10
+ @input_programming = normalize_input_programming(inputs['programming'])
11
11
  else
12
12
  @input_programming = nil
13
13
  end
@@ -167,6 +167,35 @@ module RSMP
167
167
  TrafficControllerSite.make_status @inputs.forced_string
168
168
  end
169
169
  end
170
+
171
+ private
172
+
173
+ def normalize_input_programming(programming)
174
+ return nil if programming.nil?
175
+ return programming if programming.is_a?(Array)
176
+ return programming unless programming.is_a?(Hash)
177
+
178
+ normalized = normalize_programming_keys(programming)
179
+ return normalized unless normalized.keys.all?(Integer)
180
+
181
+ programming_hash_to_array(normalized)
182
+ end
183
+
184
+ def normalize_programming_keys(programming)
185
+ programming.each_with_object({}) do |(key, value), memo|
186
+ int_key = key.is_a?(String) && key.match?(/^\d+$/) ? key.to_i : key
187
+ memo[int_key] = value
188
+ end
189
+ end
190
+
191
+ def programming_hash_to_array(normalized)
192
+ max_key = normalized.keys.max
193
+ program_array = Array.new(max_key + 1)
194
+ normalized.each do |index, value|
195
+ program_array[index] = value
196
+ end
197
+ program_array
198
+ end
170
199
  end
171
200
  end
172
201
  end
@@ -12,7 +12,7 @@ module RSMP
12
12
  # setup options before calling super initializer,
13
13
  # since build of components depend on options
14
14
  @sxl = 'traffic_light_controller'
15
- @security_codes = options[:site_settings]['security_codes']
15
+ @security_codes = normalize_security_codes(options.dig(:site_settings, 'security_codes'))
16
16
  @interval = options[:site_settings].dig('intervals', 'timer') || 1
17
17
  @startup_sequence = options[:site_settings]['startup_sequence'] || 'efg'
18
18
  build_plans options[:site_settings]['signal_plans']
@@ -131,6 +131,15 @@ module RSMP
131
131
  raise MessageRejected, "Wrong security code for level #{level}"
132
132
  end
133
133
 
134
+ def normalize_security_codes(codes)
135
+ return {} unless codes.is_a?(Hash)
136
+
137
+ codes.each_with_object({}) do |(key, value), memo|
138
+ int_key = key.is_a?(String) && key.match?(/^\d+$/) ? key.to_i : key
139
+ memo[int_key] = value
140
+ end
141
+ end
142
+
134
143
  def change_security_code(level, old_code, new_code)
135
144
  verify_security_code level, old_code
136
145
  @security_codes[level] = new_code
data/lib/rsmp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module RSMP
2
- VERSION = '0.40.0'.freeze
2
+ VERSION = '0.40.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsmp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.40.0
4
+ version: 0.40.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emil Tin