json-maglev- 1.5.4

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 (139) hide show
  1. data/CHANGES +200 -0
  2. data/COPYING +58 -0
  3. data/COPYING-json-jruby +57 -0
  4. data/GPL +340 -0
  5. data/Gemfile +7 -0
  6. data/README-json-jruby.markdown +33 -0
  7. data/README.rdoc +358 -0
  8. data/Rakefile +407 -0
  9. data/TODO +1 -0
  10. data/VERSION +1 -0
  11. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log +52 -0
  12. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat +1000 -0
  13. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat +1001 -0
  14. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat +900 -0
  15. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat +901 -0
  16. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat +1000 -0
  17. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat +1001 -0
  18. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log +261 -0
  19. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat +1000 -0
  20. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat +1001 -0
  21. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat +1000 -0
  22. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat +1001 -0
  23. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat +1000 -0
  24. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat +1001 -0
  25. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log +262 -0
  26. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat +1000 -0
  27. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat +1001 -0
  28. data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log +82 -0
  29. data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log +34 -0
  30. data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat +900 -0
  31. data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat +901 -0
  32. data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log +81 -0
  33. data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat +1000 -0
  34. data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat +1001 -0
  35. data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log +82 -0
  36. data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat +1000 -0
  37. data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat +1001 -0
  38. data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log +82 -0
  39. data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat +1000 -0
  40. data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat +1001 -0
  41. data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log +82 -0
  42. data/benchmarks/generator2_benchmark.rb +222 -0
  43. data/benchmarks/generator_benchmark.rb +224 -0
  44. data/benchmarks/ohai.json +1216 -0
  45. data/benchmarks/ohai.ruby +1 -0
  46. data/benchmarks/parser2_benchmark.rb +251 -0
  47. data/benchmarks/parser_benchmark.rb +259 -0
  48. data/bin/edit_json.rb +9 -0
  49. data/bin/prettify_json.rb +48 -0
  50. data/data/example.json +1 -0
  51. data/data/index.html +38 -0
  52. data/data/prototype.js +4184 -0
  53. data/ext/json/ext/generator/extconf.rb +20 -0
  54. data/ext/json/ext/generator/generator.c +1414 -0
  55. data/ext/json/ext/generator/generator.h +196 -0
  56. data/ext/json/ext/parser/extconf.rb +16 -0
  57. data/ext/json/ext/parser/parser.c +1996 -0
  58. data/ext/json/ext/parser/parser.h +82 -0
  59. data/ext/json/ext/parser/parser.rl +853 -0
  60. data/install.rb +26 -0
  61. data/java/lib/bytelist-1.0.6.jar +0 -0
  62. data/java/lib/jcodings.jar +0 -0
  63. data/java/src/json/ext/ByteListTranscoder.java +167 -0
  64. data/java/src/json/ext/Generator.java +437 -0
  65. data/java/src/json/ext/GeneratorMethods.java +232 -0
  66. data/java/src/json/ext/GeneratorService.java +43 -0
  67. data/java/src/json/ext/GeneratorState.java +473 -0
  68. data/java/src/json/ext/OptionsReader.java +119 -0
  69. data/java/src/json/ext/Parser.java +2314 -0
  70. data/java/src/json/ext/Parser.rl +844 -0
  71. data/java/src/json/ext/ParserService.java +35 -0
  72. data/java/src/json/ext/RuntimeInfo.java +121 -0
  73. data/java/src/json/ext/StringDecoder.java +166 -0
  74. data/java/src/json/ext/StringEncoder.java +106 -0
  75. data/java/src/json/ext/Utils.java +89 -0
  76. data/json-java.gemspec +22 -0
  77. data/json.gemspec +41 -0
  78. data/json_pure.gemspec +46 -0
  79. data/lib/json.rb +62 -0
  80. data/lib/json/Array.xpm +21 -0
  81. data/lib/json/FalseClass.xpm +21 -0
  82. data/lib/json/Hash.xpm +21 -0
  83. data/lib/json/Key.xpm +73 -0
  84. data/lib/json/NilClass.xpm +21 -0
  85. data/lib/json/Numeric.xpm +28 -0
  86. data/lib/json/String.xpm +96 -0
  87. data/lib/json/TrueClass.xpm +21 -0
  88. data/lib/json/add/core.rb +243 -0
  89. data/lib/json/add/rails.rb +8 -0
  90. data/lib/json/common.rb +423 -0
  91. data/lib/json/editor.rb +1369 -0
  92. data/lib/json/ext.rb +28 -0
  93. data/lib/json/json.xpm +1499 -0
  94. data/lib/json/pure.rb +15 -0
  95. data/lib/json/pure/generator.rb +442 -0
  96. data/lib/json/pure/parser.rb +320 -0
  97. data/lib/json/version.rb +8 -0
  98. data/tests/fixtures/fail1.json +1 -0
  99. data/tests/fixtures/fail10.json +1 -0
  100. data/tests/fixtures/fail11.json +1 -0
  101. data/tests/fixtures/fail12.json +1 -0
  102. data/tests/fixtures/fail13.json +1 -0
  103. data/tests/fixtures/fail14.json +1 -0
  104. data/tests/fixtures/fail18.json +1 -0
  105. data/tests/fixtures/fail19.json +1 -0
  106. data/tests/fixtures/fail2.json +1 -0
  107. data/tests/fixtures/fail20.json +1 -0
  108. data/tests/fixtures/fail21.json +1 -0
  109. data/tests/fixtures/fail22.json +1 -0
  110. data/tests/fixtures/fail23.json +1 -0
  111. data/tests/fixtures/fail24.json +1 -0
  112. data/tests/fixtures/fail25.json +1 -0
  113. data/tests/fixtures/fail27.json +2 -0
  114. data/tests/fixtures/fail28.json +2 -0
  115. data/tests/fixtures/fail3.json +1 -0
  116. data/tests/fixtures/fail4.json +1 -0
  117. data/tests/fixtures/fail5.json +1 -0
  118. data/tests/fixtures/fail6.json +1 -0
  119. data/tests/fixtures/fail7.json +1 -0
  120. data/tests/fixtures/fail8.json +1 -0
  121. data/tests/fixtures/fail9.json +1 -0
  122. data/tests/fixtures/pass1.json +56 -0
  123. data/tests/fixtures/pass15.json +1 -0
  124. data/tests/fixtures/pass16.json +1 -0
  125. data/tests/fixtures/pass17.json +1 -0
  126. data/tests/fixtures/pass2.json +1 -0
  127. data/tests/fixtures/pass26.json +1 -0
  128. data/tests/fixtures/pass3.json +6 -0
  129. data/tests/setup_variant.rb +11 -0
  130. data/tests/test_json.rb +424 -0
  131. data/tests/test_json_addition.rb +167 -0
  132. data/tests/test_json_encoding.rb +65 -0
  133. data/tests/test_json_fixtures.rb +35 -0
  134. data/tests/test_json_generate.rb +180 -0
  135. data/tests/test_json_string_matching.rb +40 -0
  136. data/tests/test_json_unicode.rb +72 -0
  137. data/tools/fuzz.rb +139 -0
  138. data/tools/server.rb +61 -0
  139. metadata +265 -0
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+
4
+ require 'test/unit'
5
+ require File.join(File.dirname(__FILE__), 'setup_variant')
6
+ require 'stringio'
7
+ require 'time'
8
+
9
+ class TestJsonStringMatching < Test::Unit::TestCase
10
+ include JSON
11
+
12
+ class TestTime < ::Time
13
+ def self.json_create(string)
14
+ Time.parse(string)
15
+ end
16
+
17
+ def to_json(*)
18
+ %{"#{strftime('%FT%T%z')}"}
19
+ end
20
+
21
+ def ==(other)
22
+ to_i == other.to_i
23
+ end
24
+ end
25
+
26
+ def test_match_date
27
+ t = TestTime.new
28
+ t_json = [ t ].to_json
29
+ assert_equal [ t ],
30
+ JSON.parse(t_json,
31
+ :match_string => { /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\Z/ => TestTime })
32
+ assert_equal [ t.strftime('%FT%T%z') ],
33
+ JSON.parse(t_json,
34
+ :match_string => { /\A\d{3}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\Z/ => TestTime })
35
+ assert_equal [ t.strftime('%FT%T%z') ],
36
+ JSON.parse(t_json,
37
+ :match_string => { /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\Z/ => TestTime },
38
+ :create_additions => false)
39
+ end
40
+ end
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+
4
+ require 'test/unit'
5
+ require File.join(File.dirname(__FILE__), 'setup_variant')
6
+
7
+ class TC_JSONUnicode < 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
data/tools/fuzz.rb ADDED
@@ -0,0 +1,139 @@
1
+ require 'json'
2
+
3
+ require 'iconv'
4
+ ISO_8859_1_TO_UTF8 = Iconv.new('utf-8', 'iso-8859-15')
5
+ class ::String
6
+ def to_utf8
7
+ ISO_8859_1_TO_UTF8.iconv self
8
+ end
9
+ end
10
+
11
+ class Fuzzer
12
+ def initialize(n, freqs = {})
13
+ sum = freqs.inject(0.0) { |s, x| s + x.last }
14
+ freqs.each_key { |x| freqs[x] /= sum }
15
+ s = 0.0
16
+ freqs.each_key do |x|
17
+ freqs[x] = s .. (s + t = freqs[x])
18
+ s += t
19
+ end
20
+ @freqs = freqs
21
+ @n = n
22
+ @alpha = (0..0xff).to_a
23
+ end
24
+
25
+ def random_string
26
+ s = ''
27
+ 30.times { s << @alpha[rand(@alpha.size)] }
28
+ s.to_utf8
29
+ end
30
+
31
+ def pick
32
+ r = rand
33
+ found = @freqs.find { |k, f| f.include? rand }
34
+ found && found.first
35
+ end
36
+
37
+ def make_pick
38
+ k = pick
39
+ case
40
+ when k == Hash, k == Array
41
+ k.new
42
+ when k == true, k == false, k == nil
43
+ k
44
+ when k == String
45
+ random_string
46
+ when k == Fixnum
47
+ rand(2 ** 30) - 2 ** 29
48
+ when k == Bignum
49
+ rand(2 ** 70) - 2 ** 69
50
+ end
51
+ end
52
+
53
+ def fuzz(current = nil)
54
+ if @n > 0
55
+ case current
56
+ when nil
57
+ @n -= 1
58
+ current = fuzz [ Hash, Array ][rand(2)].new
59
+ when Array
60
+ while @n > 0
61
+ @n -= 1
62
+ current << case p = make_pick
63
+ when Array, Hash
64
+ fuzz(p)
65
+ else
66
+ p
67
+ end
68
+ end
69
+ when Hash
70
+ while @n > 0
71
+ @n -= 1
72
+ current[random_string] = case p = make_pick
73
+ when Array, Hash
74
+ fuzz(p)
75
+ else
76
+ p
77
+ end
78
+ end
79
+ end
80
+ end
81
+ current
82
+ end
83
+ end
84
+
85
+ class MyState < JSON.state
86
+ WS = " \r\t\n"
87
+
88
+ def initialize
89
+ super(
90
+ :indent => make_spaces,
91
+ :space => make_spaces,
92
+ :space_before => make_spaces,
93
+ :object_nl => make_spaces,
94
+ :array_nl => make_spaces,
95
+ :max_nesting => false
96
+ )
97
+ end
98
+
99
+ def make_spaces
100
+ s = ''
101
+ rand(1).times { s << WS[rand(WS.size)] }
102
+ s
103
+ end
104
+ end
105
+
106
+ n = (ARGV.shift || 500).to_i
107
+ loop do
108
+ fuzzer = Fuzzer.new(n,
109
+ Hash => 25,
110
+ Array => 25,
111
+ String => 10,
112
+ Fixnum => 10,
113
+ Bignum => 10,
114
+ nil => 5,
115
+ true => 5,
116
+ false => 5
117
+ )
118
+ o1 = fuzzer.fuzz
119
+ json = JSON.generate o1, MyState.new
120
+ if $DEBUG
121
+ puts "-" * 80
122
+ puts json, json.size
123
+ else
124
+ puts json.size
125
+ end
126
+ begin
127
+ o2 = JSON.parse(json, :max_nesting => false)
128
+ rescue JSON::ParserError => e
129
+ puts "Caught #{e.class}: #{e.message}\n#{e.backtrace * "\n"}"
130
+ puts "o1 = #{o1.inspect}", "json = #{json}", "json_str = #{json.inspect}"
131
+ puts "locals = #{local_variables.inspect}"
132
+ exit
133
+ end
134
+ if o1 != o2
135
+ puts "mismatch", "o1 = #{o1.inspect}", "o2 = #{o2.inspect}",
136
+ "json = #{json}", "json_str = #{json.inspect}"
137
+ puts "locals = #{local_variables.inspect}"
138
+ end
139
+ end
data/tools/server.rb ADDED
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'webrick'
4
+ include WEBrick
5
+ $:.unshift 'ext'
6
+ $:.unshift 'lib'
7
+ require 'json'
8
+
9
+ class JSONServlet < HTTPServlet::AbstractServlet
10
+ @@count = 1
11
+
12
+ def do_GET(req, res)
13
+ obj = {
14
+ "TIME" => Time.now.strftime("%FT%T"),
15
+ "foo" => "Bär",
16
+ "bar" => "© ≠ €!",
17
+ 'a' => 2,
18
+ 'b' => 3.141,
19
+ 'COUNT' => @@count += 1,
20
+ 'c' => 'c',
21
+ 'd' => [ 1, "b", 3.14 ],
22
+ 'e' => { 'foo' => 'bar' },
23
+ 'g' => "松本行弘",
24
+ 'h' => 1000.0,
25
+ 'i' => 0.001,
26
+ 'j' => "\xf0\xa0\x80\x81",
27
+ }
28
+ res.body = JSON.generate obj
29
+ res['Content-Type'] = "application/json"
30
+ end
31
+ end
32
+
33
+ def create_server(err, dir, port)
34
+ dir = File.expand_path(dir)
35
+ err.puts "Surf to:", "http://#{Socket.gethostname}:#{port}"
36
+
37
+ s = HTTPServer.new(
38
+ :Port => port,
39
+ :DocumentRoot => dir,
40
+ :Logger => WEBrick::Log.new(err),
41
+ :AccessLog => [
42
+ [ err, WEBrick::AccessLog::COMMON_LOG_FORMAT ],
43
+ [ err, WEBrick::AccessLog::REFERER_LOG_FORMAT ],
44
+ [ err, WEBrick::AccessLog::AGENT_LOG_FORMAT ]
45
+ ]
46
+ )
47
+ s.mount("/json", JSONServlet)
48
+ s
49
+ end
50
+
51
+ default_dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'data'))
52
+ dir = ARGV.shift || default_dir
53
+ port = (ARGV.shift || 6666).to_i
54
+ s = create_server(STDERR, dir, 6666)
55
+ t = Thread.new { s.start }
56
+ trap(:INT) do
57
+ s.shutdown
58
+ t.join
59
+ exit
60
+ end
61
+ sleep
metadata ADDED
@@ -0,0 +1,265 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: json-maglev-
3
+ version: !ruby/object:Gem::Version
4
+ hash: 11
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 5
9
+ - 4
10
+ version: 1.5.4
11
+ platform: ruby
12
+ authors:
13
+ - Florian Frank
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-07-08 00:00:00 -07:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: permutation
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :development
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: bullshit
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :development
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: sdoc
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :development
62
+ version_requirements: *id003
63
+ description: This is a JSON implementation as a Ruby extension in C.
64
+ email: flori@ping.de
65
+ executables:
66
+ - edit_json.rb
67
+ - prettify_json.rb
68
+ extensions:
69
+ - ext/json/ext/parser/extconf.rb
70
+ - ext/json/ext/generator/extconf.rb
71
+ extra_rdoc_files:
72
+ - README.rdoc
73
+ files:
74
+ - tests/test_json_string_matching.rb
75
+ - tests/test_json_fixtures.rb
76
+ - tests/setup_variant.rb
77
+ - tests/fixtures/fail6.json
78
+ - tests/fixtures/fail9.json
79
+ - tests/fixtures/fail10.json
80
+ - tests/fixtures/fail24.json
81
+ - tests/fixtures/fail28.json
82
+ - tests/fixtures/fail13.json
83
+ - tests/fixtures/fail4.json
84
+ - tests/fixtures/pass3.json
85
+ - tests/fixtures/fail11.json
86
+ - tests/fixtures/fail14.json
87
+ - tests/fixtures/fail3.json
88
+ - tests/fixtures/fail12.json
89
+ - tests/fixtures/pass16.json
90
+ - tests/fixtures/pass15.json
91
+ - tests/fixtures/fail20.json
92
+ - tests/fixtures/fail8.json
93
+ - tests/fixtures/pass2.json
94
+ - tests/fixtures/fail5.json
95
+ - tests/fixtures/fail1.json
96
+ - tests/fixtures/fail25.json
97
+ - tests/fixtures/pass17.json
98
+ - tests/fixtures/fail7.json
99
+ - tests/fixtures/pass26.json
100
+ - tests/fixtures/fail21.json
101
+ - tests/fixtures/pass1.json
102
+ - tests/fixtures/fail23.json
103
+ - tests/fixtures/fail18.json
104
+ - tests/fixtures/fail2.json
105
+ - tests/fixtures/fail22.json
106
+ - tests/fixtures/fail27.json
107
+ - tests/fixtures/fail19.json
108
+ - tests/test_json_unicode.rb
109
+ - tests/test_json_addition.rb
110
+ - tests/test_json_generate.rb
111
+ - tests/test_json_encoding.rb
112
+ - tests/test_json.rb
113
+ - COPYING
114
+ - TODO
115
+ - Rakefile
116
+ - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat
117
+ - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log
118
+ - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log
119
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log
120
+ - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log
121
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat
122
+ - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat
123
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat
124
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log
125
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat
126
+ - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat
127
+ - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat
128
+ - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat
129
+ - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat
130
+ - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log
131
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat
132
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat
133
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat
134
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log
135
+ - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat
136
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log
137
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat
138
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat
139
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat
140
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat
141
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat
142
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat
143
+ - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log
144
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat
145
+ - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat
146
+ - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat
147
+ - benchmarks/parser2_benchmark.rb
148
+ - benchmarks/parser_benchmark.rb
149
+ - benchmarks/generator2_benchmark.rb
150
+ - benchmarks/generator_benchmark.rb
151
+ - benchmarks/ohai.ruby
152
+ - benchmarks/ohai.json
153
+ - lib/json/json.xpm
154
+ - lib/json/TrueClass.xpm
155
+ - lib/json/version.rb
156
+ - lib/json/Array.xpm
157
+ - lib/json/add/core.rb
158
+ - lib/json/add/rails.rb
159
+ - lib/json/common.rb
160
+ - lib/json/pure/generator.rb
161
+ - lib/json/pure/parser.rb
162
+ - lib/json/ext.rb
163
+ - lib/json/pure.rb
164
+ - lib/json/Key.xpm
165
+ - lib/json/FalseClass.xpm
166
+ - lib/json/editor.rb
167
+ - lib/json/Numeric.xpm
168
+ - lib/json/NilClass.xpm
169
+ - lib/json/String.xpm
170
+ - lib/json/Hash.xpm
171
+ - lib/json.rb
172
+ - Gemfile
173
+ - README.rdoc
174
+ - json_pure.gemspec
175
+ - GPL
176
+ - CHANGES
177
+ - bin/prettify_json.rb
178
+ - bin/edit_json.rb
179
+ - COPYING-json-jruby
180
+ - ext/json/ext/parser/parser.h
181
+ - ext/json/ext/parser/extconf.rb
182
+ - ext/json/ext/parser/parser.rl
183
+ - ext/json/ext/parser/parser.c
184
+ - ext/json/ext/generator/generator.c
185
+ - ext/json/ext/generator/extconf.rb
186
+ - ext/json/ext/generator/generator.h
187
+ - VERSION
188
+ - data/prototype.js
189
+ - data/index.html
190
+ - data/example.json
191
+ - json.gemspec
192
+ - java/src/json/ext/Parser.java
193
+ - java/src/json/ext/RuntimeInfo.java
194
+ - java/src/json/ext/GeneratorState.java
195
+ - java/src/json/ext/OptionsReader.java
196
+ - java/src/json/ext/ParserService.java
197
+ - java/src/json/ext/Parser.rl
198
+ - java/src/json/ext/StringEncoder.java
199
+ - java/src/json/ext/GeneratorService.java
200
+ - java/src/json/ext/Utils.java
201
+ - java/src/json/ext/StringDecoder.java
202
+ - java/src/json/ext/Generator.java
203
+ - java/src/json/ext/ByteListTranscoder.java
204
+ - java/src/json/ext/GeneratorMethods.java
205
+ - java/lib/bytelist-1.0.6.jar
206
+ - java/lib/jcodings.jar
207
+ - README-json-jruby.markdown
208
+ - install.rb
209
+ - json-java.gemspec
210
+ - tools/fuzz.rb
211
+ - tools/server.rb
212
+ - ./tests/test_json_string_matching.rb
213
+ - ./tests/test_json_fixtures.rb
214
+ - ./tests/test_json_unicode.rb
215
+ - ./tests/test_json_addition.rb
216
+ - ./tests/test_json_generate.rb
217
+ - ./tests/test_json_encoding.rb
218
+ - ./tests/test_json.rb
219
+ has_rdoc: true
220
+ homepage: http://flori.github.com/json
221
+ licenses: []
222
+
223
+ post_install_message:
224
+ rdoc_options:
225
+ - --title
226
+ - JSON implemention for Ruby
227
+ - --main
228
+ - README.rdoc
229
+ require_paths:
230
+ - ext/json/ext
231
+ - ext
232
+ - lib
233
+ required_ruby_version: !ruby/object:Gem::Requirement
234
+ none: false
235
+ requirements:
236
+ - - ">="
237
+ - !ruby/object:Gem::Version
238
+ hash: 3
239
+ segments:
240
+ - 0
241
+ version: "0"
242
+ required_rubygems_version: !ruby/object:Gem::Requirement
243
+ none: false
244
+ requirements:
245
+ - - ">="
246
+ - !ruby/object:Gem::Version
247
+ hash: 3
248
+ segments:
249
+ - 0
250
+ version: "0"
251
+ requirements: []
252
+
253
+ rubyforge_project: json
254
+ rubygems_version: 1.6.2
255
+ signing_key:
256
+ specification_version: 4
257
+ summary: JSON Implementation for Ruby
258
+ test_files:
259
+ - ./tests/test_json_string_matching.rb
260
+ - ./tests/test_json_fixtures.rb
261
+ - ./tests/test_json_unicode.rb
262
+ - ./tests/test_json_addition.rb
263
+ - ./tests/test_json_generate.rb
264
+ - ./tests/test_json_encoding.rb
265
+ - ./tests/test_json.rb