bson 4.1.1-java → 4.2.0-java
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.tar.gz.sig +0 -0
- data/Rakefile +18 -3
- data/lib/bson-ruby.jar +0 -0
- data/lib/bson.rb +6 -4
- data/lib/bson/array.rb +1 -1
- data/lib/bson/binary.rb +4 -2
- data/lib/bson/code.rb +1 -1
- data/lib/bson/code_with_scope.rb +1 -1
- data/lib/bson/config.rb +1 -1
- data/lib/bson/date.rb +1 -1
- data/lib/bson/date_time.rb +1 -1
- data/lib/bson/decimal128.rb +318 -0
- data/lib/bson/decimal128/builder.rb +448 -0
- data/lib/bson/document.rb +2 -2
- data/lib/bson/environment.rb +13 -1
- data/lib/bson/false_class.rb +1 -1
- data/lib/bson/float.rb +1 -1
- data/lib/bson/hash.rb +1 -1
- data/lib/bson/int32.rb +46 -0
- data/lib/bson/int64.rb +46 -0
- data/lib/bson/integer.rb +1 -1
- data/lib/bson/max_key.rb +1 -1
- data/lib/bson/min_key.rb +1 -1
- data/lib/bson/object_id.rb +3 -2
- data/lib/bson/open_struct.rb +57 -0
- data/lib/bson/regexp.rb +87 -19
- data/lib/bson/registry.rb +1 -1
- data/lib/bson/specialized.rb +1 -1
- data/lib/bson/string.rb +1 -1
- data/lib/bson/symbol.rb +1 -1
- data/lib/bson/time.rb +1 -1
- data/lib/bson/timestamp.rb +2 -2
- data/lib/bson/true_class.rb +1 -1
- data/lib/bson/version.rb +2 -2
- data/spec/bson/array_spec.rb +1 -1
- data/spec/bson/binary_spec.rb +2 -1
- data/spec/bson/corpus_spec.rb +68 -0
- data/spec/bson/decimal128_spec.rb +1583 -0
- data/spec/bson/document_spec.rb +1 -1
- data/spec/bson/driver_bson_spec.rb +77 -0
- data/spec/bson/int32_spec.rb +58 -0
- data/spec/bson/int64_spec.rb +58 -0
- data/spec/bson/open_struct_spec.rb +144 -0
- data/spec/bson/raw_spec.rb +540 -0
- data/spec/bson/regexp_spec.rb +7 -7
- data/spec/bson/timestamp_spec.rb +1 -1
- data/spec/spec_helper.rb +5 -0
- data/spec/support/common_driver.rb +347 -0
- data/spec/support/corpus-tests/array.json +43 -0
- data/spec/support/corpus-tests/boolean.json +27 -0
- data/spec/support/corpus-tests/code.json +67 -0
- data/spec/support/corpus-tests/code_w_scope.json +78 -0
- data/spec/support/corpus-tests/document.json +36 -0
- data/spec/support/corpus-tests/double.json +69 -0
- data/spec/support/corpus-tests/failures/binary.json +69 -0
- data/spec/support/corpus-tests/failures/datetime.json +31 -0
- data/spec/support/corpus-tests/failures/dbpointer.json +42 -0
- data/spec/support/corpus-tests/failures/int64.json +38 -0
- data/spec/support/corpus-tests/failures/symbol.json +62 -0
- data/spec/support/corpus-tests/failures/undefined.json +13 -0
- data/spec/support/corpus-tests/int32.json +38 -0
- data/spec/support/corpus-tests/maxkey.json +12 -0
- data/spec/support/corpus-tests/minkey.json +12 -0
- data/spec/support/corpus-tests/null.json +12 -0
- data/spec/support/corpus-tests/oid.json +28 -0
- data/spec/support/corpus-tests/regex.json +37 -0
- data/spec/support/corpus-tests/string.json +67 -0
- data/spec/support/corpus-tests/timestamp.json +18 -0
- data/spec/support/corpus-tests/top.json +62 -0
- data/spec/support/corpus.rb +265 -0
- data/spec/support/driver-spec-tests/decimal128/decimal128-1.json +363 -0
- data/spec/support/driver-spec-tests/decimal128/decimal128-2.json +793 -0
- data/spec/support/driver-spec-tests/decimal128/decimal128-3.json +1771 -0
- data/spec/support/driver-spec-tests/decimal128/decimal128-4.json +165 -0
- data/spec/support/driver-spec-tests/decimal128/decimal128-5.json +402 -0
- data/spec/support/driver-spec-tests/decimal128/decimal128-6.json +131 -0
- data/spec/support/driver-spec-tests/decimal128/decimal128-7.json +327 -0
- data/spec/support/shared_examples.rb +1 -1
- metadata +77 -4
- metadata.gz.sig +0 -0
data/lib/bson/environment.rb
CHANGED
@@ -30,7 +30,19 @@ module BSON
|
|
30
30
|
#
|
31
31
|
# @since 2.0.0
|
32
32
|
def jruby?
|
33
|
-
defined?(JRUBY_VERSION)
|
33
|
+
@jruby ||= defined?(JRUBY_VERSION)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Determine if we are using Ruby version 1.9.
|
37
|
+
#
|
38
|
+
# @example Are we running with Ruby version 1.9?
|
39
|
+
# Environment.ruby_1_9?
|
40
|
+
#
|
41
|
+
# @return [ true, false ] If the Ruby version is 1.9.
|
42
|
+
#
|
43
|
+
# @since 4.2.0
|
44
|
+
def ruby_1_9?
|
45
|
+
@ruby_1_9 ||= RUBY_VERSION < '2.0.0'
|
34
46
|
end
|
35
47
|
end
|
36
48
|
end
|
data/lib/bson/false_class.rb
CHANGED
data/lib/bson/float.rb
CHANGED
@@ -37,7 +37,7 @@ module BSON
|
|
37
37
|
# @example Get the floating point as encoded BSON.
|
38
38
|
# 1.221311.to_bson
|
39
39
|
#
|
40
|
-
# @return [
|
40
|
+
# @return [ BSON::ByteBuffer ] The buffer with the encoded object.
|
41
41
|
#
|
42
42
|
# @see http://bsonspec.org/#/specification
|
43
43
|
#
|
data/lib/bson/hash.rb
CHANGED
@@ -32,7 +32,7 @@ module BSON
|
|
32
32
|
# @example Get the hash as encoded BSON.
|
33
33
|
# { "field" => "value" }.to_bson
|
34
34
|
#
|
35
|
-
# @return [
|
35
|
+
# @return [ BSON::ByteBuffer ] The buffer with the encoded object.
|
36
36
|
#
|
37
37
|
# @see http://bsonspec.org/#/specification
|
38
38
|
#
|
data/lib/bson/int32.rb
CHANGED
@@ -50,6 +50,52 @@ module BSON
|
|
50
50
|
buffer.get_int32
|
51
51
|
end
|
52
52
|
|
53
|
+
# Instantiate a BSON Int32.
|
54
|
+
#
|
55
|
+
# @param [ Integer ] integer The 32-bit integer.
|
56
|
+
#
|
57
|
+
# @see http://bsonspec.org/#/specification
|
58
|
+
#
|
59
|
+
# @since 4.2.0
|
60
|
+
def initialize(integer)
|
61
|
+
out_of_range! unless integer.bson_int32?
|
62
|
+
@integer = integer.freeze
|
63
|
+
end
|
64
|
+
|
65
|
+
# Append the integer as encoded BSON to a ByteBuffer.
|
66
|
+
#
|
67
|
+
# @example Encoded the integer and append to a ByteBuffer.
|
68
|
+
# int32.to_bson
|
69
|
+
#
|
70
|
+
# @return [ BSON::ByteBuffer ] The buffer with the encoded integer.
|
71
|
+
#
|
72
|
+
# @see http://bsonspec.org/#/specification
|
73
|
+
#
|
74
|
+
# @since 4.2.0
|
75
|
+
def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
|
76
|
+
buffer.put_int32(@integer)
|
77
|
+
end
|
78
|
+
|
79
|
+
# Convert the integer to a BSON string key.
|
80
|
+
#
|
81
|
+
# @example Convert the integer to a BSON key string.
|
82
|
+
# int.to_bson_key
|
83
|
+
#
|
84
|
+
# @param [ true, false ] validating_keys If BSON should validate the key.
|
85
|
+
#
|
86
|
+
# @return [ String ] The string key.
|
87
|
+
#
|
88
|
+
# @since 4.2.0
|
89
|
+
def to_bson_key(validating_keys = Config.validating_keys?)
|
90
|
+
@integer.to_bson_key(validating_keys)
|
91
|
+
end
|
92
|
+
|
93
|
+
private
|
94
|
+
|
95
|
+
def out_of_range!
|
96
|
+
raise RangeError.new("#{self} is not a valid 4 byte integer value.")
|
97
|
+
end
|
98
|
+
|
53
99
|
# Register this type when the module is loaded.
|
54
100
|
#
|
55
101
|
# @since 2.0.0
|
data/lib/bson/int64.rb
CHANGED
@@ -45,6 +45,52 @@ module BSON
|
|
45
45
|
buffer.get_int64
|
46
46
|
end
|
47
47
|
|
48
|
+
# Instantiate a BSON Int64.
|
49
|
+
#
|
50
|
+
# @param [ Integer ] integer The 64-bit integer.
|
51
|
+
#
|
52
|
+
# @see http://bsonspec.org/#/specification
|
53
|
+
#
|
54
|
+
# @since 4.2.0
|
55
|
+
def initialize(integer)
|
56
|
+
out_of_range! unless integer.bson_int64?
|
57
|
+
@integer = integer.freeze
|
58
|
+
end
|
59
|
+
|
60
|
+
# Append the integer as encoded BSON to a ByteBuffer.
|
61
|
+
#
|
62
|
+
# @example Encoded the integer and append to a ByteBuffer.
|
63
|
+
# int64.to_bson
|
64
|
+
#
|
65
|
+
# @return [ BSON::ByteBuffer ] The buffer with the encoded integer.
|
66
|
+
#
|
67
|
+
# @see http://bsonspec.org/#/specification
|
68
|
+
#
|
69
|
+
# @since 4.2.0
|
70
|
+
def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
|
71
|
+
buffer.put_int64(@integer)
|
72
|
+
end
|
73
|
+
|
74
|
+
# Convert the integer to a BSON string key.
|
75
|
+
#
|
76
|
+
# @example Convert the integer to a BSON key string.
|
77
|
+
# int.to_bson_key
|
78
|
+
#
|
79
|
+
# @param [ true, false ] validating_keys If BSON should validate the key.
|
80
|
+
#
|
81
|
+
# @return [ String ] The string key.
|
82
|
+
#
|
83
|
+
# @since 4.2.0
|
84
|
+
def to_bson_key(validating_keys = Config.validating_keys?)
|
85
|
+
@integer.to_bson_key(validating_keys)
|
86
|
+
end
|
87
|
+
|
88
|
+
private
|
89
|
+
|
90
|
+
def out_of_range!
|
91
|
+
raise RangeError.new("#{self} is not a valid 8 byte integer value.")
|
92
|
+
end
|
93
|
+
|
48
94
|
# Register this type when the module is loaded.
|
49
95
|
#
|
50
96
|
# @since 2.0.0
|
data/lib/bson/integer.rb
CHANGED
@@ -98,7 +98,7 @@ module BSON
|
|
98
98
|
# @example Get the integer as encoded BSON.
|
99
99
|
# 1024.to_bson
|
100
100
|
#
|
101
|
-
# @return [
|
101
|
+
# @return [ BSON::ByteBuffer ] The buffer with the encoded object.
|
102
102
|
#
|
103
103
|
# @see http://bsonspec.org/#/specification
|
104
104
|
#
|
data/lib/bson/max_key.rb
CHANGED
data/lib/bson/min_key.rb
CHANGED
data/lib/bson/object_id.rb
CHANGED
@@ -102,6 +102,7 @@ module BSON
|
|
102
102
|
def generation_time
|
103
103
|
::Time.at(generate_data.unpack("N")[0]).utc
|
104
104
|
end
|
105
|
+
alias :to_time :generation_time
|
105
106
|
|
106
107
|
# Get the hash value for the object id.
|
107
108
|
#
|
@@ -163,7 +164,7 @@ module BSON
|
|
163
164
|
# where the object was instantiated in a non-standard way. (Like a
|
164
165
|
# Marshal.load)
|
165
166
|
#
|
166
|
-
# @return [
|
167
|
+
# @return [ BSON::ByteBuffer ] The buffer with the encoded object.
|
167
168
|
#
|
168
169
|
# @see http://bsonspec.org/#/specification
|
169
170
|
#
|
@@ -279,7 +280,7 @@ module BSON
|
|
279
280
|
# @example Is the string a legal object id?
|
280
281
|
# BSON::ObjectId.legal?(string)
|
281
282
|
#
|
282
|
-
# @param [ String ] The string to check.
|
283
|
+
# @param [ String ] string The string to check.
|
283
284
|
#
|
284
285
|
# @return [ true, false ] If the string is legal.
|
285
286
|
#
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# Copyright (C) 2016 MongoDB Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module BSON
|
16
|
+
|
17
|
+
# Injects behaviour for encoding OpenStruct objects using hashes
|
18
|
+
# to raw bytes as specified by the BSON spec.
|
19
|
+
#
|
20
|
+
# @see http://bsonspec.org/#/specification
|
21
|
+
#
|
22
|
+
# @since 4.2.0
|
23
|
+
module OpenStruct
|
24
|
+
|
25
|
+
# Get the OpenStruct as encoded BSON.
|
26
|
+
#
|
27
|
+
# @example Get the OpenStruct object as encoded BSON.
|
28
|
+
# OpenStruct.new({ "field" => "value" }).to_bson
|
29
|
+
#
|
30
|
+
# @return [ BSON::ByteBuffer ] The buffer with the encoded object.
|
31
|
+
#
|
32
|
+
# @see http://bsonspec.org/#/specification
|
33
|
+
#
|
34
|
+
# @since 4.2.0
|
35
|
+
def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
|
36
|
+
if Environment.ruby_1_9?
|
37
|
+
marshal_dump.dup
|
38
|
+
else
|
39
|
+
to_h
|
40
|
+
end.to_bson(buffer, validating_keys)
|
41
|
+
end
|
42
|
+
|
43
|
+
# The BSON type for OpenStruct objects is the Hash type of 0x03.
|
44
|
+
#
|
45
|
+
# @example Get the bson type.
|
46
|
+
# struct.bson_type
|
47
|
+
#
|
48
|
+
# @return [ String ] The character 0x03.
|
49
|
+
#
|
50
|
+
# @since 4.2.0
|
51
|
+
def bson_type
|
52
|
+
::Hash::BSON_TYPE
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
::OpenStruct.send(:include, OpenStruct) if defined?(::OpenStruct)
|
57
|
+
end
|
data/lib/bson/regexp.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2009-
|
1
|
+
# Copyright (C) 2009-2016 MongoDB Inc.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -51,6 +51,8 @@ module BSON
|
|
51
51
|
# Ruby multiline constant.
|
52
52
|
#
|
53
53
|
# @since 3.2.6
|
54
|
+
#
|
55
|
+
# @deprecated Will be removed in 5.0
|
54
56
|
RUBY_MULTILINE_VALUE = 'ms'.freeze
|
55
57
|
|
56
58
|
# Get the regexp as JSON hash data.
|
@@ -79,7 +81,10 @@ module BSON
|
|
79
81
|
# 's' for dotall mode ('.' matches everything),
|
80
82
|
# and 'u' to make \w, \W, etc. match unicode.
|
81
83
|
#
|
82
|
-
# @
|
84
|
+
# @param [ BSON::ByteBuffer ] buffer The byte buffer to append to.
|
85
|
+
# @param [ true, false ] validating_keys
|
86
|
+
#
|
87
|
+
# @return [ BSON::ByteBuffer ] The buffer with the encoded object.
|
83
88
|
#
|
84
89
|
# @see http://bsonspec.org/#/specification
|
85
90
|
#
|
@@ -92,7 +97,8 @@ module BSON
|
|
92
97
|
private
|
93
98
|
|
94
99
|
def bson_options
|
95
|
-
|
100
|
+
# Ruby's Regexp always has BSON's equivalent of 'm' on, so always add it
|
101
|
+
bson_ignorecase + MULTILINE_VALUE + bson_dotall + bson_extended
|
96
102
|
end
|
97
103
|
|
98
104
|
def bson_extended
|
@@ -103,8 +109,9 @@ module BSON
|
|
103
109
|
(options & ::Regexp::IGNORECASE != 0) ? IGNORECASE_VALUE : NO_VALUE
|
104
110
|
end
|
105
111
|
|
106
|
-
def
|
107
|
-
|
112
|
+
def bson_dotall
|
113
|
+
# Ruby Regexp's MULTILINE is equivalent to BSON's dotall value
|
114
|
+
(options & ::Regexp::MULTILINE != 0) ? NEWLINE_VALUE : NO_VALUE
|
108
115
|
end
|
109
116
|
|
110
117
|
# Represents the raw values for the regular expression.
|
@@ -113,6 +120,7 @@ module BSON
|
|
113
120
|
#
|
114
121
|
# @since 3.0.0
|
115
122
|
class Raw
|
123
|
+
include JSON
|
116
124
|
|
117
125
|
# @return [ String ] pattern The regex pattern.
|
118
126
|
attr_reader :pattern
|
@@ -129,7 +137,7 @@ module BSON
|
|
129
137
|
#
|
130
138
|
# @since 3.0.0
|
131
139
|
def compile
|
132
|
-
@compiled ||= ::Regexp.new(pattern,
|
140
|
+
@compiled ||= ::Regexp.new(pattern, options_to_int)
|
133
141
|
end
|
134
142
|
|
135
143
|
# Initialize the new raw regular expression.
|
@@ -138,7 +146,11 @@ module BSON
|
|
138
146
|
# Raw.new(pattern, options)
|
139
147
|
#
|
140
148
|
# @param [ String ] pattern The regular expression pattern.
|
141
|
-
# @param [ Integer ] options The options.
|
149
|
+
# @param [ String, Integer ] options The options.
|
150
|
+
#
|
151
|
+
# @note The ability to specify options as an Integer is deprecated.
|
152
|
+
# Please specify options as a String. The ability to pass options as
|
153
|
+
# as Integer will be removed in version 5.0.0.
|
142
154
|
#
|
143
155
|
# @since 3.0.0
|
144
156
|
def initialize(pattern, options)
|
@@ -153,15 +165,81 @@ module BSON
|
|
153
165
|
#
|
154
166
|
# @since 3.1.0
|
155
167
|
def respond_to?(method, include_private = false)
|
156
|
-
compile.respond_to?(method, include_private
|
168
|
+
compile.respond_to?(method, include_private) || super
|
157
169
|
end
|
158
170
|
|
171
|
+
# Encode the Raw Regexp object to BSON.
|
172
|
+
#
|
173
|
+
# @example Get the raw regular expression as encoded BSON.
|
174
|
+
# raw_regexp.to_bson
|
175
|
+
#
|
176
|
+
# @note From the BSON spec: The first cstring is the regex pattern,
|
177
|
+
# the second is the regex options string. Options are identified
|
178
|
+
# by characters, which must be stored in alphabetical order.
|
179
|
+
# Valid options are 'i' for case insensitive matching,
|
180
|
+
# 'm' for multiline matching, 'x' for verbose mode,
|
181
|
+
# 'l' to make \w, \W, etc. locale dependent,
|
182
|
+
# 's' for dotall mode ('.' matches everything),
|
183
|
+
# and 'u' to make \w, \W, etc. match unicode.
|
184
|
+
#
|
185
|
+
# @param [ BSON::ByteBuffer ] buffer The byte buffer to append to.
|
186
|
+
# @param [ true, false ] validating_keys
|
187
|
+
#
|
188
|
+
# @return [ BSON::ByteBuffer ] The buffer with the encoded object.
|
189
|
+
#
|
190
|
+
# @see http://bsonspec.org/#/specification
|
191
|
+
#
|
192
|
+
# @since 4.2.0
|
193
|
+
def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
|
194
|
+
return compile.to_bson(buffer, validating_keys) if options.is_a?(Integer)
|
195
|
+
buffer.put_cstring(source)
|
196
|
+
buffer.put_cstring(options.chars.sort.join)
|
197
|
+
end
|
198
|
+
|
199
|
+
# Get the raw BSON regexp as JSON hash data.
|
200
|
+
#
|
201
|
+
# @example Get the raw regexp as a JSON hash.
|
202
|
+
# raw_regexp.as_json
|
203
|
+
#
|
204
|
+
# @return [ Hash ] The raw regexp as a JSON hash.
|
205
|
+
#
|
206
|
+
# @since 4.2.0
|
207
|
+
def as_json(*args)
|
208
|
+
{ "$regex" => source, "$options" => options }
|
209
|
+
end
|
210
|
+
|
211
|
+
# Check equality of the raw bson regexp against another.
|
212
|
+
#
|
213
|
+
# @example Check if the raw bson regexp is equal to the other.
|
214
|
+
# raw_regexp == other
|
215
|
+
#
|
216
|
+
# @param [ Object ] other The object to check against.
|
217
|
+
#
|
218
|
+
# @return [ true, false ] If the objects are equal.
|
219
|
+
#
|
220
|
+
# @since 4.2.0
|
221
|
+
def ==(other)
|
222
|
+
return false unless other.is_a?(::Regexp::Raw)
|
223
|
+
pattern == other.pattern &&
|
224
|
+
options == other.options
|
225
|
+
end
|
226
|
+
alias :eql? :==
|
227
|
+
|
159
228
|
private
|
160
229
|
|
161
230
|
def method_missing(method, *arguments)
|
162
231
|
return super unless respond_to?(method)
|
163
232
|
compile.send(method, *arguments)
|
164
233
|
end
|
234
|
+
|
235
|
+
def options_to_int
|
236
|
+
return options if options.is_a?(Integer)
|
237
|
+
opts = 0
|
238
|
+
opts |= ::Regexp::IGNORECASE if options.include?(IGNORECASE_VALUE)
|
239
|
+
opts |= ::Regexp::MULTILINE if options.include?(NEWLINE_VALUE)
|
240
|
+
opts |= ::Regexp::EXTENDED if options.include?(EXTENDED_VALUE)
|
241
|
+
opts
|
242
|
+
end
|
165
243
|
end
|
166
244
|
|
167
245
|
module ClassMethods
|
@@ -177,17 +255,7 @@ module BSON
|
|
177
255
|
# @since 2.0.0
|
178
256
|
def from_bson(buffer)
|
179
257
|
pattern = buffer.get_cstring
|
180
|
-
options =
|
181
|
-
while (option = buffer.get_byte) != NULL_BYTE
|
182
|
-
case option
|
183
|
-
when IGNORECASE_VALUE
|
184
|
-
options |= ::Regexp::IGNORECASE
|
185
|
-
when MULTILINE_VALUE, NEWLINE_VALUE
|
186
|
-
options |= ::Regexp::MULTILINE
|
187
|
-
when EXTENDED_VALUE
|
188
|
-
options |= ::Regexp::EXTENDED
|
189
|
-
end
|
190
|
-
end
|
258
|
+
options = buffer.get_cstring
|
191
259
|
Raw.new(pattern, options)
|
192
260
|
end
|
193
261
|
end
|
data/lib/bson/registry.rb
CHANGED