Sha256: 2a75310db41a680b5a8dfac6a4f1c7a361d17190293f953365a715b31bb768e8

Contents?: true

Size: 1.12 KB

Versions: 22

Compression:

Stored size: 1.12 KB

Contents

module Moped
  module BSON
    # @private
    module Extensions
      module String
        module ClassMethods
          def __bson_load__(io)
            io.read(*io.read(4).unpack(INT32_PACK)).from_utf8_binary.chop!
          end
        end

        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

        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

        def to_utf8_binary
          encode(UTF8_ENCODING).force_encoding(BINARY_ENCODING)
        rescue EncodingError
          data = dup.force_encoding(UTF8_ENCODING)
          raise unless data.valid_encoding?
          data.force_encoding(BINARY_ENCODING)
        end

        def from_utf8_binary
          force_encoding(UTF8_ENCODING).encode!
        end
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 2 rubygems

Version Path
sunrise-cms-0.5.0.rc1 vendor/bundle/ruby/1.9.1/gems/moped-1.3.2/lib/moped/bson/extensions/string.rb
moped-1.3.2 lib/moped/bson/extensions/string.rb
moped-1.3.1 lib/moped/bson/extensions/string.rb
moped-1.3.0 lib/moped/bson/extensions/string.rb
moped-1.2.9 lib/moped/bson/extensions/string.rb
moped-1.2.8 lib/moped/bson/extensions/string.rb
moped-1.2.7 lib/moped/bson/extensions/string.rb
moped-1.2.6 lib/moped/bson/extensions/string.rb
moped-1.2.5 lib/moped/bson/extensions/string.rb
moped-1.2.4 lib/moped/bson/extensions/string.rb
moped-1.2.2 lib/moped/bson/extensions/string.rb
moped-1.2.1 lib/moped/bson/extensions/string.rb
moped-1.2.0 lib/moped/bson/extensions/string.rb
moped-1.1.6 lib/moped/bson/extensions/string.rb
moped-1.1.5 lib/moped/bson/extensions/string.rb
moped-1.1.4 lib/moped/bson/extensions/string.rb
moped-1.1.3 lib/moped/bson/extensions/string.rb
moped-1.1.2 lib/moped/bson/extensions/string.rb
moped-1.0.1 lib/moped/bson/extensions/string.rb
moped-1.1.1 lib/moped/bson/extensions/string.rb