panko_serializer 0.6.0 → 0.7.4
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
- data/.github/workflows/docs.yml +39 -0
- data/.github/workflows/ruby.yml +48 -0
- data/.gitignore +2 -1
- data/Gemfile +2 -2
- data/README.md +7 -7
- data/benchmarks/app.rb +1 -0
- data/benchmarks/bm_panko_json.rb +5 -1
- data/benchmarks/setup.rb +3 -1
- data/benchmarks/type_casts/bm_panko.rb +2 -2
- data/docs/.DS_Store +0 -0
- data/docs/README.md +195 -8
- data/docs/core/Footer.js +81 -0
- data/docs/{associations.md → docs/associations.md} +23 -5
- data/docs/{attributes.md → docs/attributes.md} +25 -13
- data/docs/{design-choices.md → docs/design-choices.md} +6 -2
- data/docs/{getting-started.md → docs/getting-started.md} +19 -2
- data/docs/docs/introduction.md +13 -0
- data/docs/{performance.md → docs/performance.md} +11 -7
- data/docs/{response-bag.md → docs/response-bag.md} +24 -1
- data/docs/i18n/en.json +50 -0
- data/docs/package-lock.json +9636 -0
- data/docs/package.json +14 -0
- data/docs/sidebars.json +15 -0
- data/docs/siteConfig.js +80 -0
- data/docs/static/.DS_Store +0 -0
- data/docs/static/css/custom.css +51 -0
- data/docs/static/img/favicon.ico +0 -0
- data/docs/static/img/oss_logo.png +0 -0
- data/docs/static/img/undraw_code_review.svg +1 -0
- data/docs/static/img/undraw_monitor.svg +1 -0
- data/docs/static/img/undraw_note_list.svg +1 -0
- data/docs/static/img/undraw_online.svg +1 -0
- data/docs/static/img/undraw_open_source.svg +1 -0
- data/docs/static/img/undraw_operating_system.svg +1 -0
- data/docs/static/img/undraw_react.svg +1 -0
- data/docs/static/img/undraw_tweetstorm.svg +1 -0
- data/docs/static/img/undraw_youtube_tutorial.svg +1 -0
- data/docs/static/index.html +14 -0
- data/ext/panko_serializer/attributes_writer/active_record.c +58 -16
- data/ext/panko_serializer/attributes_writer/attributes_writer.c +15 -3
- data/ext/panko_serializer/attributes_writer/attributes_writer.h +2 -1
- data/ext/panko_serializer/attributes_writer/common.h +1 -1
- data/ext/panko_serializer/attributes_writer/hash.c +12 -0
- data/ext/panko_serializer/attributes_writer/hash.h +9 -0
- data/ext/panko_serializer/attributes_writer/plain.c +2 -3
- data/ext/panko_serializer/attributes_writer/type_cast/type_cast.c +54 -21
- data/ext/panko_serializer/attributes_writer/type_cast/type_cast.h +1 -2
- data/ext/panko_serializer/panko_serializer.c +15 -7
- data/ext/panko_serializer/serialization_descriptor/serialization_descriptor.c +7 -10
- data/lib/panko/association.rb +1 -1
- data/lib/panko/object_writer.rb +8 -0
- data/lib/panko/response.rb +5 -4
- data/lib/panko/serializer.rb +5 -0
- data/lib/panko/version.rb +1 -1
- data/panko_serializer.gemspec +7 -7
- metadata +47 -23
- data/.travis.yml +0 -33
- data/docs/docpress.json +0 -4
@@ -7,7 +7,7 @@ ID to_i_id = 0;
|
|
7
7
|
|
8
8
|
static VALUE oj_type = Qundef;
|
9
9
|
static VALUE oj_parseerror_type = Qundef;
|
10
|
-
ID
|
10
|
+
ID oj_sc_parse_id = 0;
|
11
11
|
|
12
12
|
// Caching ActiveRecord Types
|
13
13
|
static VALUE ar_string_type = Qundef;
|
@@ -212,19 +212,6 @@ bool is_json_type(VALUE type_klass) {
|
|
212
212
|
(ar_json_type != Qundef && type_klass == ar_json_type));
|
213
213
|
}
|
214
214
|
|
215
|
-
VALUE rescue_func() { return Qnil; }
|
216
|
-
|
217
|
-
VALUE parse_json(VALUE value) { return rb_funcall(oj_type, load_id, 1, value); }
|
218
|
-
|
219
|
-
VALUE cast_json_type(VALUE value) {
|
220
|
-
if (!RB_TYPE_P(value, T_STRING)) {
|
221
|
-
return value;
|
222
|
-
}
|
223
|
-
|
224
|
-
volatile VALUE result =
|
225
|
-
rb_rescue2(parse_json, value, rescue_func, Qundef, oj_parseerror_type, 0);
|
226
|
-
return result;
|
227
|
-
}
|
228
215
|
|
229
216
|
bool is_boolean_type(VALUE type_klass) { return type_klass == ar_boolean_type; }
|
230
217
|
|
@@ -287,7 +274,36 @@ VALUE cast_date_time_type(VALUE value) {
|
|
287
274
|
return Qundef;
|
288
275
|
}
|
289
276
|
|
290
|
-
VALUE
|
277
|
+
VALUE rescue_func() { return Qfalse; }
|
278
|
+
|
279
|
+
VALUE parse_json(VALUE value) { return rb_funcall(oj_type, oj_sc_parse_id, 2, rb_cObject, value); }
|
280
|
+
|
281
|
+
VALUE is_json_value(VALUE value) {
|
282
|
+
if (!RB_TYPE_P(value, T_STRING)) {
|
283
|
+
return value;
|
284
|
+
}
|
285
|
+
|
286
|
+
|
287
|
+
if(RSTRING_LEN(value) == 0) {
|
288
|
+
return Qfalse;
|
289
|
+
}
|
290
|
+
|
291
|
+
volatile VALUE result =
|
292
|
+
rb_rescue2(parse_json, value, rescue_func, Qundef, oj_parseerror_type, 0);
|
293
|
+
|
294
|
+
if(NIL_P(result)) {
|
295
|
+
return Qtrue;
|
296
|
+
}
|
297
|
+
|
298
|
+
if(result == Qfalse) {
|
299
|
+
return Qfalse;
|
300
|
+
}
|
301
|
+
|
302
|
+
// TODO: fix me!
|
303
|
+
return Qfalse;
|
304
|
+
}
|
305
|
+
|
306
|
+
VALUE type_cast(VALUE type_metadata, VALUE value, VALUE* isJson) {
|
291
307
|
if (value == Qnil || value == Qundef) {
|
292
308
|
return value;
|
293
309
|
}
|
@@ -307,6 +323,14 @@ VALUE type_cast(VALUE type_metadata, VALUE value) {
|
|
307
323
|
}
|
308
324
|
}
|
309
325
|
|
326
|
+
if(is_json_type(type_klass)) {
|
327
|
+
if(is_json_value(value) == Qfalse) {
|
328
|
+
return Qnil;
|
329
|
+
}
|
330
|
+
*isJson = Qtrue;
|
331
|
+
return value;
|
332
|
+
}
|
333
|
+
|
310
334
|
if (typeCastedValue == Qundef) {
|
311
335
|
return rb_funcall(type_metadata, deserialize_from_db_id, 1, value);
|
312
336
|
}
|
@@ -314,19 +338,28 @@ VALUE type_cast(VALUE type_metadata, VALUE value) {
|
|
314
338
|
return typeCastedValue;
|
315
339
|
}
|
316
340
|
|
317
|
-
VALUE public_type_cast(
|
318
|
-
|
341
|
+
VALUE public_type_cast(int argc, VALUE* argv, VALUE self) {
|
342
|
+
VALUE type_metadata, value, isJson;
|
343
|
+
rb_scan_args(argc, argv, "21", &type_metadata, &value, &isJson);
|
344
|
+
|
345
|
+
if (isJson == Qnil || isJson == Qundef) {
|
346
|
+
isJson = Qfalse;
|
347
|
+
}
|
348
|
+
|
349
|
+
return type_cast(type_metadata, value, &isJson);
|
319
350
|
}
|
320
351
|
|
321
352
|
void panko_init_type_cast(VALUE mPanko) {
|
322
|
-
to_s_id =
|
323
|
-
to_i_id =
|
353
|
+
to_s_id = rb_intern("to_s");
|
354
|
+
to_i_id = rb_intern("to_i");
|
324
355
|
|
325
356
|
oj_type = rb_const_get_at(rb_cObject, rb_intern("Oj"));
|
326
357
|
oj_parseerror_type = rb_const_get_at(oj_type, rb_intern("ParseError"));
|
327
|
-
|
358
|
+
oj_sc_parse_id = rb_intern("sc_parse");
|
359
|
+
|
328
360
|
|
329
|
-
|
361
|
+
// TODO: pass 3 arguments here
|
362
|
+
rb_define_singleton_method(mPanko, "_type_cast", public_type_cast, -1);
|
330
363
|
|
331
364
|
panko_init_time(mPanko);
|
332
365
|
}
|
@@ -68,11 +68,10 @@ static struct _TypeCast type_casts[] = {
|
|
68
68
|
{is_boolean_type, cast_boolean_type},
|
69
69
|
{is_date_time_type, cast_date_time_type},
|
70
70
|
{is_float_type, cast_float_type},
|
71
|
-
{is_json_type, cast_json_type},
|
72
71
|
|
73
72
|
{NULL, NULL}};
|
74
73
|
|
75
|
-
extern VALUE type_cast(VALUE type_metadata, VALUE value);
|
74
|
+
extern VALUE type_cast(VALUE type_metadata, VALUE value, VALUE* isJson);
|
76
75
|
void panko_init_type_cast(VALUE mPanko);
|
77
76
|
|
78
77
|
// Introduced in ruby 2.4
|
@@ -5,6 +5,7 @@
|
|
5
5
|
static ID push_value_id;
|
6
6
|
static ID push_array_id;
|
7
7
|
static ID push_object_id;
|
8
|
+
static ID push_json_id;
|
8
9
|
static ID pop_id;
|
9
10
|
|
10
11
|
static ID to_a_id;
|
@@ -12,8 +13,12 @@ static ID to_a_id;
|
|
12
13
|
static ID object_id;
|
13
14
|
static ID serialization_context_id;
|
14
15
|
|
15
|
-
void write_value(VALUE str_writer, VALUE key, VALUE value) {
|
16
|
-
|
16
|
+
void write_value(VALUE str_writer, VALUE key, VALUE value, VALUE isJson) {
|
17
|
+
if(isJson == Qtrue) {
|
18
|
+
rb_funcall(str_writer, push_json_id, 2, value, key);
|
19
|
+
} else {
|
20
|
+
rb_funcall(str_writer, push_value_id, 2, value, key);
|
21
|
+
}
|
17
22
|
}
|
18
23
|
|
19
24
|
void serialize_method_fields(VALUE object, VALUE str_writer,
|
@@ -36,7 +41,7 @@ void serialize_method_fields(VALUE object, VALUE str_writer,
|
|
36
41
|
|
37
42
|
volatile VALUE result = rb_funcall(serializer, attribute->name_id, 0);
|
38
43
|
|
39
|
-
write_value(str_writer, attribute->name_str, result);
|
44
|
+
write_value(str_writer, attribute->name_str, result, Qfalse);
|
40
45
|
}
|
41
46
|
|
42
47
|
rb_ivar_set(serializer, object_id, Qnil);
|
@@ -44,8 +49,10 @@ void serialize_method_fields(VALUE object, VALUE str_writer,
|
|
44
49
|
|
45
50
|
void serialize_fields(VALUE object, VALUE str_writer,
|
46
51
|
SerializationDescriptor descriptor) {
|
47
|
-
descriptor->attributes_writer.write_attributes(object,
|
48
|
-
|
52
|
+
descriptor->attributes_writer.write_attributes(object,
|
53
|
+
descriptor->attributes,
|
54
|
+
write_value,
|
55
|
+
str_writer);
|
49
56
|
|
50
57
|
serialize_method_fields(object, str_writer, descriptor);
|
51
58
|
}
|
@@ -60,7 +67,7 @@ void serialize_has_one_associations(VALUE object, VALUE str_writer,
|
|
60
67
|
volatile VALUE value = rb_funcall(object, association->name_id, 0);
|
61
68
|
|
62
69
|
if (NIL_P(value)) {
|
63
|
-
write_value(str_writer, association->name_str, value);
|
70
|
+
write_value(str_writer, association->name_str, value, Qfalse);
|
64
71
|
} else {
|
65
72
|
serialize_object(association->name_str, value, str_writer,
|
66
73
|
association->descriptor);
|
@@ -78,7 +85,7 @@ void serialize_has_many_associations(VALUE object, VALUE str_writer,
|
|
78
85
|
volatile VALUE value = rb_funcall(object, association->name_id, 0);
|
79
86
|
|
80
87
|
if (NIL_P(value)) {
|
81
|
-
write_value(str_writer, association->name_str, value);
|
88
|
+
write_value(str_writer, association->name_str, value, Qfalse);
|
82
89
|
} else {
|
83
90
|
serialize_objects(association->name_str, value, str_writer,
|
84
91
|
association->descriptor);
|
@@ -146,6 +153,7 @@ void Init_panko_serializer() {
|
|
146
153
|
push_value_id = rb_intern("push_value");
|
147
154
|
push_array_id = rb_intern("push_array");
|
148
155
|
push_object_id = rb_intern("push_object");
|
156
|
+
push_json_id = rb_intern("push_json");
|
149
157
|
pop_id = rb_intern("pop");
|
150
158
|
to_a_id = rb_intern("to_a");
|
151
159
|
object_id = rb_intern("@object");
|
@@ -1,7 +1,5 @@
|
|
1
1
|
#include "serialization_descriptor.h"
|
2
2
|
|
3
|
-
VALUE cSerializationDescriptor;
|
4
|
-
|
5
3
|
static ID object_id;
|
6
4
|
static ID sc_id;
|
7
5
|
|
@@ -10,8 +8,8 @@ static void sd_free(SerializationDescriptor sd) {
|
|
10
8
|
return;
|
11
9
|
}
|
12
10
|
|
13
|
-
sd->serializer_type = Qnil;
|
14
11
|
sd->serializer = Qnil;
|
12
|
+
sd->serializer_type = Qnil;
|
15
13
|
sd->attributes = Qnil;
|
16
14
|
sd->method_fields = Qnil;
|
17
15
|
sd->has_one_associations = Qnil;
|
@@ -21,8 +19,8 @@ static void sd_free(SerializationDescriptor sd) {
|
|
21
19
|
}
|
22
20
|
|
23
21
|
void sd_mark(SerializationDescriptor data) {
|
24
|
-
rb_gc_mark(data->serializer_type);
|
25
22
|
rb_gc_mark(data->serializer);
|
23
|
+
rb_gc_mark(data->serializer_type);
|
26
24
|
rb_gc_mark(data->attributes);
|
27
25
|
rb_gc_mark(data->method_fields);
|
28
26
|
rb_gc_mark(data->has_one_associations);
|
@@ -30,7 +28,7 @@ void sd_mark(SerializationDescriptor data) {
|
|
30
28
|
rb_gc_mark(data->aliases);
|
31
29
|
}
|
32
30
|
|
33
|
-
static VALUE
|
31
|
+
static VALUE sd_alloc(VALUE klass) {
|
34
32
|
SerializationDescriptor sd = ALLOC(struct _SerializationDescriptor);
|
35
33
|
|
36
34
|
sd->serializer = Qnil;
|
@@ -43,7 +41,7 @@ static VALUE sd_new(int argc, VALUE* argv, VALUE self) {
|
|
43
41
|
|
44
42
|
sd->attributes_writer = create_empty_attributes_writer();
|
45
43
|
|
46
|
-
return Data_Wrap_Struct(
|
44
|
+
return Data_Wrap_Struct(klass, sd_mark, sd_free, sd);
|
47
45
|
}
|
48
46
|
|
49
47
|
SerializationDescriptor sd_read(VALUE descriptor) {
|
@@ -122,7 +120,7 @@ VALUE sd_type_set(VALUE self, VALUE type) {
|
|
122
120
|
return Qnil;
|
123
121
|
}
|
124
122
|
|
125
|
-
VALUE sd_type_aref(VALUE self
|
123
|
+
VALUE sd_type_aref(VALUE self) {
|
126
124
|
SerializationDescriptor sd = (SerializationDescriptor)DATA_PTR(self);
|
127
125
|
return sd->serializer_type;
|
128
126
|
}
|
@@ -142,11 +140,10 @@ void panko_init_serialization_descriptor(VALUE mPanko) {
|
|
142
140
|
object_id = rb_intern("@object");
|
143
141
|
sc_id = rb_intern("@sc");
|
144
142
|
|
145
|
-
cSerializationDescriptor =
|
143
|
+
VALUE cSerializationDescriptor =
|
146
144
|
rb_define_class_under(mPanko, "SerializationDescriptor", rb_cObject);
|
147
145
|
|
148
|
-
|
149
|
-
|
146
|
+
rb_define_alloc_func(cSerializationDescriptor, sd_alloc);
|
150
147
|
rb_define_method(cSerializationDescriptor, "serializer=", sd_serializer_set,
|
151
148
|
1);
|
152
149
|
rb_define_method(cSerializationDescriptor, "serializer", sd_serializer_ref,
|
data/lib/panko/association.rb
CHANGED
data/lib/panko/object_writer.rb
CHANGED
@@ -33,6 +33,14 @@ class Panko::ObjectWriter
|
|
33
33
|
@values.last[key] = value.as_json
|
34
34
|
end
|
35
35
|
|
36
|
+
def push_json(value, key = nil)
|
37
|
+
if value.is_a?(String)
|
38
|
+
value = Oj.load(value) rescue nil
|
39
|
+
end
|
40
|
+
|
41
|
+
push_value(value, key)
|
42
|
+
end
|
43
|
+
|
36
44
|
def pop
|
37
45
|
result = @values.pop
|
38
46
|
|
data/lib/panko/response.rb
CHANGED
@@ -22,12 +22,13 @@ module Panko
|
|
22
22
|
Panko::JsonValue.from(value)
|
23
23
|
end
|
24
24
|
|
25
|
-
def self.array_serializer(data, serializer)
|
26
|
-
|
25
|
+
def self.array_serializer(data, serializer, options = {})
|
26
|
+
merged_options = options.merge(each_serializer: serializer)
|
27
|
+
Panko::ArraySerializer.new(data, merged_options)
|
27
28
|
end
|
28
29
|
|
29
|
-
def self.serializer(data, serializer)
|
30
|
-
json serializer.new.serialize_to_json(data)
|
30
|
+
def self.serializer(data, serializer, options = {})
|
31
|
+
json serializer.new(options).serialize_to_json(data)
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
data/lib/panko/serializer.rb
CHANGED
@@ -63,6 +63,8 @@ module Panko
|
|
63
63
|
end
|
64
64
|
|
65
65
|
def method_added(method)
|
66
|
+
super(method)
|
67
|
+
|
66
68
|
return if @_descriptor.nil?
|
67
69
|
|
68
70
|
deleted_attr = @_descriptor.attributes.delete(method)
|
@@ -102,6 +104,7 @@ module Panko
|
|
102
104
|
|
103
105
|
@serialization_context = SerializationContext.create(options)
|
104
106
|
@descriptor = Panko::SerializationDescriptor.build(self.class, options, @serialization_context)
|
107
|
+
@used = false
|
105
108
|
end
|
106
109
|
|
107
110
|
def context
|
@@ -126,7 +129,9 @@ module Panko
|
|
126
129
|
private
|
127
130
|
|
128
131
|
def serialize_with_writer(object, writer)
|
132
|
+
raise ArgumentError.new("Panko::Serializer instances are single-use") if @used
|
129
133
|
Panko.serialize_object(object, writer, @descriptor)
|
134
|
+
@used = true
|
130
135
|
writer
|
131
136
|
end
|
132
137
|
end
|
data/lib/panko/version.rb
CHANGED
data/panko_serializer.gemspec
CHANGED
@@ -11,17 +11,17 @@ Gem::Specification.new do |spec|
|
|
11
11
|
spec.email = ["yosy101@gmail.com"]
|
12
12
|
|
13
13
|
spec.summary = "High Performance JSON Serialization for ActiveRecord & Ruby Objects"
|
14
|
-
spec.homepage = "https://
|
14
|
+
spec.homepage = "https://panko.dev"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
17
17
|
spec.metadata = {
|
18
|
-
"bug_tracker_uri" => "https://github.com/
|
19
|
-
"source_code_uri" => "https://github.com/
|
20
|
-
"documentation_uri" => "https://
|
21
|
-
"changelog_uri" => "https://github.com/
|
18
|
+
"bug_tracker_uri" => "https://github.com/panko-serializer/panko_serializer/issues",
|
19
|
+
"source_code_uri" => "https://github.com/panko-serializer/panko_serializer",
|
20
|
+
"documentation_uri" => "https://panko-serializer.github.io/panko_serializer/",
|
21
|
+
"changelog_uri" => "https://github.com/panko-serializer/panko_serializer/releases"
|
22
22
|
}
|
23
23
|
|
24
|
-
spec.required_ruby_version = ">= 2.
|
24
|
+
spec.required_ruby_version = ">= 2.5.0"
|
25
25
|
|
26
26
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
27
27
|
f.match(%r{^(test|spec|features)/})
|
@@ -30,5 +30,5 @@ Gem::Specification.new do |spec|
|
|
30
30
|
|
31
31
|
spec.extensions << "ext/panko_serializer/extconf.rb"
|
32
32
|
|
33
|
-
spec.add_dependency "oj", "~> 3.
|
33
|
+
spec.add_dependency "oj", "~> 3.10.0"
|
34
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: panko_serializer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yosi Attias
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oj
|
@@ -16,15 +16,15 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 3.
|
19
|
+
version: 3.10.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 3.
|
27
|
-
description:
|
26
|
+
version: 3.10.0
|
27
|
+
description:
|
28
28
|
email:
|
29
29
|
- yosy101@gmail.com
|
30
30
|
executables: []
|
@@ -33,10 +33,11 @@ extensions:
|
|
33
33
|
extra_rdoc_files: []
|
34
34
|
files:
|
35
35
|
- ".clang-format"
|
36
|
+
- ".github/workflows/docs.yml"
|
37
|
+
- ".github/workflows/ruby.yml"
|
36
38
|
- ".gitignore"
|
37
39
|
- ".rspec"
|
38
40
|
- ".rubocop.yml"
|
39
|
-
- ".travis.yml"
|
40
41
|
- Gemfile
|
41
42
|
- LICENSE.txt
|
42
43
|
- README.md
|
@@ -59,20 +60,43 @@ files:
|
|
59
60
|
- benchmarks/type_casts/bm_active_record.rb
|
60
61
|
- benchmarks/type_casts/bm_panko.rb
|
61
62
|
- benchmarks/type_casts/support.rb
|
63
|
+
- docs/.DS_Store
|
62
64
|
- docs/README.md
|
63
|
-
- docs/
|
64
|
-
- docs/
|
65
|
-
- docs/
|
66
|
-
- docs/
|
67
|
-
- docs/getting-started.md
|
68
|
-
- docs/
|
69
|
-
- docs/
|
65
|
+
- docs/core/Footer.js
|
66
|
+
- docs/docs/associations.md
|
67
|
+
- docs/docs/attributes.md
|
68
|
+
- docs/docs/design-choices.md
|
69
|
+
- docs/docs/getting-started.md
|
70
|
+
- docs/docs/introduction.md
|
71
|
+
- docs/docs/performance.md
|
72
|
+
- docs/docs/response-bag.md
|
73
|
+
- docs/i18n/en.json
|
74
|
+
- docs/package-lock.json
|
75
|
+
- docs/package.json
|
76
|
+
- docs/sidebars.json
|
77
|
+
- docs/siteConfig.js
|
78
|
+
- docs/static/.DS_Store
|
79
|
+
- docs/static/css/custom.css
|
80
|
+
- docs/static/img/favicon.ico
|
81
|
+
- docs/static/img/oss_logo.png
|
82
|
+
- docs/static/img/undraw_code_review.svg
|
83
|
+
- docs/static/img/undraw_monitor.svg
|
84
|
+
- docs/static/img/undraw_note_list.svg
|
85
|
+
- docs/static/img/undraw_online.svg
|
86
|
+
- docs/static/img/undraw_open_source.svg
|
87
|
+
- docs/static/img/undraw_operating_system.svg
|
88
|
+
- docs/static/img/undraw_react.svg
|
89
|
+
- docs/static/img/undraw_tweetstorm.svg
|
90
|
+
- docs/static/img/undraw_youtube_tutorial.svg
|
91
|
+
- docs/static/index.html
|
70
92
|
- ext/panko_serializer/attributes_writer/active_record.c
|
71
93
|
- ext/panko_serializer/attributes_writer/active_record.h
|
72
94
|
- ext/panko_serializer/attributes_writer/attributes_writer.c
|
73
95
|
- ext/panko_serializer/attributes_writer/attributes_writer.h
|
74
96
|
- ext/panko_serializer/attributes_writer/common.c
|
75
97
|
- ext/panko_serializer/attributes_writer/common.h
|
98
|
+
- ext/panko_serializer/attributes_writer/hash.c
|
99
|
+
- ext/panko_serializer/attributes_writer/hash.h
|
76
100
|
- ext/panko_serializer/attributes_writer/plain.c
|
77
101
|
- ext/panko_serializer/attributes_writer/plain.h
|
78
102
|
- ext/panko_serializer/attributes_writer/type_cast/time_conversion.c
|
@@ -100,15 +124,15 @@ files:
|
|
100
124
|
- lib/panko/version.rb
|
101
125
|
- lib/panko_serializer.rb
|
102
126
|
- panko_serializer.gemspec
|
103
|
-
homepage: https://
|
127
|
+
homepage: https://panko.dev
|
104
128
|
licenses:
|
105
129
|
- MIT
|
106
130
|
metadata:
|
107
|
-
bug_tracker_uri: https://github.com/
|
108
|
-
source_code_uri: https://github.com/
|
109
|
-
documentation_uri: https://
|
110
|
-
changelog_uri: https://github.com/
|
111
|
-
post_install_message:
|
131
|
+
bug_tracker_uri: https://github.com/panko-serializer/panko_serializer/issues
|
132
|
+
source_code_uri: https://github.com/panko-serializer/panko_serializer
|
133
|
+
documentation_uri: https://panko-serializer.github.io/panko_serializer/
|
134
|
+
changelog_uri: https://github.com/panko-serializer/panko_serializer/releases
|
135
|
+
post_install_message:
|
112
136
|
rdoc_options: []
|
113
137
|
require_paths:
|
114
138
|
- lib
|
@@ -116,15 +140,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
140
|
requirements:
|
117
141
|
- - ">="
|
118
142
|
- !ruby/object:Gem::Version
|
119
|
-
version: 2.
|
143
|
+
version: 2.5.0
|
120
144
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
145
|
requirements:
|
122
146
|
- - ">="
|
123
147
|
- !ruby/object:Gem::Version
|
124
148
|
version: '0'
|
125
149
|
requirements: []
|
126
|
-
rubygems_version: 3.
|
127
|
-
signing_key:
|
150
|
+
rubygems_version: 3.1.4
|
151
|
+
signing_key:
|
128
152
|
specification_version: 4
|
129
153
|
summary: High Performance JSON Serialization for ActiveRecord & Ruby Objects
|
130
154
|
test_files: []
|