bson 4.12.1 → 4.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|