Class: BinData::String
- Inherits:
-
BasePrimitive
- Object
- Base
- BasePrimitive
- BinData::String
- Defined in:
- lib/bindata/string.rb
Overview
A String is a sequence of bytes. This is the same as strings in Ruby 1.8. The issue of character encoding is ignored by this class.
require 'bindata'
data = "abcdefghij"
obj = BinData::String.new(read_length: 5)
obj.read(data)
obj #=> "abcde"
obj = BinData::String.new(length: 6)
obj.read(data)
obj #=> "abcdef"
obj.assign("abcdefghij")
obj #=> "abcdef"
obj.assign("abcd")
obj #=> "abcd\000\000"
obj = BinData::String.new(length: 6, trim_padding: true)
obj.assign("abcd")
obj #=> "abcd"
obj.to_binary_s #=> "abcd\000\000"
obj = BinData::String.new(length: 6, pad_byte: 'A')
obj.assign("abcd")
obj #=> "abcdAA"
obj.to_binary_s #=> "abcdAA"
Parameters
String objects accept all the params that BinData::BasePrimitive does, as well as the following:
:read_length
-
The length in bytes to use when reading a value.
:length
-
The fixed length of the string. If a shorter string is set, it will be padded to this length.
:pad_byte
-
The byte to use when padding a string to a set length. Valid values are Integers and Strings of length 1. “0” is the default.
:pad_front
-
Signifies that the padding occurs at the front of the string rather than the end. Default is false.
:trim_padding
-
Boolean, default false. If set, #value will return the value with all pad_bytes trimmed from the end of the string. The value will not be trimmed when writing.
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
Methods inherited from BasePrimitive
#<=>, bit_aligned, #clear?, #do_num_bytes, #do_read, #do_read_with_hook, #do_write, #eql?, #hash, #initialize_instance, #method_missing, #respond_to?, #trace_value, turn_off_tracing, turn_on_tracing, #value, #value=
Methods inherited from Base
#==, #=~, #abs_offset, arg_processor, auto_call_delayed_io, bindata_name, #clear, #debug_name, #eval_parameter, #get_parameter, #has_parameter?, #initialize_instance, #initialize_with_warning, #inspect, #lazy_evaluator, #new, #num_bytes, #pretty_print, #read, read, register_subclasses, #rel_offset, #safe_respond_to?, #to_binary_s, #to_hex, #to_s, unregister_self, #write
Methods included from AcceptedParametersPlugin
#accepted_parameters, #default_parameters, #mandatory_parameters, #mutually_exclusive_parameters, #optional_parameters
Methods included from CheckOrAdjustOffsetPlugin
Methods included from RegisterNamePlugin
Methods included from Framework
#bit_aligned?, #clear?, #debug_name_of, #offset_of
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class BinData::BasePrimitive
Instance Method Details
#assign(val) ⇒ Object
67 68 69 |
# File 'lib/bindata/string.rb', line 67 def assign(val) super(binary_string(val)) end |
#initialize_shared_instance ⇒ Object
59 60 61 62 63 64 65 |
# File 'lib/bindata/string.rb', line 59 def initialize_shared_instance if (has_parameter?(:value) || has_parameter?(:asserted_value)) && !has_parameter?(:read_length) extend WarnNoReadLengthPlugin end super end |
#snapshot ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/bindata/string.rb', line 71 def snapshot # override to trim padding snap = super snap = clamp_to_length(snap) if get_parameter(:trim_padding) trim_padding(snap) else snap end end |