json 1.8.6-java → 2.11.1-java

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.
Files changed (74) hide show
  1. checksums.yaml +5 -5
  2. data/BSDL +22 -0
  3. data/CHANGES.md +619 -0
  4. data/COPYING +56 -0
  5. data/LEGAL +8 -0
  6. data/README.md +268 -0
  7. data/json.gemspec +63 -0
  8. data/lib/json/add/bigdecimal.rb +41 -11
  9. data/lib/json/add/complex.rb +32 -9
  10. data/lib/json/add/core.rb +1 -0
  11. data/lib/json/add/date.rb +27 -7
  12. data/lib/json/add/date_time.rb +26 -9
  13. data/lib/json/add/exception.rb +25 -7
  14. data/lib/json/add/ostruct.rb +32 -9
  15. data/lib/json/add/range.rb +33 -8
  16. data/lib/json/add/rational.rb +30 -8
  17. data/lib/json/add/regexp.rb +28 -10
  18. data/lib/json/add/set.rb +48 -0
  19. data/lib/json/add/struct.rb +29 -7
  20. data/lib/json/add/symbol.rb +34 -7
  21. data/lib/json/add/time.rb +29 -15
  22. data/lib/json/common.rb +916 -316
  23. data/lib/json/ext/generator/state.rb +106 -0
  24. data/lib/json/ext/generator.jar +0 -0
  25. data/lib/json/ext/parser.jar +0 -0
  26. data/lib/json/ext.rb +34 -10
  27. data/lib/json/generic_object.rb +11 -6
  28. data/lib/json/truffle_ruby/generator.rb +690 -0
  29. data/lib/json/version.rb +3 -6
  30. data/lib/json.rb +560 -35
  31. metadata +29 -82
  32. data/lib/json/pure/generator.rb +0 -530
  33. data/lib/json/pure/parser.rb +0 -359
  34. data/lib/json/pure.rb +0 -21
  35. data/tests/fixtures/fail1.json +0 -1
  36. data/tests/fixtures/fail10.json +0 -1
  37. data/tests/fixtures/fail11.json +0 -1
  38. data/tests/fixtures/fail12.json +0 -1
  39. data/tests/fixtures/fail13.json +0 -1
  40. data/tests/fixtures/fail14.json +0 -1
  41. data/tests/fixtures/fail18.json +0 -1
  42. data/tests/fixtures/fail19.json +0 -1
  43. data/tests/fixtures/fail2.json +0 -1
  44. data/tests/fixtures/fail20.json +0 -1
  45. data/tests/fixtures/fail21.json +0 -1
  46. data/tests/fixtures/fail22.json +0 -1
  47. data/tests/fixtures/fail23.json +0 -1
  48. data/tests/fixtures/fail24.json +0 -1
  49. data/tests/fixtures/fail25.json +0 -1
  50. data/tests/fixtures/fail27.json +0 -2
  51. data/tests/fixtures/fail28.json +0 -2
  52. data/tests/fixtures/fail3.json +0 -1
  53. data/tests/fixtures/fail4.json +0 -1
  54. data/tests/fixtures/fail5.json +0 -1
  55. data/tests/fixtures/fail6.json +0 -1
  56. data/tests/fixtures/fail7.json +0 -1
  57. data/tests/fixtures/fail8.json +0 -1
  58. data/tests/fixtures/fail9.json +0 -1
  59. data/tests/fixtures/pass1.json +0 -56
  60. data/tests/fixtures/pass15.json +0 -1
  61. data/tests/fixtures/pass16.json +0 -1
  62. data/tests/fixtures/pass17.json +0 -1
  63. data/tests/fixtures/pass2.json +0 -1
  64. data/tests/fixtures/pass26.json +0 -1
  65. data/tests/fixtures/pass3.json +0 -6
  66. data/tests/setup_variant.rb +0 -11
  67. data/tests/test_json.rb +0 -519
  68. data/tests/test_json_addition.rb +0 -196
  69. data/tests/test_json_encoding.rb +0 -65
  70. data/tests/test_json_fixtures.rb +0 -35
  71. data/tests/test_json_generate.rb +0 -348
  72. data/tests/test_json_generic_object.rb +0 -75
  73. data/tests/test_json_string_matching.rb +0 -39
  74. data/tests/test_json_unicode.rb +0 -72
