json 1.8.3 → 2.3.0

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 (82) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -0
  3. data/.travis.yml +9 -11
  4. data/{CHANGES → CHANGES.md} +186 -90
  5. data/Gemfile +10 -6
  6. data/{COPYING-json-jruby → LICENSE} +5 -6
  7. data/{README-json-jruby.markdown → README-json-jruby.md} +0 -0
  8. data/{README.rdoc → README.md} +185 -134
  9. data/Rakefile +41 -40
  10. data/VERSION +1 -1
  11. data/ext/json/ext/fbuffer/fbuffer.h +0 -3
  12. data/ext/json/ext/generator/generator.c +142 -101
  13. data/ext/json/ext/generator/generator.h +7 -2
  14. data/ext/json/ext/parser/extconf.rb +3 -0
  15. data/ext/json/ext/parser/parser.c +383 -463
  16. data/ext/json/ext/parser/parser.h +4 -5
  17. data/ext/json/ext/parser/parser.rl +141 -184
  18. data/ext/json/extconf.rb +0 -1
  19. data/java/src/json/ext/ByteListTranscoder.java +1 -2
  20. data/java/src/json/ext/Generator.java +44 -22
  21. data/java/src/json/ext/GeneratorMethods.java +1 -2
  22. data/java/src/json/ext/GeneratorService.java +1 -2
  23. data/java/src/json/ext/GeneratorState.java +3 -56
  24. data/java/src/json/ext/OptionsReader.java +2 -3
  25. data/java/src/json/ext/Parser.java +132 -415
  26. data/java/src/json/ext/Parser.rl +48 -124
  27. data/java/src/json/ext/ParserService.java +1 -2
  28. data/java/src/json/ext/RuntimeInfo.java +1 -6
  29. data/java/src/json/ext/StringDecoder.java +1 -2
  30. data/java/src/json/ext/StringEncoder.java +5 -0
  31. data/java/src/json/ext/Utils.java +1 -2
  32. data/json-java.gemspec +16 -2
  33. data/json.gemspec +0 -0
  34. data/json_pure.gemspec +24 -26
  35. data/lib/json/add/bigdecimal.rb +3 -2
  36. data/lib/json/add/complex.rb +4 -3
  37. data/lib/json/add/core.rb +1 -0
  38. data/lib/json/add/date.rb +1 -1
  39. data/lib/json/add/date_time.rb +1 -1
  40. data/lib/json/add/exception.rb +1 -1
  41. data/lib/json/add/ostruct.rb +3 -3
  42. data/lib/json/add/range.rb +1 -1
  43. data/lib/json/add/rational.rb +3 -2
  44. data/lib/json/add/regexp.rb +3 -3
  45. data/lib/json/add/set.rb +29 -0
  46. data/lib/json/add/struct.rb +1 -1
  47. data/lib/json/add/symbol.rb +1 -1
  48. data/lib/json/add/time.rb +1 -1
  49. data/lib/json/common.rb +26 -54
  50. data/lib/json/ext.rb +0 -6
  51. data/lib/json/generic_object.rb +5 -4
  52. data/lib/json/pure/generator.rb +63 -126
  53. data/lib/json/pure/parser.rb +41 -81
  54. data/lib/json/pure.rb +2 -8
  55. data/lib/json/version.rb +2 -1
  56. data/lib/json.rb +1 -0
  57. data/references/rfc7159.txt +899 -0
  58. data/tests/fixtures/obsolete_fail1.json +1 -0
  59. data/tests/{test_json_addition.rb → json_addition_test.rb} +32 -25
  60. data/tests/json_common_interface_test.rb +126 -0
  61. data/tests/json_encoding_test.rb +107 -0
  62. data/tests/json_ext_parser_test.rb +15 -0
  63. data/tests/{test_json_fixtures.rb → json_fixtures_test.rb} +5 -8
  64. data/tests/{test_json_generate.rb → json_generator_test.rb} +123 -39
  65. data/tests/{test_json_generic_object.rb → json_generic_object_test.rb} +15 -8
  66. data/tests/json_parser_test.rb +472 -0
  67. data/tests/json_string_matching_test.rb +38 -0
  68. data/tests/{setup_variant.rb → test_helper.rb} +6 -0
  69. data/tools/diff.sh +18 -0
  70. data/tools/fuzz.rb +1 -9
  71. metadata +30 -47
  72. data/COPYING +0 -58
  73. data/GPL +0 -340
  74. data/TODO +0 -1
  75. data/data/example.json +0 -1
  76. data/data/index.html +0 -38
  77. data/data/prototype.js +0 -4184
  78. data/tests/fixtures/fail1.json +0 -1
  79. data/tests/test_json.rb +0 -553
  80. data/tests/test_json_encoding.rb +0 -65
  81. data/tests/test_json_string_matching.rb +0 -39
  82. data/tests/test_json_unicode.rb +0 -72
