bytemapper 1.0.20 → 1.0.22

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e6d9f3b6ad5399c72b8d8c5fc4a9153a07830aac6a853629e63369ce1426e0da
4
- data.tar.gz: 2badcbe7a5306bba89b6e2d81ba7ec1a6db5ab192dbf5f3472646730f8748cd1
3
+ metadata.gz: 9383a019c471ccf2979e92c7c2e8a8c7a20f5c63fa74613837c2d38a84632a52
4
+ data.tar.gz: 903ecf62d057d5ee4f478e022df4129cccf1c9ce545ab60eeef1314bbcbaad67
5
5
  SHA512:
6
- metadata.gz: dd0bbac9104b26e7a165af3b7f87ba163a741d1267d10d8256c8327fb0c74f4292f25d4d8c25cce4575ae9d9467bcfe30bd45ff3410d3198c78cf65e5e49ced0
7
- data.tar.gz: d023a83a34885767b925b0cfc493e68aceb23e0d2e98c9b55bcd0b59108bcdc823407fb334642f9aebdcc53f7039e5b87546939378183a185efbc9ec4b6c7d87
6
+ metadata.gz: 753673f95b723b32f1c0b1aa9dc88418e9e1bc740bc07185a4f5896c05fb388be68f23b5192aeba58bfb3d1c90368687cfda1d7d51471527b1e16e9b0d1b102e
7
+ data.tar.gz: 21e687cb299ee9aee44a068df8c37cc7a5cca987b7c7175d3677eb3af9ae26a74e5ddc10c1ce8eada691502202a8b5d36dc65e19972e3ac8b70e3e47d2f223c3
@@ -71,8 +71,14 @@ module Bytemapper
71
71
  def map(bytes, shape, name = nil)
72
72
  bytes.force_encoding(Encoding::ASCII_8BIT)
73
73
  bytes = StringIO.new(bytes)
74
- shape = wrap(shape, name)
75
- Chunk.new(bytes, shape, name)
74
+ if shape.is_a?(Array)
75
+ chunks = []
76
+ shape.each { |s| chunks << Chunk.new(bytes.read(s.size), s, name) }
77
+ chunks
78
+ else
79
+ shape = wrap(shape, name)
80
+ Chunk.new(bytes, shape, name)
81
+ end
76
82
  end
77
83
 
78
84
  def registered?(obj)
@@ -87,6 +93,10 @@ module Bytemapper
87
93
  registry.put(obj, name)
88
94
  end
89
95
 
96
+ def names(filter_key = nil)
97
+ registry.names.keys
98
+ end
99
+
90
100
  def print
91
101
  registry.print
92
102
  end
@@ -5,17 +5,18 @@
5
5
  # the terms of the GNU Affero General Public License as published by the Free
6
6
  # Software Foundation, either version 3 of the License, or (at your option) any
7
7
  # later version.
8
-
8
+ #
9
9
  # This program is distributed in the hope that it will be useful, but WITHOUT
10
10
  # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11
11
  # FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
12
12
  # details.
13
-
13
+ #
14
14
  # You should have received a copy of the GNU Affero General Public License
15
15
  # along with this program. If not, see <https://www.gnu.org/licenses/>.
16
+
16
17
  module Bytemapper
17
18
  module Nameable
19
+ attr_accessor :name
18
20
  attr_accessor :names
19
- alias :name :names
20
21
  end
21
22
  end
@@ -182,16 +182,24 @@ module Bytemapper
182
182
  def register_basic_types
183
183
  [
184
184
  [:uint8_t, [8,'C']],
185
+ [:u8, [8,'C']],
185
186
  [:uchar, [8,'C']],
186
187
  [:bool, [8,'C']],
187
188
  [:uint16_t, [16,'S']],
189
+ [:u16, [16,'S']],
188
190
  [:uint32_t, [32,'L']],
191
+ [:u32, [32,'L']],
189
192
  [:uint64_t, [64,'Q']],
193
+ [:u64, [64,'Q']],
190
194
  [:int8_t, [8,'c']],
195
+ [:i8, [8,'c']],
191
196
  [:char, [8,'c']],
192
197
  [:int16_t, [16,'s']],
198
+ [:i16, [16,'s']],
193
199
  [:int32_t, [32,'l']],
194
- [:int64_t, [64,'q']]
200
+ [:i32, [32,'l']],
201
+ [:int64_t, [64,'q']],
202
+ [:i64, [64,'q']]
195
203
  ].each do |name, type|
196
204
  type = Type.new(type)
197
205
  put(type, name)
@@ -0,0 +1,21 @@
1
+ # Bytemapper - Model arbitrary bytestrings as Ruby objects.
2
+ # Copyright (C) 2020 Jefferson Hudson
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify it under
5
+ # the terms of the GNU Affero General Public License as published by the Free
6
+ # Software Foundation, either version 3 of the License, or (at your option) any
7
+ # later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful, but WITHOUT
10
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11
+ # FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
12
+ # details.
13
+ #
14
+ # You should have received a copy of the GNU Affero General Public License
15
+ # along with this program. If not, see <https://www.gnu.org/licenses/>.
16
+
17
+ module Bytemapper
18
+ module Typeable
19
+ attr_accessor :type
20
+ end
21
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bytemapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.20
4
+ version: 1.0.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jefferson Hudson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-01 00:00:00.000000000 Z
11
+ date: 2020-06-14 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Model and interact with bytestrings using Ruby objects.
14
14
  email: jefferson.hudson@gmail.com
@@ -23,6 +23,7 @@ files:
23
23
  - lib/bytemapper/registry.rb
24
24
  - lib/bytemapper/shape.rb
25
25
  - lib/bytemapper/type.rb
26
+ - lib/bytemapper/typeable.rb
26
27
  homepage: https://github.com/l4cr0ss/bytemapper
27
28
  licenses:
28
29
  - AGPL-3.0-or-later