module BSON::Hash

Injects behaviour for encoding and decoding hashes to and from raw bytes as specified by the BSON spec.

@see bsonspec.org/#/specification

@since 2.0.0

Constants

BSON_TYPE

An hash (embedded document) is type 0x03 in the BSON spec.

@since 2.0.0

Public Instance Methods

to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?) click to toggle source

Get the hash as encoded BSON.

@example Get the hash as encoded BSON.

{ "field" => "value" }.to_bson

@return [ String ] The encoded string.

@see bsonspec.org/#/specification

@since 2.0.0

# File lib/bson/hash.rb, line 40
def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
  position = buffer.length
  buffer.put_int32(0)
  each do |field, value|
    buffer.put_byte(value.bson_type)
    buffer.put_cstring(field.to_bson_key(validating_keys))
    value.to_bson(buffer, validating_keys)
  end
  buffer.put_byte(NULL_BYTE)
  buffer.replace_int32(position, buffer.length - position)
end
to_bson_normalized_value() click to toggle source

Converts the hash to a normalized value in a BSON document.

@example Convert the hash to a normalized value.

hash.to_bson_normalized_value

@return [ BSON::Document ] The normazlied hash.

@since 3.0.0

# File lib/bson/hash.rb, line 60
def to_bson_normalized_value
  Document.new(self)
end