This class is used to create State instances, that are use to hold data while generating a JSON text from a Ruby data structure.
- #
- A
- C
- F
- G
- M
- N
- Q
- T
[RW] | array_nl | This string is put at the end of a line that holds a JSON array. |
[RW] | depth | This integer returns the current depth data structure nesting in the generated JSON. |
[RW] | indent | This string is used to indent levels in the JSON text. |
[RW] | max_nesting | This integer returns the maximum level of data structure nesting in the generated JSON, #max_nesting = 0 if no maximum is checked. |
[RW] | object_nl | This string is put at the end of a line that holds a JSON object (or Hash). |
[RW] | quirks_mode | If this attribute is set to true, quirks mode is enabled, otherwise it’s disabled. |
[RW] | space | This string is used to insert a space between the tokens in a JSON string. |
[RW] | space_before | This string is used to insert a space before the ‘:’ in JSON objects. |
Creates a State object from opts, which ought to be Hash to create a new State instance configured by opts, something else to create an unconfigured instance. If opts is a State object, it is just returned.
Source: show
# File lib/json/pure/generator.rb, line 108 def self.from_state(opts) case when self === opts opts when opts.respond_to?(:to_hash) new(opts.to_hash) when opts.respond_to?(:to_h) new(opts.to_h) else SAFE_STATE_PROTOTYPE.dup end end
Instantiates a new State object, configured by opts.
opts can have the following keys:
-
indent: a string used to indent levels (default: "),
-
space: a string that is put after, a : or , delimiter (default: "),
-
#space_before: a string that is put before a : pair delimiter (default: "),
-
#object_nl: a string that is put at the end of a JSON object (default: "),
-
#array_nl: a string that is put at the end of a JSON array (default: "),
-
check_circular: is deprecated now, use the :#max_nesting option instead,
-
#max_nesting: sets the maximum level of data structure nesting in the generated JSON, #max_nesting = 0 if no maximum should be checked.
-
allow_nan: true if NaN, Infinity, and -Infinity should be generated, otherwise an exception is thrown, if these values are encountered. This options defaults to false.
-
#quirks_mode: Enables #quirks_mode for parser, that is for example generating single JSON values instead of documents is possible.
Source: show
# File lib/json/pure/generator.rb, line 138 def initialize(opts = {}) @indent = '' @space = '' @space_before = '' @object_nl = '' @array_nl = '' @allow_nan = false @ascii_only = false @quirks_mode = false @buffer_initial_length = 1024 configure opts end
Return the value returned by method name
.
Source: show
# File lib/json/pure/generator.rb, line 269 def [](name) __send__ name end
Returns true if NaN, Infinity, and -Infinity should be considered as valid JSON and output.
Source: show
# File lib/json/pure/generator.rb, line 205 def allow_nan? @allow_nan end
Returns true, if only ASCII characters should be generated. Otherwise returns false.
Source: show
# File lib/json/pure/generator.rb, line 211 def ascii_only? @ascii_only end
Returns true, if circular data structures are checked, otherwise returns false.
Source: show
# File lib/json/pure/generator.rb, line 199 def check_circular? !@max_nesting.zero? end
Configure this State instance with the Hash opts, and return itself.
Source: show
# File lib/json/pure/generator.rb, line 222 def configure(opts) @indent = opts[:indent] if opts.key?(:indent) @space = opts[:space] if opts.key?(:space) @space_before = opts[:space_before] if opts.key?(:space_before) @object_nl = opts[:object_nl] if opts.key?(:object_nl) @array_nl = opts[:array_nl] if opts.key?(:array_nl) @allow_nan = !!opts[:allow_nan] if opts.key?(:allow_nan) @ascii_only = opts[:ascii_only] if opts.key?(:ascii_only) @depth = opts[:depth] || 0 @quirks_mode = opts[:quirks_mode] if opts.key?(:quirks_mode) if !opts.key?(:max_nesting) # defaults to 19 @max_nesting = 19 elsif opts[:max_nesting] @max_nesting = opts[:max_nesting] else @max_nesting = 0 end self end
Generates a valid JSON document from
object obj
and returns the result. If no valid JSON document can be created this method
raises a GeneratorError exception.
Source: show
# File lib/json/pure/generator.rb, line 256 def generate(obj) result = obj.to_json(self) unless @quirks_mode unless result =~ %r\A\s*\[/ && result =~ %r\]\s*\Z/ || result =~ %r\A\s*\{/ && result =~ %r\}\s*\Z/ then raise GeneratorError, "only generation of JSON objects or arrays allowed" end end result end
Returns true, if quirks mode is enabled. Otherwise returns false.
Source: show
# File lib/json/pure/generator.rb, line 216 def quirks_mode? @quirks_mode end
Returns the configuration instance variables as a hash, that can be passed to the configure method.
Source: show
# File lib/json/pure/generator.rb, line 245 def to_h result = {} for iv in %w[indent space space_before object_nl array_nl allow_nan max_nesting ascii_only quirks_mode buffer_initial_length depth] result[iv.intern] = instance_variable_get("@#{iv}") end result end