Class: BIL::Packer
- Inherits:
-
Object
- Object
- BIL::Packer
- Defined in:
- lib/bil/packer.rb
Instance Method Summary collapse
-
#initialize(&packed) ⇒ Packer
constructor
A new instance of Packer.
- #new! ⇒ Object
- #pack(*integers, delineate: true) ⇒ Object
Constructor Details
#initialize(&packed) ⇒ Packer
Returns a new instance of Packer.
3 4 5 |
# File 'lib/bil/packer.rb', line 3 def initialize(&packed) @packed = packed end |
Instance Method Details
#new! ⇒ Object
7 8 9 |
# File 'lib/bil/packer.rb', line 7 def new! @packed.call(TABLE[16]) end |
#pack(*integers, delineate: true) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/bil/packer.rb', line 11 def pack(*integers, delineate: true) new! if delineate integers.each do |int| memo = Integer(int) raise ArgumentError, "Cannot pack negative integers" if memo < 0 string = '' begin chunk = memo & 15 chunk += 16 unless string.empty? string.prepend(TABLE[chunk]) memo = memo >> 4 end until memo == 0 @packed.call(string) end rescue TypeError => e raise ArgumentError, e. end |