bson_ext 1.9.2 → 1.10.0.rc0
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/LICENSE +1 -1
- data/VERSION +1 -1
- data/ext/cbson/bson_buffer.c +1 -1
- data/ext/cbson/bson_buffer.h +1 -1
- data/ext/cbson/cbson.c +130 -66
- data/ext/cbson/encoding_helpers.c +1 -1
- data/ext/cbson/encoding_helpers.h +1 -1
- data/ext/cbson/version.h +2 -2
- metadata +30 -29
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 940e8d1b2870656eb41408f31af76a4fa6ed11f1
|
4
|
+
data.tar.gz: 2a9a132be6fc1aa2f7c77fa96d875239687cc618
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ccbe4e1e6facd55dfb64a4ae55efba46844d8619a957bc7558a82ad4b5bd4d5e5551cd60c31093d9cf34eb7caa64c1b6d6a879f9ec5bfc899b1e12eae23b667
|
7
|
+
data.tar.gz: d911ae505fc6ace187afa9cf9cb1830d001961193c896d66248a9b28e84d929de751d65da2fa4c9be2461044131586b5ee6139b957abdf13d95db2e2374ff8ae
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/LICENSE
CHANGED
@@ -175,7 +175,7 @@
|
|
175
175
|
|
176
176
|
END OF TERMS AND CONDITIONS
|
177
177
|
|
178
|
-
Copyright (C) 2008-2013
|
178
|
+
Copyright (C) 2008-2013 MongoDB, Inc.
|
179
179
|
|
180
180
|
Licensed under the Apache License, Version 2.0 (the "License");
|
181
181
|
you may not use this file except in compliance with the License.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.10.0.rc0
|
data/ext/cbson/bson_buffer.c
CHANGED
data/ext/cbson/bson_buffer.h
CHANGED
data/ext/cbson/cbson.c
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
* Copyright (C) 2013
|
2
|
+
* Copyright (C) 2009-2013 MongoDB, Inc.
|
3
3
|
*
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
5
|
* you may not use this file except in compliance with the License.
|
@@ -89,6 +89,13 @@ static VALUE MinKey;
|
|
89
89
|
static VALUE MaxKey;
|
90
90
|
static VALUE Timestamp;
|
91
91
|
static VALUE Regexp;
|
92
|
+
static VALUE BSONRegex;
|
93
|
+
static VALUE BSONRegex_IGNORECASE;
|
94
|
+
static VALUE BSONRegex_EXTENDED;
|
95
|
+
static VALUE BSONRegex_MULTILINE;
|
96
|
+
static VALUE BSONRegex_DOTALL;
|
97
|
+
static VALUE BSONRegex_LOCALE_DEPENDENT;
|
98
|
+
static VALUE BSONRegex_UNICODE;
|
92
99
|
static VALUE OrderedHash;
|
93
100
|
static VALUE InvalidKeyName;
|
94
101
|
static VALUE InvalidStringEncoding;
|
@@ -99,6 +106,10 @@ static VALUE RB_HASH;
|
|
99
106
|
|
100
107
|
static int max_bson_size;
|
101
108
|
|
109
|
+
struct deserialize_opts {
|
110
|
+
int compile_regex;
|
111
|
+
};
|
112
|
+
|
102
113
|
#if HAVE_RUBY_ENCODING_H
|
103
114
|
#include "ruby/encoding.h"
|
104
115
|
#define STR_NEW(p,n) \
|
@@ -195,7 +206,7 @@ static int cmp_char(const void* a, const void* b) {
|
|
195
206
|
static void write_doc(bson_buffer_t buffer, VALUE hash, VALUE check_keys, VALUE move_id);
|
196
207
|
static int write_element_with_id(VALUE key, VALUE value, VALUE extra);
|
197
208
|
static int write_element_without_id(VALUE key, VALUE value, VALUE extra);
|
198
|
-
static VALUE elements_to_hash(const char* buffer, int max);
|
209
|
+
static VALUE elements_to_hash(const char* buffer, int max, struct deserialize_opts * opts);
|
199
210
|
|
200
211
|
static VALUE pack_extra(bson_buffer_t buffer, VALUE check_keys) {
|
201
212
|
return rb_ary_new3(2, LL2NUM((long long)buffer), check_keys);
|
@@ -207,6 +218,79 @@ static void write_name_and_type(bson_buffer_t buffer, VALUE name, char type) {
|
|
207
218
|
SAFE_WRITE(buffer, &zero, 1);
|
208
219
|
}
|
209
220
|
|
221
|
+
static void serialize_regex(bson_buffer_t buffer, VALUE key, VALUE pattern, long flags, VALUE value, int native) {
|
222
|
+
|
223
|
+
VALUE has_extra;
|
224
|
+
|
225
|
+
write_name_and_type(buffer, key, 0x0B);
|
226
|
+
|
227
|
+
write_utf8(buffer, pattern, 0);
|
228
|
+
SAFE_WRITE(buffer, &zero, 1);
|
229
|
+
|
230
|
+
if (native == 1) {
|
231
|
+
// Ruby regular expressions always use multiline mode
|
232
|
+
char multiline = 'm';
|
233
|
+
SAFE_WRITE(buffer, &multiline, 1);
|
234
|
+
|
235
|
+
if (flags & IGNORECASE) {
|
236
|
+
char ignorecase = 'i';
|
237
|
+
SAFE_WRITE(buffer, &ignorecase, 1);
|
238
|
+
}
|
239
|
+
|
240
|
+
// dotall on the server is multiline in Ruby
|
241
|
+
if (flags & MULTILINE) {
|
242
|
+
char dotall = 's';
|
243
|
+
SAFE_WRITE(buffer, &dotall, 1);
|
244
|
+
}
|
245
|
+
|
246
|
+
if (flags & EXTENDED) {
|
247
|
+
char extended = 'x';
|
248
|
+
SAFE_WRITE(buffer, &extended, 1);
|
249
|
+
}
|
250
|
+
}
|
251
|
+
else {
|
252
|
+
if (flags & BSONRegex_IGNORECASE) {
|
253
|
+
char ignorecase = 'i';
|
254
|
+
SAFE_WRITE(buffer, &ignorecase, 1);
|
255
|
+
}
|
256
|
+
|
257
|
+
if (flags & BSONRegex_LOCALE_DEPENDENT) {
|
258
|
+
char locale_dependent = 'l';
|
259
|
+
SAFE_WRITE(buffer, &locale_dependent, 1);
|
260
|
+
}
|
261
|
+
|
262
|
+
if (flags & BSONRegex_MULTILINE) {
|
263
|
+
char multiline = 'm';
|
264
|
+
SAFE_WRITE(buffer, &multiline, 1);
|
265
|
+
}
|
266
|
+
|
267
|
+
if (flags & BSONRegex_DOTALL) {
|
268
|
+
char dotall = 's';
|
269
|
+
SAFE_WRITE(buffer, &dotall, 1);
|
270
|
+
}
|
271
|
+
|
272
|
+
if (flags & BSONRegex_UNICODE) {
|
273
|
+
char unicode = 'u';
|
274
|
+
SAFE_WRITE(buffer, &unicode, 1);
|
275
|
+
}
|
276
|
+
|
277
|
+
if (flags & BSONRegex_EXTENDED) {
|
278
|
+
char extended = 'x';
|
279
|
+
SAFE_WRITE(buffer, &extended, 1);
|
280
|
+
}
|
281
|
+
}
|
282
|
+
|
283
|
+
has_extra = rb_funcall(value, rb_intern("respond_to?"), 1, rb_str_new2("extra_options_str"));
|
284
|
+
if (TYPE(has_extra) == T_TRUE) {
|
285
|
+
VALUE extra = rb_funcall(value, rb_intern("extra_options_str"), 0);
|
286
|
+
bson_buffer_position old_position = bson_buffer_get_position(buffer);
|
287
|
+
SAFE_WRITE(buffer, RSTRING_PTR(extra), RSTRING_LENINT(extra));
|
288
|
+
qsort(bson_buffer_get_buffer(buffer) + old_position, RSTRING_LEN(extra), sizeof(char), cmp_char);
|
289
|
+
}
|
290
|
+
SAFE_WRITE(buffer, &zero, 1);
|
291
|
+
|
292
|
+
}
|
293
|
+
|
210
294
|
static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
|
211
295
|
bson_buffer_t buffer = (bson_buffer_t)NUM2LL(rb_ary_entry(extra, 0));
|
212
296
|
VALUE check_keys = rb_ary_entry(extra, 1);
|
@@ -468,6 +552,11 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
|
|
468
552
|
SAFE_WRITE(buffer, &zero, 1);
|
469
553
|
break;
|
470
554
|
}
|
555
|
+
if (strcmp(cls, "BSON::Regex") == 0) {
|
556
|
+
serialize_regex(buffer, key, rb_funcall(value, rb_intern("pattern"), 0),
|
557
|
+
FIX2INT(rb_funcall(value, rb_intern("options"), 0)), value, 0);
|
558
|
+
break;
|
559
|
+
}
|
471
560
|
bson_buffer_free(buffer);
|
472
561
|
rb_raise(InvalidDocument, "Cannot serialize an object of class %s into BSON.", cls);
|
473
562
|
break;
|
@@ -501,37 +590,7 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
|
|
501
590
|
{
|
502
591
|
VALUE pattern = RREGEXP_SRC(value);
|
503
592
|
long flags = RREGEXP_OPTIONS(value);
|
504
|
-
|
505
|
-
|
506
|
-
write_name_and_type(buffer, key, 0x0B);
|
507
|
-
|
508
|
-
write_utf8(buffer, pattern, 0);
|
509
|
-
SAFE_WRITE(buffer, &zero, 1);
|
510
|
-
|
511
|
-
if (flags & IGNORECASE) {
|
512
|
-
char ignorecase = 'i';
|
513
|
-
SAFE_WRITE(buffer, &ignorecase, 1);
|
514
|
-
}
|
515
|
-
if (flags & MULTILINE) {
|
516
|
-
char multiline = 'm';
|
517
|
-
char dotall = 's';
|
518
|
-
SAFE_WRITE(buffer, &multiline, 1);
|
519
|
-
SAFE_WRITE(buffer, &dotall, 1);
|
520
|
-
}
|
521
|
-
if (flags & EXTENDED) {
|
522
|
-
char extended = 'x';
|
523
|
-
SAFE_WRITE(buffer, &extended, 1);
|
524
|
-
}
|
525
|
-
|
526
|
-
has_extra = rb_funcall(value, rb_intern("respond_to?"), 1, rb_str_new2("extra_options_str"));
|
527
|
-
if (TYPE(has_extra) == T_TRUE) {
|
528
|
-
VALUE extra = rb_funcall(value, rb_intern("extra_options_str"), 0);
|
529
|
-
bson_buffer_position old_position = bson_buffer_get_position(buffer);
|
530
|
-
SAFE_WRITE(buffer, RSTRING_PTR(extra), RSTRING_LENINT(extra));
|
531
|
-
qsort(bson_buffer_get_buffer(buffer) + old_position, RSTRING_LEN(extra), sizeof(char), cmp_char);
|
532
|
-
}
|
533
|
-
SAFE_WRITE(buffer, &zero, 1);
|
534
|
-
|
593
|
+
serialize_regex(buffer, key, pattern, flags, value, 1);
|
535
594
|
break;
|
536
595
|
}
|
537
596
|
default:
|
@@ -648,10 +707,11 @@ static VALUE method_serialize(VALUE self, VALUE doc, VALUE check_keys,
|
|
648
707
|
return result;
|
649
708
|
}
|
650
709
|
|
651
|
-
static VALUE get_value(const char* buffer, int* position,
|
710
|
+
static VALUE get_value(const char* buffer, int* position,
|
711
|
+
unsigned char type, struct deserialize_opts * opts) {
|
652
712
|
VALUE value;
|
653
713
|
switch (type) {
|
654
|
-
case
|
714
|
+
case 255:
|
655
715
|
{
|
656
716
|
value = rb_class_new_instance(0, NULL, MinKey);
|
657
717
|
break;
|
@@ -682,17 +742,17 @@ static VALUE get_value(const char* buffer, int* position, int type) {
|
|
682
742
|
int offset = *position + 10;
|
683
743
|
VALUE argv[2];
|
684
744
|
int collection_length = *(int*)(buffer + offset) - 1;
|
685
|
-
char id_type;
|
745
|
+
unsigned char id_type;
|
686
746
|
offset += 4;
|
687
747
|
|
688
748
|
argv[0] = STR_NEW(buffer + offset, collection_length);
|
689
749
|
offset += collection_length + 1;
|
690
|
-
id_type = buffer[offset];
|
750
|
+
id_type = (unsigned char)buffer[offset];
|
691
751
|
offset += 5;
|
692
|
-
argv[1] = get_value(buffer, &offset,
|
752
|
+
argv[1] = get_value(buffer, &offset, id_type, opts);
|
693
753
|
value = rb_class_new_instance(2, argv, DBRef);
|
694
754
|
} else {
|
695
|
-
value = elements_to_hash(buffer + *position + 4, size - 5);
|
755
|
+
value = elements_to_hash(buffer + *position + 4, size - 5, opts);
|
696
756
|
}
|
697
757
|
*position += size;
|
698
758
|
break;
|
@@ -706,12 +766,12 @@ static VALUE get_value(const char* buffer, int* position, int type) {
|
|
706
766
|
|
707
767
|
value = rb_ary_new();
|
708
768
|
while (*position < end) {
|
709
|
-
|
769
|
+
unsigned char type = (unsigned char)buffer[(*position)++];
|
710
770
|
int key_size = (int)strlen(buffer + *position);
|
711
771
|
VALUE to_append;
|
712
772
|
|
713
773
|
*position += key_size + 1; // just skip the key, they're in order.
|
714
|
-
to_append = get_value(buffer, position, type);
|
774
|
+
to_append = get_value(buffer, position, type, opts);
|
715
775
|
rb_ary_push(value, to_append);
|
716
776
|
}
|
717
777
|
(*position)++;
|
@@ -786,29 +846,19 @@ static VALUE get_value(const char* buffer, int* position, int type) {
|
|
786
846
|
{
|
787
847
|
int pattern_length = (int)strlen(buffer + *position);
|
788
848
|
VALUE pattern = STR_NEW(buffer + *position, pattern_length);
|
789
|
-
int flags_length
|
849
|
+
int flags_length;
|
790
850
|
VALUE argv[3];
|
791
851
|
*position += pattern_length + 1;
|
792
852
|
|
793
853
|
flags_length = (int)strlen(buffer + *position);
|
794
|
-
|
795
|
-
char flag = buffer[*position + i];
|
796
|
-
if (flag == 'i') {
|
797
|
-
flags |= IGNORECASE;
|
798
|
-
}
|
799
|
-
else if (flag == 'm') {
|
800
|
-
flags |= MULTILINE;
|
801
|
-
}
|
802
|
-
else if (flag == 's') {
|
803
|
-
flags |= MULTILINE;
|
804
|
-
}
|
805
|
-
else if (flag == 'x') {
|
806
|
-
flags |= EXTENDED;
|
807
|
-
}
|
808
|
-
}
|
854
|
+
VALUE flags_str = STR_NEW(buffer + *position, flags_length);
|
809
855
|
argv[0] = pattern;
|
810
|
-
argv[1] =
|
811
|
-
value = rb_class_new_instance(2, argv,
|
856
|
+
argv[1] = flags_str;
|
857
|
+
value = rb_class_new_instance(2, argv, BSONRegex);
|
858
|
+
|
859
|
+
if (opts->compile_regex == 1) {
|
860
|
+
value = rb_funcall(value, rb_intern("try_compile"), 0);
|
861
|
+
}
|
812
862
|
*position += flags_length + 1;
|
813
863
|
break;
|
814
864
|
}
|
@@ -850,7 +900,7 @@ static VALUE get_value(const char* buffer, int* position, int type) {
|
|
850
900
|
*position += code_length + 1;
|
851
901
|
|
852
902
|
memcpy(&scope_size, buffer + *position, 4);
|
853
|
-
scope = elements_to_hash(buffer + *position + 4, scope_size - 5);
|
903
|
+
scope = elements_to_hash(buffer + *position + 4, scope_size - 5, opts);
|
854
904
|
*position += scope_size;
|
855
905
|
|
856
906
|
argv[0] = code;
|
@@ -900,30 +950,36 @@ static VALUE get_value(const char* buffer, int* position, int type) {
|
|
900
950
|
return value;
|
901
951
|
}
|
902
952
|
|
903
|
-
static VALUE elements_to_hash(const char* buffer, int max) {
|
953
|
+
static VALUE elements_to_hash(const char* buffer, int max, struct deserialize_opts * opts) {
|
904
954
|
VALUE hash = rb_class_new_instance(0, NULL, OrderedHash);
|
905
955
|
int position = 0;
|
906
956
|
while (position < max) {
|
907
|
-
|
957
|
+
unsigned char type = (unsigned char)buffer[position++];
|
908
958
|
int name_length = (int)strlen(buffer + position);
|
909
959
|
VALUE name = STR_NEW(buffer + position, name_length);
|
910
960
|
VALUE value;
|
911
961
|
position += name_length + 1;
|
912
|
-
value = get_value(buffer, &position, type);
|
962
|
+
value = get_value(buffer, &position, type, opts);
|
913
963
|
rb_funcall(hash, element_assignment_method, 2, name, value);
|
914
964
|
}
|
915
965
|
return hash;
|
916
966
|
}
|
917
967
|
|
918
|
-
static VALUE method_deserialize(VALUE self, VALUE bson) {
|
968
|
+
static VALUE method_deserialize(VALUE self, VALUE bson, VALUE opts) {
|
919
969
|
const char* buffer = RSTRING_PTR(bson);
|
920
970
|
int remaining = RSTRING_LENINT(bson);
|
971
|
+
struct deserialize_opts deserialize_opts;
|
972
|
+
deserialize_opts.compile_regex = 1;
|
973
|
+
if (rb_funcall(opts, rb_intern("has_key?"), 1, ID2SYM(rb_intern("compile_regex"))) == Qtrue &&
|
974
|
+
rb_hash_aref(opts, ID2SYM(rb_intern("compile_regex"))) == Qfalse) {
|
975
|
+
deserialize_opts.compile_regex = 0;
|
976
|
+
}
|
921
977
|
|
922
978
|
// NOTE we just swallow the size and end byte here
|
923
979
|
buffer += 4;
|
924
980
|
remaining -= 5;
|
925
981
|
|
926
|
-
return elements_to_hash(buffer, remaining);
|
982
|
+
return elements_to_hash(buffer, remaining, &deserialize_opts);
|
927
983
|
}
|
928
984
|
|
929
985
|
static int legal_objectid_str(VALUE str) {
|
@@ -1084,6 +1140,14 @@ void Init_cbson() {
|
|
1084
1140
|
MaxKey = rb_const_get(bson, rb_intern("MaxKey"));
|
1085
1141
|
rb_require("bson/types/timestamp");
|
1086
1142
|
Timestamp = rb_const_get(bson, rb_intern("Timestamp"));
|
1143
|
+
rb_require("bson/types/regex");
|
1144
|
+
BSONRegex = rb_const_get(bson, rb_intern("Regex"));
|
1145
|
+
BSONRegex_IGNORECASE = rb_const_get(BSONRegex, rb_intern("IGNORECASE"));
|
1146
|
+
BSONRegex_EXTENDED = rb_const_get(BSONRegex, rb_intern("EXTENDED"));
|
1147
|
+
BSONRegex_MULTILINE = rb_const_get(BSONRegex, rb_intern("MULTILINE"));
|
1148
|
+
BSONRegex_DOTALL = rb_const_get(BSONRegex, rb_intern("DOTALL"));
|
1149
|
+
BSONRegex_LOCALE_DEPENDENT = rb_const_get(BSONRegex, rb_intern("LOCALE_DEPENDENT"));
|
1150
|
+
BSONRegex_UNICODE = rb_const_get(BSONRegex, rb_intern("UNICODE"));
|
1087
1151
|
Regexp = rb_const_get(rb_cObject, rb_intern("Regexp"));
|
1088
1152
|
rb_require("bson/exceptions");
|
1089
1153
|
InvalidKeyName = rb_const_get(bson, rb_intern("InvalidKeyName"));
|
@@ -1098,7 +1162,7 @@ void Init_cbson() {
|
|
1098
1162
|
ext_version = rb_str_new2(VERSION);
|
1099
1163
|
rb_define_const(CBson, "VERSION", ext_version);
|
1100
1164
|
rb_define_module_function(CBson, "serialize", method_serialize, 4);
|
1101
|
-
rb_define_module_function(CBson, "deserialize", method_deserialize,
|
1165
|
+
rb_define_module_function(CBson, "deserialize", method_deserialize, 2);
|
1102
1166
|
rb_define_module_function(CBson, "max_bson_size", method_max_bson_size, 0);
|
1103
1167
|
rb_define_module_function(CBson, "update_max_bson_size", method_update_max_bson_size, 1);
|
1104
1168
|
|
data/ext/cbson/version.h
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
* Copyright (C) 2013
|
2
|
+
* Copyright (C) 2009-2013 MongoDB, Inc.
|
3
3
|
*
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
5
|
* you may not use this file except in compliance with the License.
|
@@ -14,4 +14,4 @@
|
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
16
|
|
17
|
-
#define VERSION "1.
|
17
|
+
#define VERSION "1.10.0.rc0"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bson_ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.10.0.rc0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tyler Brock
|
@@ -14,41 +14,42 @@ bindir: bin
|
|
14
14
|
cert_chain:
|
15
15
|
- |
|
16
16
|
-----BEGIN CERTIFICATE-----
|
17
|
-
|
17
|
+
MIIDfDCCAmSgAwIBAgIBATANBgkqhkiG9w0BAQUFADBCMRQwEgYDVQQDDAtkcml2
|
18
18
|
ZXItcnVieTEVMBMGCgmSJomT8ixkARkWBTEwZ2VuMRMwEQYKCZImiZPyLGQBGRYD
|
19
|
-
|
19
|
+
Y29tMB4XDTE0MDIxODIyMDQwMVoXDTE1MDIxODIyMDQwMVowQjEUMBIGA1UEAwwL
|
20
20
|
ZHJpdmVyLXJ1YnkxFTATBgoJkiaJk/IsZAEZFgUxMGdlbjETMBEGCgmSJomT8ixk
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
21
|
+
ARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANdoZILE3alL
|
22
|
+
V5OGgh2hkgVTd79nRV3akueIZgu9qXhNHixXsyxBnaSPbrK7s1bWurgVT/Klp//3
|
23
|
+
ASnU78R5ChmCX5/xMRp+E9FO69nCt33njUKyYU0+SwiEID02At+bUb3iS7S5CIMO
|
24
|
+
tLSybh/DhH9Hi5g+FqwpRQy/RQcTJ6Uz/75+Ng2J0oz6eVvXAuEz75apE3qJcLb3
|
25
|
+
w699mm0e4qqpfHcSkgJbOGpmbrb+XimNy+AXdagkKYk2tUjYiCwkLop0hf/XBEWu
|
26
|
+
ap8vwBNdAn+ox1eNQUSdowBf4dJvIJWepRjqeFRcLPUrF5JES7qyHbnyi7nqtaCS
|
27
|
+
GwLBeSsgxdECAwEAAaN9MHswCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0O
|
28
|
+
BBYEFEfmGN56RK0OIRqm4XYACgI7AXbsMCAGA1UdEQQZMBeBFWRyaXZlci1ydWJ5
|
29
|
+
QDEwZ2VuLmNvbTAgBgNVHRIEGTAXgRVkcml2ZXItcnVieUAxMGdlbi5jb20wDQYJ
|
30
|
+
KoZIhvcNAQEFBQADggEBAFcxu5xBsPg6szjBrkej2P+Qa9LK22rdIZtECnK8TLsQ
|
31
|
+
tmNdYMraNgiYf96U1zZKvjgzI04BRYmIeCnIDdg2MkpOZO35d/v/Hu0N9tiu08NX
|
32
|
+
aSSw+yzt43hIzEtYgs0WlSxXqnmu0ClA37t+mA0OTzp64pkQSiJfYlMbsCpElk4r
|
33
|
+
vJ5hsT7hMiPKABow5+pXckFwznEuciyBCx3ox9MnEic8qsjdiZgleeAJKDpKb+uX
|
34
|
+
ZLLlRFg7YfmA+N2giYd0oQz670xnBy5ZOvtXZe1wLLfGyeDwXeTrQGUE3oBRpr/t
|
35
|
+
eokvmuSJOtUOXE7dArS2jfgXfYsg1YZt4HttbJ9Z4ZM=
|
35
36
|
-----END CERTIFICATE-----
|
36
|
-
date:
|
37
|
+
date: 2014-02-18 00:00:00.000000000 Z
|
37
38
|
dependencies:
|
38
39
|
- !ruby/object:Gem::Dependency
|
39
40
|
name: bson
|
40
41
|
requirement: !ruby/object:Gem::Requirement
|
41
42
|
requirements:
|
42
|
-
- - ~>
|
43
|
+
- - "~>"
|
43
44
|
- !ruby/object:Gem::Version
|
44
|
-
version: 1.
|
45
|
+
version: 1.10.0.rc0
|
45
46
|
type: :runtime
|
46
47
|
prerelease: false
|
47
48
|
version_requirements: !ruby/object:Gem::Requirement
|
48
49
|
requirements:
|
49
|
-
- - ~>
|
50
|
+
- - "~>"
|
50
51
|
- !ruby/object:Gem::Version
|
51
|
-
version: 1.
|
52
|
+
version: 1.10.0.rc0
|
52
53
|
description: C extensions to accelerate the Ruby BSON serialization. For more information
|
53
54
|
about BSON, see http://bsonspec.org. For information about MongoDB, see http://www.mongodb.org.
|
54
55
|
email: mongodb-dev@googlegroups.com
|
@@ -57,15 +58,15 @@ extensions:
|
|
57
58
|
- ext/cbson/extconf.rb
|
58
59
|
extra_rdoc_files: []
|
59
60
|
files:
|
60
|
-
- bson_ext.gemspec
|
61
61
|
- LICENSE
|
62
62
|
- VERSION
|
63
|
-
-
|
63
|
+
- bson_ext.gemspec
|
64
64
|
- ext/cbson/bson_buffer.c
|
65
|
+
- ext/cbson/bson_buffer.h
|
65
66
|
- ext/cbson/cbson.c
|
66
67
|
- ext/cbson/encoding_helpers.c
|
67
|
-
- ext/cbson/bson_buffer.h
|
68
68
|
- ext/cbson/encoding_helpers.h
|
69
|
+
- ext/cbson/extconf.rb
|
69
70
|
- ext/cbson/version.h
|
70
71
|
homepage: http://www.mongodb.org
|
71
72
|
licenses:
|
@@ -77,17 +78,17 @@ require_paths:
|
|
77
78
|
- ext/bson_ext
|
78
79
|
required_ruby_version: !ruby/object:Gem::Requirement
|
79
80
|
requirements:
|
80
|
-
- -
|
81
|
+
- - ">="
|
81
82
|
- !ruby/object:Gem::Version
|
82
83
|
version: '0'
|
83
84
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
85
|
requirements:
|
85
|
-
- -
|
86
|
+
- - ">"
|
86
87
|
- !ruby/object:Gem::Version
|
87
|
-
version:
|
88
|
+
version: 1.3.1
|
88
89
|
requirements: []
|
89
90
|
rubyforge_project: bson_ext
|
90
|
-
rubygems_version: 2.
|
91
|
+
rubygems_version: 2.2.1
|
91
92
|
signing_key:
|
92
93
|
specification_version: 4
|
93
94
|
summary: C extensions for Ruby BSON.
|
metadata.gz.sig
CHANGED
Binary file
|