class JSON::Ext::Generator::State
Public Class Methods
Source
static VALUE cState_from_state_s(VALUE self, VALUE opts){ if (rb_obj_is_kind_of(opts, self)) { return opts; } else if (rb_obj_is_kind_of(opts, rb_cHash)) { return rb_funcall(self, i_new, 1, opts); } else { return rb_class_new_instance(0, NULL, cState); }}Creates aState object fromopts, which ought to beHash to create a newState instance configured byopts, something else to create an unconfigured instance. Ifopts is aState object, it is just returned.
Source
static VALUE cState_m_generate(VALUE klass, VALUE obj, VALUE opts, VALUE io){ JSON_Generator_State state = {0}; state_init(&state); configure_state(&state, Qfalse, opts); char stack_buffer[FBUFFER_STACK_SIZE]; FBuffer buffer = { .io = RTEST(io) ? io : Qfalse, }; fbuffer_stack_init(&buffer, state.buffer_initial_length, stack_buffer, FBUFFER_STACK_SIZE); struct generate_json_data data = { .buffer = &buffer, .vstate = Qfalse, .state = &state, .obj = obj, .func = generate_json, }; return rb_ensure(generate_json_try, (VALUE)&data, generate_json_ensure, (VALUE)&data);}Source
static VALUE cState_initialize(int argc, VALUE *argv, VALUE self){ rb_warn("The json gem extension was loaded with the stdlib ruby code. You should upgrade rubygems with `gem update --system`"); return self;}Source
# File ext/json/lib/json/ext/generator/state.rb, line 13definitialize(opts =nil)ifopts&&!opts.empty?configure(opts)endend
Instantiates a newState object, configured byopts.
Argumentopts, if given, contains a Hash of options for the generation. SeeGenerating Options.
Public Instance Methods
Source
# File ext/json/lib/json/ext/generator/state.rb, line 77def[](name)ifrespond_to?(name)__send__(name)elseinstance_variable_get("@#{name}")ifinstance_variables.include?("@#{name}".to_sym)# avoid warningendend
Returns the value returned by methodname.
Source
# File ext/json/lib/json/ext/generator/state.rb, line 89def[]=(name,value)ifrespond_to?(name_writer ="#{name}=")__send__name_writer,valueelseinstance_variable_set"@#{name}",valueendend
Sets the attribute name to value.
Source
static VALUE cState_allow_nan_set(VALUE self, VALUE enable){ GET_STATE(self); state->allow_nan = RTEST(enable); return Qnil;}This sets whether or not to serialize NaN, Infinity, and -Infinity
Source
static VALUE cState_allow_nan_p(VALUE self){ GET_STATE(self); return state->allow_nan ? Qtrue : Qfalse;}Returns true, if NaN, Infinity, and -Infinity should be generated, otherwise returns false.
Source
static VALUE cState_array_nl(VALUE self){ GET_STATE(self); return state->array_nl ? state->array_nl : rb_str_freeze(rb_utf8_str_new("", 0));}This string is put at the end of a line that holds aJSON array.
Source
static VALUE cState_array_nl_set(VALUE self, VALUE array_nl){ GET_STATE(self); RB_OBJ_WRITE(self, &state->array_nl, string_config(array_nl)); return Qnil;}This string is put at the end of a line that holds aJSON array.
Source
static VALUE cState_as_json(VALUE self){ GET_STATE(self); return state->as_json;}This string is put at the end of a line that holds aJSON array.
Source
static VALUE cState_as_json_set(VALUE self, VALUE as_json){ GET_STATE(self); RB_OBJ_WRITE(self, &state->as_json, rb_convert_type(as_json, T_DATA, "Proc", "to_proc")); return Qnil;}This string is put at the end of a line that holds aJSON array.
Source
static VALUE cState_ascii_only_set(VALUE self, VALUE enable){ GET_STATE(self); state->ascii_only = RTEST(enable); return Qnil;}This sets whether only ASCII characters should be generated.
Source
static VALUE cState_ascii_only_p(VALUE self){ GET_STATE(self); return state->ascii_only ? Qtrue : Qfalse;}Returns true, if only ASCII characters should be generated. Otherwise returns false.
Source
static VALUE cState_buffer_initial_length(VALUE self){ GET_STATE(self); return LONG2FIX(state->buffer_initial_length);}This integer returns the current initial length of the buffer.
Source
static VALUE cState_buffer_initial_length_set(VALUE self, VALUE buffer_initial_length){ GET_STATE(self); buffer_initial_length_set(state, buffer_initial_length); return Qnil;}This sets the initial length of the buffer tolength, iflength > 0, otherwise its value isn’t changed.
Source
static VALUE cState_check_circular_p(VALUE self){ GET_STATE(self); return state->max_nesting ? Qtrue : Qfalse;}Returns true, if circular data structures should be checked, otherwise returns false.
Source
# File ext/json/lib/json/ext/generator/state.rb, line 23defconfigure(opts)unlessopts.is_a?(Hash)ifopts.respond_to?(:to_hash)opts =opts.to_hashelsifopts.respond_to?(:to_h)opts =opts.to_helseraiseTypeError,"can't convert #{opts.class} into Hash"endend_configure(opts)end
Configure thisState instance with theHashopts, and return itself.
Source
static VALUE cState_depth(VALUE self){ GET_STATE(self); return LONG2FIX(state->depth);}This integer returns the current depth of data structure nesting.
Source
static VALUE cState_depth_set(VALUE self, VALUE depth){ GET_STATE(self); state->depth = long_config(depth); return Qnil;}This sets the maximum level of data structure nesting in the generatedJSON to the integer depth,max_nesting = 0 if no maximum should be checked.
If this boolean is true, the forward slashes will be escaped in the json output.
If this boolean is true, the forward slashes will be escaped in the json output.
Source
static VALUE cState_generate(int argc, VALUE *argv, VALUE self){ rb_check_arity(argc, 1, 2); VALUE obj = argv[0]; VALUE io = argc > 1 ? argv[1] : Qnil; return cState_partial_generate(self, obj, generate_json, io);}Generates a validJSON document from objectobj and returns the result. If no validJSON document can be created this method raises aGeneratorError exception.
Source
static VALUE cState_generate_new(int argc, VALUE *argv, VALUE self){ rb_check_arity(argc, 1, 2); VALUE obj = argv[0]; VALUE io = argc > 1 ? argv[1] : Qnil; GET_STATE(self); JSON_Generator_State new_state; MEMCPY(&new_state, state, JSON_Generator_State, 1); // FIXME: depth shouldn't be part of JSON_Generator_State, as that prevents it from being used concurrently. new_state.depth = 0; char stack_buffer[FBUFFER_STACK_SIZE]; FBuffer buffer = { .io = RTEST(io) ? io : Qfalse, }; fbuffer_stack_init(&buffer, state->buffer_initial_length, stack_buffer, FBUFFER_STACK_SIZE); struct generate_json_data data = { .buffer = &buffer, .vstate = Qfalse, .state = &new_state, .obj = obj, .func = generate_json }; return rb_ensure(generate_json_try, (VALUE)&data, generate_json_ensure, (VALUE)&data);}Source
static VALUE cState_indent(VALUE self){ GET_STATE(self); return state->indent ? state->indent : rb_str_freeze(rb_utf8_str_new("", 0));}Returns the string that is used to indent levels in theJSON text.
Source
static VALUE cState_indent_set(VALUE self, VALUE indent){ GET_STATE(self); RB_OBJ_WRITE(self, &state->indent, string_config(indent)); return Qnil;}Sets the string that is used to indent levels in theJSON text.
Source
static VALUE cState_init_copy(VALUE obj, VALUE orig){ JSON_Generator_State *objState, *origState; if (obj == orig) return obj; GET_STATE_TO(obj, objState); GET_STATE_TO(orig, origState); if (!objState) rb_raise(rb_eArgError, "unallocated JSON::State"); MEMCPY(objState, origState, JSON_Generator_State, 1); objState->indent = origState->indent; objState->space = origState->space; objState->space_before = origState->space_before; objState->object_nl = origState->object_nl; objState->array_nl = origState->array_nl; objState->as_json = origState->as_json; return obj;}Initializes this object from orig if it can be duplicated/cloned and returns it.
Source
static VALUE cState_max_nesting(VALUE self){ GET_STATE(self); return LONG2FIX(state->max_nesting);}This integer returns the maximum level of data structure nesting in the generatedJSON,max_nesting = 0 if no maximum is checked.
Source
static VALUE cState_max_nesting_set(VALUE self, VALUE depth){ GET_STATE(self); state->max_nesting = long_config(depth); return Qnil;}This sets the maximum level of data structure nesting in the generatedJSON to the integer depth,max_nesting = 0 if no maximum should be checked.
Source
Source
Source
static VALUE cState_script_safe(VALUE self){ GET_STATE(self); return state->script_safe ? Qtrue : Qfalse;}If this boolean is true, the forward slashes will be escaped in the json output.
Source
static VALUE cState_script_safe_set(VALUE self, VALUE enable){ GET_STATE(self); state->script_safe = RTEST(enable); return Qnil;}This sets whether or not the forward slashes will be escaped in the json output.
If this boolean is true, the forward slashes will be escaped in the json output.
Source
static VALUE cState_space(VALUE self){ GET_STATE(self); return state->space ? state->space : rb_str_freeze(rb_utf8_str_new("", 0));}Returns the string that is used to insert a space between the tokens in aJSON string.
Source
static VALUE cState_space_set(VALUE self, VALUE space){ GET_STATE(self); RB_OBJ_WRITE(self, &state->space, string_config(space)); return Qnil;}Setsspace to the string that is used to insert a space between the tokens in aJSON string.
Source
static VALUE cState_space_before(VALUE self){ GET_STATE(self); return state->space_before ? state->space_before : rb_str_freeze(rb_utf8_str_new("", 0));}Returns the string that is used to insert a space before the ‘:’ inJSON objects.
Source
static VALUE cState_space_before_set(VALUE self, VALUE space_before){ GET_STATE(self); RB_OBJ_WRITE(self, &state->space_before, string_config(space_before)); return Qnil;}Sets the string that is used to insert a space before the ‘:’ inJSON objects.
Source
static VALUE cState_strict(VALUE self){ GET_STATE(self); return state->strict ? Qtrue : Qfalse;}If this boolean is false, types unsupported by theJSON format will be serialized as strings. If this boolean is true, types unsupported by theJSON format will raise aJSON::GeneratorError.
Source
static VALUE cState_strict_set(VALUE self, VALUE enable){ GET_STATE(self); state->strict = RTEST(enable); return Qnil;}This sets whether or not to serialize types unsupported by theJSON format as strings. If this boolean is false, types unsupported by theJSON format will be serialized as strings. If this boolean is true, types unsupported by theJSON format will raise aJSON::GeneratorError.
If this boolean is false, types unsupported by theJSON format will be serialized as strings. If this boolean is true, types unsupported by theJSON format will raise aJSON::GeneratorError.
Source
# File ext/json/lib/json/ext/generator/state.rb, line 42defto_hresult = {indent:indent,space:space,space_before:space_before,object_nl:object_nl,array_nl:array_nl,as_json:as_json,allow_nan:allow_nan?,ascii_only:ascii_only?,max_nesting:max_nesting,script_safe:script_safe?,strict:strict?,depth:depth,buffer_initial_length:buffer_initial_length, }allow_duplicate_key =allow_duplicate_key?unlessallow_duplicate_key.nil?result[:allow_duplicate_key] =allow_duplicate_keyendinstance_variables.eachdo|iv|iv =iv.to_s[1..-1]result[iv.to_sym] =self[iv]endresultend
Returns the configuration instance variables as a hash, that can be passed to the configure method.
Private Instance Methods
Source
static VALUE cState_configure(VALUE self, VALUE opts){ GET_STATE(self); configure_state(state, self, opts); return self;}Source
static VALUE cState_allow_duplicate_key_p(VALUE self){ GET_STATE(self); switch (state->on_duplicate_key) { case JSON_IGNORE: return Qtrue; case JSON_DEPRECATED: return Qnil; default: return Qfalse; }}