class BinData::Skip

Skip will skip over bytes from the input stream. If the stream is not seekable, then the bytes are consumed and discarded.

When writing, skip will write the appropriate number of zero bytes.

require 'bindata'

class A < BinData::Record
  skip :length => 5
  string :a, :read_length => 5
end

obj = A.read("abcdefghij")
obj.a #=> "fghij"

Parameters

Skip objects accept all the params that BinData::BasePrimitive does, as well as the following:

:length

The number of bytes to skip.

:to_abs_offset

Skips to the given absolute offset.

Public Instance Methods

initialize_shared_instance() click to toggle source
# File lib/bindata/skip.rb, line 34
def initialize_shared_instance
  extend SkipLengthPlugin      if has_parameter?(:length)
  extend SkipToAbsOffsetPlugin if has_parameter?(:to_abs_offset)
  super
end

Private Instance Methods

read_and_return_value(io) click to toggle source
# File lib/bindata/skip.rb, line 52
def read_and_return_value(io)
  len = skip_length
  if len < 0
    raise ValidityError, "#{debug_name} attempted to seek backwards by #{len.abs} bytes"
  end

  io.seekbytes(len)
  ""
end
sensible_default() click to toggle source
# File lib/bindata/skip.rb, line 62
def sensible_default
  ""
end
value_to_binary_string(val) click to toggle source
# File lib/bindata/skip.rb, line 43
def value_to_binary_string(val)
  len = skip_length
  if len < 0
    raise ValidityError, "#{debug_name} attempted to seek backwards by #{len.abs} bytes"
  end

  "\000" * skip_length
end