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.
Defined Under Namespace
Modules: WarnNoReadLengthPlugin
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_missing?, #value, #value=
Methods included from TraceHook
#turn_off_tracing, #turn_on_tracing
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 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 |