@@ -1,72 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require 'test/unit'
5
- require File.join(File.dirname(__FILE__), 'setup_variant')
6
-
7
- class TestJSONUnicode < Test::Unit::TestCase
8
- include JSON
9
-
10
- def test_unicode
11
- assert_equal '""', ''.to_json
12
- assert_equal '"\\b"', "\b".to_json
13
- assert_equal '"\u0001"', 0x1.chr.to_json
14
- assert_equal '"\u001f"', 0x1f.chr.to_json
15
- assert_equal '" "', ' '.to_json
16
- assert_equal "\"#{0x7f.chr}\"", 0x7f.chr.to_json
17
- utf8 = [ "© ≠ €! \01" ]
18
- json = '["© ≠ €! \u0001"]'
19
- assert_equal json, utf8.to_json(:ascii_only => false)
20
- assert_equal utf8, parse(json)
21
- json = '["\u00a9 \u2260 \u20ac! \u0001"]'
22
- assert_equal json, utf8.to_json(:ascii_only => true)
23
- assert_equal utf8, parse(json)
24
- utf8 = ["\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212"]
25
- json = "[\"\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212\"]"
26
- assert_equal utf8, parse(json)
27
- assert_equal json, utf8.to_json(:ascii_only => false)
28
- utf8 = ["\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212"]
29
- assert_equal utf8, parse(json)
30
- json = "[\"\\u3042\\u3044\\u3046\\u3048\\u304a\"]"
31
- assert_equal json, utf8.to_json(:ascii_only => true)
32
- assert_equal utf8, parse(json)
33
- utf8 = ['საქართველო']
34
- json = '["საქართველო"]'
35
- assert_equal json, utf8.to_json(:ascii_only => false)
36
- json = "[\"\\u10e1\\u10d0\\u10e5\\u10d0\\u10e0\\u10d7\\u10d5\\u10d4\\u10da\\u10dd\"]"
37
- assert_equal json, utf8.to_json(:ascii_only => true)
38
- assert_equal utf8, parse(json)
39
- assert_equal '["Ã"]', JSON.generate(["Ã"], :ascii_only => false)
40
- assert_equal '["\\u00c3"]', JSON.generate(["Ã"], :ascii_only => true)
41
- assert_equal ["€"], JSON.parse('["\u20ac"]')
42
- utf8 = ["\xf0\xa0\x80\x81"]
43
- json = "[\"\xf0\xa0\x80\x81\"]"
44
- assert_equal json, JSON.generate(utf8, :ascii_only => false)
45
- assert_equal utf8, JSON.parse(json)
46
- json = '["\ud840\udc01"]'
47
- assert_equal json, JSON.generate(utf8, :ascii_only => true)
48
- assert_equal utf8, JSON.parse(json)
49
- end
50
-
51
- def test_chars
52
- (0..0x7f).each do |i|
53
- json = '["\u%04x"]' % i
54
- if RUBY_VERSION >= "1.9."
55
- i = i.chr
56
- end
57
- assert_equal i, JSON.parse(json).first[0]
58
- if i == ?\b
59
- generated = JSON.generate(["" << i])
60
- assert '["\b"]' == generated || '["\10"]' == generated
61
- elsif [?\n, ?\r, ?\t, ?\f].include?(i)
62
- assert_equal '[' << ('' << i).dump << ']', JSON.generate(["" << i])
63
- elsif i.chr < 0x20.chr
64
- assert_equal json, JSON.generate(["" << i])
65
- end
66
- end
67
- assert_raise(JSON::GeneratorError) do
68
- JSON.generate(["\x80"], :ascii_only => true)
69
- end
70
- assert_equal "\302\200", JSON.parse('["\u0080"]').first
71
- end
72
- end