diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2015-08-11 19:42:53 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2015-08-11 19:42:53 +0900 |
commit | cc330a0a7010d3ecd6841cc58abb1cd3a2d87132 (patch) | |
tree | db4bba02cd5f9066b6ed8679a015fae36f5fffb6 /lib/plum/frame_utils.rb | |
parent | 61e594d1508716d9351f3dd355edef6e86e980d9 (diff) | |
download | plum-cc330a0a7010d3ecd6841cc58abb1cd3a2d87132.tar.gz |
frame_utils: simplify Frame#parse_settings
Diffstat (limited to 'lib/plum/frame_utils.rb')
-rw-r--r-- | lib/plum/frame_utils.rb | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/plum/frame_utils.rb b/lib/plum/frame_utils.rb index c29b4a7..0093f89 100644 --- a/lib/plum/frame_utils.rb +++ b/lib/plum/frame_utils.rb @@ -49,12 +49,14 @@ module Plum # # @return [Hash<Symbol, Integer>] The parsed strings. def parse_settings - (self.length / 6).times.map {|i| - id = self.payload.uint16(6 * i) - val = self.payload.uint32(6 * i + 2) - name = Frame::SETTINGS_TYPE.key(id) or next nil - [name, val] - }.compact.to_h + settings = {} + payload.each_byteslice(6) do |param| + id = param.uint16 + name = Frame::SETTINGS_TYPE.key(id) + # ignore unknown settings type + settings[name] = param.uint32(2) if name + end + settings end end end |