@@ -0,0 +1,106 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JSON
4
+ module Ext
5
+ module Generator
6
+ class State
7
+ # call-seq: new(opts = {})
8
+ #
9
+ # Instantiates a new State object, configured by _opts_.
10
+ #
11
+ # _opts_ can have the following keys:
12
+ #
13
+ # * *indent*: a string used to indent levels (default: ''),
14
+ # * *space*: a string that is put after, a : or , delimiter (default: ''),
15
+ # * *space_before*: a string that is put before a : pair delimiter (default: ''),
16
+ # * *object_nl*: a string that is put at the end of a JSON object (default: ''),
17
+ # * *array_nl*: a string that is put at the end of a JSON array (default: ''),
18
+ # * *allow_nan*: true if NaN, Infinity, and -Infinity should be
19
+ # generated, otherwise an exception is thrown, if these values are
20
+ # encountered. This options defaults to false.
21
+ # * *ascii_only*: true if only ASCII characters should be generated. This
22
+ # option defaults to false.
23
+ # * *buffer_initial_length*: sets the initial length of the generator's
24
+ # internal buffer.
25
+ def initialize(opts = nil)
26
+ if opts && !opts.empty?
27
+ configure(opts)
28
+ end
29
+ end
30
+
31
+ # call-seq: configure(opts)
32
+ #
33
+ # Configure this State instance with the Hash _opts_, and return
34
+ # itself.
35
+ def configure(opts)
36
+ unless opts.is_a?(Hash)
37
+ if opts.respond_to?(:to_hash)
38
+ opts = opts.to_hash
39
+ elsif opts.respond_to?(:to_h)
40
+ opts = opts.to_h
41
+ else
42
+ raise TypeError, "can't convert #{opts.class} into Hash"
43
+ end
44
+ end
45
+ _configure(opts)
46
+ end
47
+
48
+ alias_method :merge, :configure
49
+
50
+ # call-seq: to_h
51
+ #
52
+ # Returns the configuration instance variables as a hash, that can be
53
+ # passed to the configure method.
54
+ def to_h
55
+ result = {
56
+ indent: indent,
57
+ space: space,
58
+ space_before: space_before,
59
+ object_nl: object_nl,
60
+ array_nl: array_nl,
61
+ as_json: as_json,
62
+ allow_nan: allow_nan?,
63
+ ascii_only: ascii_only?,
64
+ max_nesting: max_nesting,
65
+ script_safe: script_safe?,
66
+ strict: strict?,
67
+ depth: depth,
68
+ buffer_initial_length: buffer_initial_length,
69
+ }
70
+
71
+ instance_variables.each do |iv|
72
+ iv = iv.to_s[1..-1]
73
+ result[iv.to_sym] = self[iv]
74
+ end
75
+
76
+ result
77
+ end
78
+
79
+ alias_method :to_hash, :to_h
80
+
81
+ # call-seq: [](name)
82
+ #
83
+ # Returns the value returned by method +name+.
84
+ def [](name)
85
+ if respond_to?(name)
86
+ __send__(name)
87
+ else
88
+ instance_variable_get("@#{name}") if
89
+ instance_variables.include?("@#{name}".to_sym) # avoid warning
90
+ end
91
+ end
92
+
93
+ # call-seq: []=(name, value)
94
+ #
95
+ # Sets the attribute name to value.
96
+ def []=(name, value)
97
+ if respond_to?(name_writer = "#{name}=")
98
+ __send__ name_writer, value
99
+ else
100
+ instance_variable_set "@#{name}", value
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
Binary file
Binary file
data/lib/json/ext.rb CHANGED
@@ -1,20 +1,44 @@
1
- if ENV['SIMPLECOV_COVERAGE'].to_i == 1
2
- require 'simplecov'
3
- SimpleCov.start do
4
- add_filter "/tests/"
5
- end
6
- end
1
+ # frozen_string_literal: true
2
+
7
3
  require 'json/common'
8
4
 
9
5
  module JSON
10
6
  # This module holds all the modules/classes that implement JSON's
11
7
  # functionality as C extensions.
12
8
  module Ext
9
+ class Parser
10
+ class << self
11
+ def parse(...)
12
+ new(...).parse
13
+ end
14
+ alias_method :parse, :parse # Allow redefinition by extensions
15
+ end
16
+
17
+ def initialize(source, opts = nil)
18
+ @source = source
19
+ @config = Config.new(opts)
20
+ end
21
+
22
+ def source
23
+ @source.dup
24
+ end
25
+
26
+ def parse
27
+ @config.parse(@source)
28
+ end
29
+ end
30
+
13
31
  require 'json/ext/parser'
14
- require 'json/ext/generator'
15
- $DEBUG and warn "Using Ext extension for JSON."
16
- JSON.parser = Parser
17
- JSON.generator = Generator
32
+ Ext::Parser::Config = Ext::ParserConfig
33
+ JSON.parser = Ext::Parser
34
+
35
+ if RUBY_ENGINE == 'truffleruby'
36
+ require 'json/truffle_ruby/generator'
37
+ JSON.generator = ::JSON::TruffleRuby::Generator
38
+ else
39
+ require 'json/ext/generator'
40
+ JSON.generator = Generator
41
+ end
18
42
  end
19
43
 
20
44
  JSON_LOADED = true unless defined?(::JSON::JSON_LOADED)
@@ -1,4 +1,9 @@
1
- require 'ostruct'
1
+ # frozen_string_literal: true
2
+ begin
3
+ require 'ostruct'
4
+ rescue LoadError
5
+ warn "JSON::GenericObject requires 'ostruct'. Please install it with `gem install ostruct`."
6
+ end
2
7
 
3
8
  module JSON
4
9
  class GenericObject < OpenStruct
@@ -48,12 +53,12 @@ module JSON
48
53
  end
49
54
 
50
55
  def [](name)
51
- table[name.to_sym]
52
- end
56
+ __send__(name)
57
+ end unless method_defined?(:[])
53
58
 
54
59
  def []=(name, value)
55
- __send__ "#{name}=", value
56
- end
60
+ __send__("#{name}=", value)
61
+ end unless method_defined?(:[]=)
57
62
 
58
63
  def |(other)
59
64
  self.class[other.to_hash.merge(to_hash)]
@@ -66,5 +71,5 @@ module JSON
66
71
  def to_json(*a)
67
72
  as_json.to_json(*a)
68
73
  end
69
- end
74
+ end if defined?(::OpenStruct)
70
75
  end