class JSON::Ext::Generator::State
Öffentliche Klassenmethoden
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);
}
}
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,
.depth = state.depth,
.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 13 def initialize(opts = nil) if opts && !opts.empty? configure(opts) end end
Instanziiert ein neues State-Objekt, konfiguriert durch opts.
Argument opts, falls gegeben, enthält eine Hash von Optionen für die Generierung. Siehe Generating Options.
Öffentliche Instanzmethoden
Source
# File ext/json/lib/json/ext/generator/state.rb, line 77 def [](name) ::JSON.deprecation_warning("JSON::State#[] is deprecated and will be removed in json 3.0.0") if respond_to?(name) __send__(name) else instance_variable_get("@#{name}") if instance_variables.include?("@#{name}".to_sym) # avoid warning end end
Gibt den Wert zurück, der von der Methode name zurückgegeben wird.
Source
# File ext/json/lib/json/ext/generator/state.rb, line 91 def []=(name, value) ::JSON.deprecation_warning("JSON::State#[]= is deprecated and will be removed in json 3.0.0") if respond_to?(name_writer = "#{name}=") __send__ name_writer, value else instance_variable_set "@#{name}", value end end
Setzt das Attribut `name` auf `value`.
Source
static VALUE cState_allow_nan_set(VALUE self, VALUE enable)
{
rb_check_frozen(self);
GET_STATE(self);
state->allow_nan = RTEST(enable);
return Qnil;
}
Dies legt fest, ob NaN, Infinity und -Infinity serialisiert werden sollen
Source
static VALUE cState_allow_nan_p(VALUE self)
{
GET_STATE(self);
return state->allow_nan ? Qtrue : Qfalse;
}
Gibt true zurück, wenn NaN, Infinity und -Infinity generiert werden sollen, andernfalls 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));
}
Diese Zeichenkette wird am Ende einer Zeile eingefügt, die ein JSON-Array enthält.
Source
static VALUE cState_array_nl_set(VALUE self, VALUE array_nl)
{
rb_check_frozen(self);
GET_STATE(self);
RB_OBJ_WRITE(self, &state->array_nl, string_config(array_nl));
return Qnil;
}
Diese Zeichenkette wird am Ende einer Zeile eingefügt, die ein JSON-Array enthält.
Source
static VALUE cState_as_json(VALUE self)
{
GET_STATE(self);
return state->as_json;
}
Diese Zeichenkette wird am Ende einer Zeile eingefügt, die ein JSON-Array enthält.
Source
static VALUE cState_as_json_set(VALUE self, VALUE as_json)
{
rb_check_frozen(self);
GET_STATE(self);
RB_OBJ_WRITE(self, &state->as_json, rb_convert_type(as_json, T_DATA, "Proc", "to_proc"));
return Qnil;
}
Diese Zeichenkette wird am Ende einer Zeile eingefügt, die ein JSON-Array enthält.
Source
static VALUE cState_ascii_only_set(VALUE self, VALUE enable)
{
rb_check_frozen(self);
GET_STATE(self);
state->ascii_only = RTEST(enable);
return Qnil;
}
Dies legt fest, ob nur ASCII-Zeichen generiert werden sollen.
Source
static VALUE cState_ascii_only_p(VALUE self)
{
GET_STATE(self);
return state->ascii_only ? Qtrue : Qfalse;
}
Gibt true zurück, wenn nur ASCII-Zeichen generiert werden sollen. Andernfalls wird false zurückgegeben.
Source
static VALUE cState_buffer_initial_length(VALUE self)
{
GET_STATE(self);
return LONG2FIX(state->buffer_initial_length);
}
Diese Ganzzahl gibt die aktuelle anfängliche Länge des Puffers zurück.
Source
static VALUE cState_buffer_initial_length_set(VALUE self, VALUE buffer_initial_length)
{
rb_check_frozen(self);
GET_STATE(self);
buffer_initial_length_set(state, buffer_initial_length);
return Qnil;
}
Dies setzt die anfängliche Länge des Puffers auf length, wenn length > 0, andernfalls wird sein Wert nicht geändert.
Source
static VALUE cState_check_circular_p(VALUE self)
{
GET_STATE(self);
return state->max_nesting ? Qtrue : Qfalse;
}
Gibt true zurück, wenn zyklische Datenstrukturen geprüft werden sollen, andernfalls false.
Source
# File ext/json/lib/json/ext/generator/state.rb, line 23 def configure(opts) unless opts.is_a?(Hash) if opts.respond_to?(:to_hash) opts = opts.to_hash elsif opts.respond_to?(:to_h) opts = opts.to_h else raise TypeError, "can't convert #{opts.class} into Hash" end end _configure(opts) end
Source
static VALUE cState_depth(VALUE self)
{
GET_STATE(self);
return LONG2FIX(state->depth);
}
Diese Ganzzahl gibt die aktuelle Verschachtelungstiefe der Datenstruktur zurück.
Source
static VALUE cState_depth_set(VALUE self, VALUE depth)
{
rb_check_frozen(self);
GET_STATE(self);
state->depth = long_config(depth);
return Qnil;
}
Dies setzt die maximale Verschachtelungsebene der Datenstruktur im generierten JSON auf die Ganzzahl `depth`. Wenn max_nesting = 0, wird keine maximale Verschachtelung geprüft.
Wenn diese Boolesche Variable true ist, werden Schrägstriche im JSON-Output maskiert.
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);
}
Generiert ein valides JSON-Dokument aus dem Objekt obj und gibt das Ergebnis zurück. Wenn kein valides JSON-Dokument erstellt werden kann, löst diese Methode eine GeneratorError-Exception aus.
Source
static VALUE cState_indent(VALUE self)
{
GET_STATE(self);
return state->indent ? state->indent : rb_str_freeze(rb_utf8_str_new("", 0));
}
Gibt die Zeichenkette zurück, die zur Einrückung von Ebenen im JSON-Text verwendet wird.
Source
static VALUE cState_indent_set(VALUE self, VALUE indent)
{
rb_check_frozen(self);
GET_STATE(self);
RB_OBJ_WRITE(self, &state->indent, string_config(indent));
return Qnil;
}
Setzt die Zeichenkette, die zur Einrückung von Ebenen im JSON-Text verwendet wird.
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;
}
Initialisiert dieses Objekt aus `orig`, wenn es dupliziert/geklont werden kann, und gibt es zurück.
Source
static VALUE cState_max_nesting(VALUE self)
{
GET_STATE(self);
return LONG2FIX(state->max_nesting);
}
Diese Ganzzahl gibt die maximale Verschachtelungsebene der Datenstruktur im generierten JSON zurück. Wenn max_nesting = 0, wird keine maximale Verschachtelung geprüft.
Source
static VALUE cState_max_nesting_set(VALUE self, VALUE depth)
{
rb_check_frozen(self);
GET_STATE(self);
state->max_nesting = long_config(depth);
return Qnil;
}
Dies setzt die maximale Verschachtelungsebene der Datenstruktur im generierten JSON auf die Ganzzahl `depth`. Wenn max_nesting = 0, wird keine maximale Verschachtelung geprüft.
Source
static VALUE cState_object_nl(VALUE self)
{
GET_STATE(self);
return state->object_nl ? state->object_nl : rb_str_freeze(rb_utf8_str_new("", 0));
}
Source
static VALUE cState_object_nl_set(VALUE self, VALUE object_nl)
{
rb_check_frozen(self);
GET_STATE(self);
RB_OBJ_WRITE(self, &state->object_nl, string_config(object_nl));
return Qnil;
}
Source
static VALUE cState_script_safe(VALUE self)
{
GET_STATE(self);
return state->script_safe ? Qtrue : Qfalse;
}
Wenn diese Boolesche Variable true ist, werden Schrägstriche im JSON-Output maskiert.
Source
static VALUE cState_script_safe_set(VALUE self, VALUE enable)
{
rb_check_frozen(self);
GET_STATE(self);
state->script_safe = RTEST(enable);
return Qnil;
}
Dies legt fest, ob die Schrägstriche im JSON-Output maskiert werden.
Source
static VALUE cState_space(VALUE self)
{
GET_STATE(self);
return state->space ? state->space : rb_str_freeze(rb_utf8_str_new("", 0));
}
Gibt die Zeichenkette zurück, die verwendet wird, um ein Leerzeichen zwischen den Tokens in einem JSON-String einzufügen.
Source
static VALUE cState_space_set(VALUE self, VALUE space)
{
rb_check_frozen(self);
GET_STATE(self);
RB_OBJ_WRITE(self, &state->space, string_config(space));
return Qnil;
}
Setzt space auf die Zeichenkette, die verwendet wird, um ein Leerzeichen zwischen den Tokens in einem JSON-String einzufügen.
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));
}
Gibt die Zeichenkette zurück, die verwendet wird, um ein Leerzeichen vor dem ':' in JSON-Objekten einzufügen.
Source
static VALUE cState_space_before_set(VALUE self, VALUE space_before)
{
rb_check_frozen(self);
GET_STATE(self);
RB_OBJ_WRITE(self, &state->space_before, string_config(space_before));
return Qnil;
}
Setzt die Zeichenkette, die verwendet wird, um ein Leerzeichen vor dem ':' in JSON-Objekten einzufügen.
Source
static VALUE cState_strict(VALUE self)
{
GET_STATE(self);
return state->strict ? Qtrue : Qfalse;
}
Wenn diese Boolesche Variable false ist, werden Typen, die vom JSON-Format nicht unterstützt werden, als Zeichenketten serialisiert. Wenn diese Boolesche Variable true ist, lösen Typen, die vom JSON-Format nicht unterstützt werden, eine JSON::GeneratorError aus.
Source
static VALUE cState_strict_set(VALUE self, VALUE enable)
{
rb_check_frozen(self);
GET_STATE(self);
state->strict = RTEST(enable);
return Qnil;
}
Dies legt fest, ob Typen, die vom JSON-Format nicht unterstützt werden, als Zeichenketten serialisiert werden sollen. Wenn diese Boolesche Variable false ist, werden Typen, die vom JSON-Format nicht unterstützt werden, als Zeichenketten serialisiert. Wenn diese Boolesche Variable true ist, lösen Typen, die vom JSON-Format nicht unterstützt werden, eine JSON::GeneratorError aus.
Source
# File ext/json/lib/json/ext/generator/state.rb, line 42 def to_h result = { 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? unless allow_duplicate_key.nil? result[:allow_duplicate_key] = allow_duplicate_key end instance_variables.each do |iv| iv = iv.to_s[1..-1] result[iv.to_sym] = self[iv] end result end
Gibt die Konfigurationsinstanzvariablen als Hash zurück, der an die `configure`-Methode übergeben werden kann.
Private Instanzmethoden
Source
static VALUE cState_configure(VALUE self, VALUE opts)
{
rb_check_frozen(self);
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;
}
}