module Moped::BSON::Extensions::String

Public Instance Methods

__bson_dump__(io, key) click to toggle source
# File lib/moped/bson/extensions/string.rb, line 7
def __bson_dump__(io, key)
  io << Types::STRING
  io << key.to_bson_cstring
  data = to_utf8_binary
  io << [ data.bytesize + 1 ].pack(INT32_PACK)
  io << data
  io << NULL_BYTE
end
from_utf8_binary() click to toggle source
# File lib/moped/bson/extensions/string.rb, line 32
def from_utf8_binary
  force_encoding(Moped::BSON::UTF8_ENCODING).encode!
end
to_bson_cstring() click to toggle source
# File lib/moped/bson/extensions/string.rb, line 16
def to_bson_cstring
  if include? NULL_BYTE
    raise EncodingError, "#{inspect} cannot be converted to a BSON " \
      "cstring because it contains a null byte"
  end
  to_utf8_binary << NULL_BYTE
end
to_utf8_binary() click to toggle source
# File lib/moped/bson/extensions/string.rb, line 24
def to_utf8_binary
  encode(Moped::BSON::UTF8_ENCODING).force_encoding(Moped::BSON::BINARY_ENCODING)
rescue EncodingError
  data = dup.force_encoding(Moped::BSON::UTF8_ENCODING)
  raise unless data.valid_encoding?
  data.force_encoding(Moped::BSON::BINARY_ENCODING)
end