Class: Oj::Rails::Encoder
- Inherits:
-
Object
- Object
- Oj::Rails::Encoder
- Defined in:
- ext/oj/rails.c,
ext/oj/rails.c
Overview
The Oj ActiveSupport compliant encoder.
Class Method Summary collapse
-
.new(options = nil) ⇒ Object
Creates a new Encoder.
Instance Method Summary collapse
-
#deoptimize(*classes) ⇒ Object
Turn off Oj rails optimization on the specified classes.
-
#encode(obj) ⇒ Object
-
obj [Object] object to encode.
-
-
#optimize(*args) ⇒ Object
Document-method optimize call-seq: optimize(*classes).
-
#optimized?(clas) ⇒ Boolean
-
clas [Class] Class to check.
-
Class Method Details
.new(options = nil) ⇒ Object
Creates a new Encoder.
-
options [Hash] formatting options
648 649 650 651 652 653 654 655 656 657 658 659 660 |
# File 'ext/oj/rails.c', line 648
static VALUE encoder_new(int argc, VALUE *argv, VALUE self) {
Encoder e = OJ_R_ALLOC(struct _encoder);
e->opts = oj_default_options;
e->arg = Qnil;
copy_opts(&ropts, &e->ropts);
if (1 <= argc && Qnil != *argv) {
oj_parse_options(*argv, &e->opts);
e->arg = *argv;
}
return Data_Wrap_Struct(encoder_class, encoder_mark, encoder_free, e);
}
|
Instance Method Details
#deoptimize(*classes) ⇒ Object
Turn off Oj rails optimization on the specified classes.
-
classes [Class] a list of classes to deoptimize
806 807 808 809 810 811 812 |
# File 'ext/oj/rails.c', line 806
static VALUE encoder_deoptimize(int argc, VALUE *argv, VALUE self) {
Encoder e = (Encoder)DATA_PTR(self);
optimize(argc, argv, &e->ropts, false);
return Qnil;
}
|
#encode(obj) ⇒ Object
-
obj [Object] object to encode
Returns encoded object as a JSON string.
942 943 944 945 946 947 948 949 950 951 |
# File 'ext/oj/rails.c', line 942
static VALUE encoder_encode(VALUE self, VALUE obj) {
Encoder e = (Encoder)DATA_PTR(self);
if (Qnil != e->arg) {
VALUE argv[1] = {e->arg};
return encode(obj, &e->ropts, &e->opts, 1, argv);
}
return encode(obj, &e->ropts, &e->opts, 0, NULL);
}
|
#optimize(*args) ⇒ Object
Document-method optimize call-seq: optimize(*classes)
Use Oj rails optimized routines to encode the specified classes. This ignores the as_json() method on the class and uses an internal encoding instead. Passing in no classes indicates all should use the optimized version of encoding for all previously optimized classes. Passing in the Object class set a global switch that will then use the optimized behavior for all classes.
-
classes [Class] a list of classes to optimize
750 751 752 753 754 755 756 |
# File 'ext/oj/rails.c', line 750
static VALUE encoder_optimize(int argc, VALUE *argv, VALUE self) {
Encoder e = (Encoder)DATA_PTR(self);
optimize(argc, argv, &e->ropts, true);
return Qnil;
}
|
#optimized?(clas) ⇒ Boolean
-
clas [Class] Class to check
835 836 837 838 839 840 841 842 843 |
# File 'ext/oj/rails.c', line 835
static VALUE encoder_optimized(VALUE self, VALUE clas) {
Encoder e = (Encoder)DATA_PTR(self);
ROpt ro = oj_rails_get_opt(&e->ropts, clas);
if (NULL == ro) {
return Qfalse;
}
return (ro->on) ? Qtrue : Qfalse;
}
|