bson 4.12.1 → 4.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.md +4 -7
- data/ext/bson/bson-native.h +2 -0
- data/ext/bson/init.c +9 -0
- data/ext/bson/read.c +29 -0
- data/lib/bson/active_support.rb +1 -0
- data/lib/bson/array.rb +2 -1
- data/lib/bson/binary.rb +5 -3
- data/lib/bson/boolean.rb +2 -1
- data/lib/bson/code.rb +2 -1
- data/lib/bson/code_with_scope.rb +2 -1
- data/lib/bson/config.rb +1 -0
- data/lib/bson/date.rb +1 -0
- data/lib/bson/date_time.rb +1 -0
- data/lib/bson/db_pointer.rb +2 -1
- data/lib/bson/dbref.rb +125 -0
- data/lib/bson/decimal128/builder.rb +18 -15
- data/lib/bson/decimal128.rb +10 -9
- data/lib/bson/document.rb +14 -0
- data/lib/bson/environment.rb +1 -0
- data/lib/bson/error.rb +7 -0
- data/lib/bson/ext_json.rb +16 -11
- data/lib/bson/false_class.rb +2 -1
- data/lib/bson/float.rb +20 -31
- data/lib/bson/hash.rb +15 -6
- data/lib/bson/int32.rb +3 -2
- data/lib/bson/int64.rb +3 -2
- data/lib/bson/integer.rb +3 -2
- data/lib/bson/json.rb +1 -0
- data/lib/bson/max_key.rb +3 -2
- data/lib/bson/min_key.rb +3 -2
- data/lib/bson/nil_class.rb +2 -1
- data/lib/bson/object.rb +1 -0
- data/lib/bson/object_id.rb +4 -3
- data/lib/bson/open_struct.rb +1 -0
- data/lib/bson/regexp.rb +17 -6
- data/lib/bson/registry.rb +1 -0
- data/lib/bson/specialized.rb +1 -0
- data/lib/bson/string.rb +3 -2
- data/lib/bson/symbol.rb +2 -1
- data/lib/bson/time.rb +4 -3
- data/lib/bson/time_with_zone.rb +1 -0
- data/lib/bson/timestamp.rb +3 -2
- data/lib/bson/true_class.rb +2 -1
- data/lib/bson/undefined.rb +2 -1
- data/lib/bson/version.rb +2 -1
- data/lib/bson.rb +6 -4
- data/spec/README.md +14 -0
- data/spec/bson/dbref_spec.rb +461 -0
- data/spec/bson/document_spec.rb +7 -1
- data/spec/bson/ext_json_parse_spec.rb +37 -0
- data/spec/bson/int64_spec.rb +4 -24
- data/spec/bson/raw_spec.rb +7 -1
- data/spec/bson/regexp_spec.rb +52 -0
- data/spec/runners/common_driver.rb +1 -1
- data/spec/shared/LICENSE +20 -0
- data/spec/shared/bin/get-mongodb-download-url +17 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/cluster_config.rb +221 -0
- data/spec/shared/lib/mrss/constraints.rb +346 -0
- data/spec/shared/lib/mrss/docker_runner.rb +265 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +191 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +115 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +152 -0
- data/spec/shared/lib/mrss/utils.rb +15 -0
- data/spec/shared/share/Dockerfile.erb +231 -0
- data/spec/shared/shlib/distro.sh +73 -0
- data/spec/shared/shlib/server.sh +290 -0
- data/spec/shared/shlib/set_env.sh +128 -0
- data/spec/spec_helper.rb +9 -1
- data/spec/spec_tests/data/corpus/binary.json +5 -0
- data/spec/spec_tests/data/corpus/dbref.json +21 -1
- data/spec/spec_tests/data/corpus/document.json +4 -0
- data/spec/spec_tests/data/corpus/regex.json +2 -2
- data/spec/spec_tests/data/corpus/top.json +20 -9
- data.tar.gz.sig +0 -0
- metadata +123 -90
- metadata.gz.sig +0 -0
data/lib/bson/false_class.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -25,7 +26,7 @@ module BSON
|
|
25
26
|
# A false value in the BSON spec is 0x00.
|
26
27
|
#
|
27
28
|
# @since 2.0.0
|
28
|
-
FALSE_BYTE = 0.chr
|
29
|
+
FALSE_BYTE = String.new(0.chr, encoding: BINARY).freeze
|
29
30
|
|
30
31
|
# The BSON type for false values is the general boolean type of 0x08.
|
31
32
|
#
|
data/lib/bson/float.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -25,12 +26,12 @@ module BSON
|
|
25
26
|
# A floating point is type 0x01 in the BSON spec.
|
26
27
|
#
|
27
28
|
# @since 2.0.0
|
28
|
-
BSON_TYPE = 1.chr
|
29
|
+
BSON_TYPE = ::String.new(1.chr, encoding: BINARY).freeze
|
29
30
|
|
30
31
|
# The pack directive is for 8 byte floating points.
|
31
32
|
#
|
32
33
|
# @since 2.0.0
|
33
|
-
PACK = "E"
|
34
|
+
PACK = "E"
|
34
35
|
|
35
36
|
# Get the floating point as encoded BSON.
|
36
37
|
#
|
@@ -57,36 +58,24 @@ module BSON
|
|
57
58
|
#
|
58
59
|
# @return [ Hash | Float ] The extended json representation.
|
59
60
|
def as_extended_json(**options)
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
61
|
+
if infinite? == 1
|
62
|
+
{ '$numberDouble' => 'Infinity' }
|
63
|
+
elsif infinite? == -1
|
64
|
+
{ '$numberDouble' => '-Infinity' }
|
65
|
+
elsif nan?
|
66
|
+
{ '$numberDouble' => 'NaN' }
|
67
|
+
elsif options[:mode] == :relaxed || options[:mode] == :legacy
|
68
|
+
self
|
69
|
+
elsif BSON::Environment.jruby? && abs > 1e15
|
70
|
+
# Hack to make bson corpus spec tests pass.
|
71
|
+
# JRuby serializes -1.2345678901234568e+18 as
|
72
|
+
# -1234567890123456770.0, which is valid but differs from MRI
|
73
|
+
# serialization. Extended JSON spec does not define precise
|
74
|
+
# stringification of floats.
|
75
|
+
# https://jira.mongodb.org/browse/SPEC-1536
|
76
|
+
{ '$numberDouble' => ('%.17g' % to_s).upcase }
|
65
77
|
else
|
66
|
-
|
67
|
-
{'$numberDouble' => 'NaN'}
|
68
|
-
else
|
69
|
-
if options[:mode] == :relaxed || options[:mode] == :legacy
|
70
|
-
self
|
71
|
-
else
|
72
|
-
value = if BSON::Environment.jruby?
|
73
|
-
# Hack to make bson corpus spec tests pass.
|
74
|
-
# JRuby serializes -1.2345678901234568e+18 as
|
75
|
-
# -1234567890123456770.0, which is valid but differs from MRI
|
76
|
-
# serialization. Extended JSON spec does not define precise
|
77
|
-
# stringification of floats.
|
78
|
-
# https://jira.mongodb.org/browse/SPEC-1536
|
79
|
-
if abs > 1e15
|
80
|
-
'%.17g' % to_s
|
81
|
-
else
|
82
|
-
to_s
|
83
|
-
end
|
84
|
-
else
|
85
|
-
to_s
|
86
|
-
end
|
87
|
-
{'$numberDouble' => value.upcase}
|
88
|
-
end
|
89
|
-
end
|
78
|
+
{ '$numberDouble' => to_s.upcase }
|
90
79
|
end
|
91
80
|
end
|
92
81
|
|
data/lib/bson/hash.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -25,7 +26,7 @@ module BSON
|
|
25
26
|
# A hash, also called an embedded document, is type 0x03 in the BSON spec.
|
26
27
|
#
|
27
28
|
# @since 2.0.0
|
28
|
-
BSON_TYPE = 3.chr
|
29
|
+
BSON_TYPE = ::String.new(3.chr, encoding: BINARY).freeze
|
29
30
|
|
30
31
|
# Get the hash as encoded BSON.
|
31
32
|
#
|
@@ -70,7 +71,7 @@ module BSON
|
|
70
71
|
# @example Convert the hash to a normalized value.
|
71
72
|
# hash.to_bson_normalized_value
|
72
73
|
#
|
73
|
-
# @return [ BSON::Document ] The
|
74
|
+
# @return [ BSON::Document ] The normalized hash.
|
74
75
|
#
|
75
76
|
# @since 3.0.0
|
76
77
|
def to_bson_normalized_value
|
@@ -88,9 +89,7 @@ module BSON
|
|
88
89
|
#
|
89
90
|
# @return [ Hash ] This hash converted to extended json representation.
|
90
91
|
def as_extended_json(**options)
|
91
|
-
|
92
|
-
[key, value.as_extended_json(**options)]
|
93
|
-
end]
|
92
|
+
transform_values { |value| value.as_extended_json(**options) }
|
94
93
|
end
|
95
94
|
|
96
95
|
module ClassMethods
|
@@ -101,7 +100,7 @@ module BSON
|
|
101
100
|
#
|
102
101
|
# @option options [ nil | :bson ] :mode Decoding mode to use.
|
103
102
|
#
|
104
|
-
# @return [
|
103
|
+
# @return [ Hash ] The decoded hash.
|
105
104
|
#
|
106
105
|
# @see http://bsonspec.org/#/specification
|
107
106
|
#
|
@@ -129,6 +128,16 @@ module BSON
|
|
129
128
|
if actual_byte_size != expected_byte_size
|
130
129
|
raise Error::BSONDecodeError, "Expected hash to take #{expected_byte_size} bytes but it took #{actual_byte_size} bytes"
|
131
130
|
end
|
131
|
+
|
132
|
+
if hash['$ref'] && hash['$id']
|
133
|
+
# We're doing implicit decoding here. If the document is an invalid
|
134
|
+
# dbref, we should decode it as a BSON::Document.
|
135
|
+
begin
|
136
|
+
hash = DBRef.new(hash)
|
137
|
+
rescue ArgumentError
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
132
141
|
hash
|
133
142
|
end
|
134
143
|
end
|
data/lib/bson/int32.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -24,7 +25,7 @@ module BSON
|
|
24
25
|
# A boolean is type 0x08 in the BSON spec.
|
25
26
|
#
|
26
27
|
# @since 2.0.0
|
27
|
-
BSON_TYPE = 16.chr
|
28
|
+
BSON_TYPE = ::String.new(16.chr, encoding: BINARY).freeze
|
28
29
|
|
29
30
|
# The number of bytes constant.
|
30
31
|
#
|
@@ -34,7 +35,7 @@ module BSON
|
|
34
35
|
# Constant for the int 32 pack directive.
|
35
36
|
#
|
36
37
|
# @since 2.0.0
|
37
|
-
PACK = "l<"
|
38
|
+
PACK = "l<"
|
38
39
|
|
39
40
|
# Deserialize an Integer from BSON.
|
40
41
|
#
|
data/lib/bson/int64.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -24,12 +25,12 @@ module BSON
|
|
24
25
|
# A boolean is type 0x08 in the BSON spec.
|
25
26
|
#
|
26
27
|
# @since 2.0.0
|
27
|
-
BSON_TYPE = 18.chr
|
28
|
+
BSON_TYPE = ::String.new(18.chr, encoding: BINARY).freeze
|
28
29
|
|
29
30
|
# Constant for the int 64 pack directive.
|
30
31
|
#
|
31
32
|
# @since 2.0.0
|
32
|
-
PACK = "q<"
|
33
|
+
PACK = "q<"
|
33
34
|
|
34
35
|
# Deserialize an Integer from BSON.
|
35
36
|
#
|
data/lib/bson/integer.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -45,13 +46,13 @@ module BSON
|
|
45
46
|
# The BSON index size.
|
46
47
|
#
|
47
48
|
# @since 2.0.0
|
48
|
-
BSON_INDEX_SIZE = 1024
|
49
|
+
BSON_INDEX_SIZE = 1024
|
49
50
|
|
50
51
|
# A hash of index values for array optimization.
|
51
52
|
#
|
52
53
|
# @since 2.0.0
|
53
54
|
BSON_ARRAY_INDEXES = ::Array.new(BSON_INDEX_SIZE) do |i|
|
54
|
-
(i.to_s.
|
55
|
+
(i.to_s.b << NULL_BYTE).freeze
|
55
56
|
end.freeze
|
56
57
|
|
57
58
|
# Is this integer a valid BSON 32 bit value?
|
data/lib/bson/json.rb
CHANGED
data/lib/bson/max_key.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -28,12 +29,12 @@ module BSON
|
|
28
29
|
# A $maxKey is type 0x7F in the BSON spec.
|
29
30
|
#
|
30
31
|
# @since 2.0.0
|
31
|
-
BSON_TYPE = 127.chr
|
32
|
+
BSON_TYPE = ::String.new(127.chr, encoding: BINARY).freeze
|
32
33
|
|
33
34
|
# Constant for always evaluating greater in a comparison.
|
34
35
|
#
|
35
36
|
# @since 2.0.0
|
36
|
-
GREATER = 1
|
37
|
+
GREATER = 1
|
37
38
|
|
38
39
|
# When comparing a max key with any other object, the max key will always
|
39
40
|
# be greater.
|
data/lib/bson/min_key.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -28,12 +29,12 @@ module BSON
|
|
28
29
|
# A $minKey is type 0xFF in the BSON spec.
|
29
30
|
#
|
30
31
|
# @since 2.0.0
|
31
|
-
BSON_TYPE = 255.chr
|
32
|
+
BSON_TYPE = ::String.new(255.chr, encoding: BINARY).freeze
|
32
33
|
|
33
34
|
# Constant for always evaluating lesser in a comparison.
|
34
35
|
#
|
35
36
|
# @since 2.0.0
|
36
|
-
LESSER = -1
|
37
|
+
LESSER = -1
|
37
38
|
|
38
39
|
# When comparing a min key with any other object, the min key will always
|
39
40
|
# be lesser.
|
data/lib/bson/nil_class.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -26,7 +27,7 @@ module BSON
|
|
26
27
|
# A nil is type 0x0A in the BSON spec.
|
27
28
|
#
|
28
29
|
# @since 2.0.0
|
29
|
-
BSON_TYPE = 10.chr
|
30
|
+
BSON_TYPE = ::String.new(10.chr, encoding: BINARY).freeze
|
30
31
|
|
31
32
|
module ClassMethods
|
32
33
|
|
data/lib/bson/object.rb
CHANGED
data/lib/bson/object_id.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -30,7 +31,7 @@ module BSON
|
|
30
31
|
# A object_id is type 0x07 in the BSON spec.
|
31
32
|
#
|
32
33
|
# @since 2.0.0
|
33
|
-
BSON_TYPE = 7.chr
|
34
|
+
BSON_TYPE = ::String.new(7.chr, encoding: BINARY).freeze
|
34
35
|
|
35
36
|
# Check equality of the object id with another object.
|
36
37
|
#
|
@@ -112,7 +113,7 @@ module BSON
|
|
112
113
|
#
|
113
114
|
# @since 2.0.0
|
114
115
|
def generation_time
|
115
|
-
::Time.at(generate_data.
|
116
|
+
::Time.at(generate_data.unpack1("N")).utc
|
116
117
|
end
|
117
118
|
alias :to_time :generation_time
|
118
119
|
|
@@ -352,7 +353,7 @@ module BSON
|
|
352
353
|
# @since 2.0.0
|
353
354
|
def initialize
|
354
355
|
@counter = rand(0x1000000)
|
355
|
-
@machine_id = Digest::MD5.digest(Socket.gethostname).
|
356
|
+
@machine_id = Digest::MD5.digest(Socket.gethostname).unpack1("N")
|
356
357
|
@mutex = Mutex.new
|
357
358
|
end
|
358
359
|
|
data/lib/bson/open_struct.rb
CHANGED
data/lib/bson/regexp.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -26,34 +27,34 @@ module BSON
|
|
26
27
|
# A regular expression is type 0x0B in the BSON spec.
|
27
28
|
#
|
28
29
|
# @since 2.0.0
|
29
|
-
BSON_TYPE = 11.chr
|
30
|
+
BSON_TYPE = ::String.new(11.chr, encoding: BINARY).freeze
|
30
31
|
|
31
32
|
# Extended value constant.
|
32
33
|
#
|
33
34
|
# @since 3.2.6
|
34
|
-
EXTENDED_VALUE = 'x'
|
35
|
+
EXTENDED_VALUE = 'x'
|
35
36
|
|
36
37
|
# Ignore case constant.
|
37
38
|
#
|
38
39
|
# @since 3.2.6
|
39
|
-
IGNORECASE_VALUE = 'i'
|
40
|
+
IGNORECASE_VALUE = 'i'
|
40
41
|
|
41
42
|
# Multiline constant.
|
42
43
|
#
|
43
44
|
# @since 3.2.6
|
44
|
-
MULTILINE_VALUE = 'm'
|
45
|
+
MULTILINE_VALUE = 'm'
|
45
46
|
|
46
47
|
# Newline constant.
|
47
48
|
#
|
48
49
|
# @since 3.2.6
|
49
|
-
NEWLINE_VALUE = 's'
|
50
|
+
NEWLINE_VALUE = 's'
|
50
51
|
|
51
52
|
# Ruby multiline constant.
|
52
53
|
#
|
53
54
|
# @since 3.2.6
|
54
55
|
#
|
55
56
|
# @deprecated Will be removed in 5.0
|
56
|
-
RUBY_MULTILINE_VALUE = 'ms'
|
57
|
+
RUBY_MULTILINE_VALUE = 'ms'
|
57
58
|
|
58
59
|
# Get the regexp as JSON hash data.
|
59
60
|
#
|
@@ -154,6 +155,16 @@ module BSON
|
|
154
155
|
#
|
155
156
|
# @since 3.0.0
|
156
157
|
def initialize(pattern, options = '')
|
158
|
+
if pattern.include?(NULL_BYTE)
|
159
|
+
raise Error::InvalidRegexpPattern, "Regexp pattern cannot contain a null byte: #{pattern}"
|
160
|
+
elsif options.is_a?(String) || options.is_a?(Symbol)
|
161
|
+
if options.to_s.include?(NULL_BYTE)
|
162
|
+
raise Error::InvalidRegexpPattern, "Regexp options cannot contain a null byte: #{options}"
|
163
|
+
end
|
164
|
+
elsif !options.is_a?(Integer)
|
165
|
+
raise ArgumentError, "Regexp options must be a String, Symbol, or Integer"
|
166
|
+
end
|
167
|
+
|
157
168
|
@pattern = pattern
|
158
169
|
@options = options
|
159
170
|
end
|
data/lib/bson/registry.rb
CHANGED
data/lib/bson/specialized.rb
CHANGED
data/lib/bson/string.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
+
# frozen_string_literal: true
|
2
3
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
3
4
|
#
|
4
5
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -26,12 +27,12 @@ module BSON
|
|
26
27
|
# A string is type 0x02 in the BSON spec.
|
27
28
|
#
|
28
29
|
# @since 2.0.0
|
29
|
-
BSON_TYPE = 2.chr
|
30
|
+
BSON_TYPE = ::String.new(2.chr, encoding: BINARY).freeze
|
30
31
|
|
31
32
|
# Regex for matching illegal BSON keys.
|
32
33
|
#
|
33
34
|
# @since 4.1.0
|
34
|
-
ILLEGAL_KEY = /(\A[$])|(\.)
|
35
|
+
ILLEGAL_KEY = /(\A[$])|(\.)/
|
35
36
|
|
36
37
|
# Get the string as encoded BSON.
|
37
38
|
#
|
data/lib/bson/symbol.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -28,7 +29,7 @@ module BSON
|
|
28
29
|
# A symbol is type 0x0E in the BSON spec.
|
29
30
|
#
|
30
31
|
# @since 2.0.0
|
31
|
-
BSON_TYPE = 14.chr
|
32
|
+
BSON_TYPE = ::String.new(14.chr, encoding: BINARY).freeze
|
32
33
|
|
33
34
|
# Symbols are serialized as strings as symbols are now removed from the
|
34
35
|
# BSON specification. Therefore the bson_type when serializing must be a
|
data/lib/bson/time.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -39,7 +40,7 @@ module BSON
|
|
39
40
|
# A time is type 0x09 in the BSON spec.
|
40
41
|
#
|
41
42
|
# @since 2.0.0
|
42
|
-
BSON_TYPE = 9.chr
|
43
|
+
BSON_TYPE = ::String.new(9.chr, encoding: BINARY).freeze
|
43
44
|
|
44
45
|
# Get the time as encoded BSON.
|
45
46
|
#
|
@@ -63,8 +64,8 @@ module BSON
|
|
63
64
|
#
|
64
65
|
# @note The time is floored to the nearest millisecond.
|
65
66
|
#
|
66
|
-
# @option
|
67
|
-
# extended JSON
|
67
|
+
# @option opts [ nil | :relaxed | :legacy ] :mode Serialization mode
|
68
|
+
# (default is canonical extended JSON)
|
68
69
|
#
|
69
70
|
# @return [ Hash ] The extended json representation.
|
70
71
|
def as_extended_json(**options)
|
data/lib/bson/time_with_zone.rb
CHANGED
data/lib/bson/timestamp.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -26,12 +27,12 @@ module BSON
|
|
26
27
|
# A timestamp is type 0x11 in the BSON spec.
|
27
28
|
#
|
28
29
|
# @since 2.0.0
|
29
|
-
BSON_TYPE = 17.chr
|
30
|
+
BSON_TYPE = ::String.new(17.chr, encoding: BINARY).freeze
|
30
31
|
|
31
32
|
# Error message if an object other than a Timestamp is compared with this object.
|
32
33
|
#
|
33
34
|
# @since 4.3.0
|
34
|
-
COMPARISON_ERROR_MESSAGE = 'comparison of %s with Timestamp failed'
|
35
|
+
COMPARISON_ERROR_MESSAGE = 'comparison of %s with Timestamp failed'
|
35
36
|
|
36
37
|
# @!attribute seconds
|
37
38
|
# @return [ Integer ] The number of seconds.
|
data/lib/bson/true_class.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -25,7 +26,7 @@ module BSON
|
|
25
26
|
# A true value in the BSON spec is 0x01.
|
26
27
|
#
|
27
28
|
# @since 2.0.0
|
28
|
-
TRUE_BYTE = 1.chr
|
29
|
+
TRUE_BYTE = ::String.new(1.chr, encoding: BINARY).freeze
|
29
30
|
|
30
31
|
# The BSON type for true values is the general boolean type of 0x08.
|
31
32
|
#
|
data/lib/bson/undefined.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -25,7 +26,7 @@ module BSON
|
|
25
26
|
# Undefined is type 0x06 in the BSON spec.
|
26
27
|
#
|
27
28
|
# @since 2.0.0
|
28
|
-
BSON_TYPE = 6.chr
|
29
|
+
BSON_TYPE = ::String.new(6.chr, encoding: BINARY).freeze
|
29
30
|
|
30
31
|
# Determine if undefined is equal to another object.
|
31
32
|
#
|
data/lib/bson/version.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -13,5 +14,5 @@
|
|
13
14
|
# limitations under the License.
|
14
15
|
|
15
16
|
module BSON
|
16
|
-
VERSION = "4.
|
17
|
+
VERSION = "4.13.0"
|
17
18
|
end
|
data/lib/bson.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Copyright (C) 2009-2020 MongoDB Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -38,22 +39,22 @@ module BSON
|
|
38
39
|
# Constant for binary string encoding.
|
39
40
|
#
|
40
41
|
# @since 2.0.0
|
41
|
-
BINARY = "BINARY"
|
42
|
+
BINARY = "BINARY"
|
42
43
|
|
43
44
|
# Constant for bson types that don't actually serialize a value.
|
44
45
|
#
|
45
46
|
# @since 2.0.0
|
46
|
-
NO_VALUE =
|
47
|
+
NO_VALUE = ::String.new(encoding: BINARY).freeze
|
47
48
|
|
48
49
|
# Constant for a null byte (0x00).
|
49
50
|
#
|
50
51
|
# @since 2.0.0
|
51
|
-
NULL_BYTE = 0.chr
|
52
|
+
NULL_BYTE = ::String.new(0.chr, encoding: BINARY).freeze
|
52
53
|
|
53
54
|
# Constant for UTF-8 string encoding.
|
54
55
|
#
|
55
56
|
# @since 2.0.0
|
56
|
-
UTF8 = "UTF-8"
|
57
|
+
UTF8 = "UTF-8"
|
57
58
|
end
|
58
59
|
|
59
60
|
require "bson/config"
|
@@ -78,6 +79,7 @@ require "bson/ext_json"
|
|
78
79
|
require "bson/false_class"
|
79
80
|
require "bson/float"
|
80
81
|
require "bson/hash"
|
82
|
+
require "bson/dbref"
|
81
83
|
require "bson/open_struct"
|
82
84
|
require "bson/max_key"
|
83
85
|
require "bson/min_key"
|
data/spec/README.md
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# Running BSON Ruby Tests
|
2
|
+
|
3
|
+
## Quick Start
|
4
|
+
|
5
|
+
The test suite requires shared tooling that is stored in a separate repository
|
6
|
+
and is referenced as a submodule. After checking out the desired bson-ruby
|
7
|
+
branch, check out the matching submodules:
|
8
|
+
|
9
|
+
git submodule init
|
10
|
+
git submodule update
|
11
|
+
|
12
|
+
Then, to run the test suite:
|
13
|
+
|
14
|
+
rake
|