json 1.1.5-x86-linux
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.
Potentially problematic release.
This version of json might be problematic. Click here for more details.
- data/CHANGES +106 -0
- data/GPL +340 -0
- data/README +78 -0
- data/RUBY +58 -0
- data/Rakefile +268 -0
- data/TODO +1 -0
- data/VERSION +1 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log +52 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat +900 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat +901 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log +261 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log +262 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log +82 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log +34 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat +900 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat +901 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log +81 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log +82 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log +82 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log +82 -0
- data/benchmarks/generator_benchmark.rb +165 -0
- data/benchmarks/parser_benchmark.rb +197 -0
- data/bin/edit_json.rb +9 -0
- data/bin/prettify_json.rb +75 -0
- data/data/example.json +1 -0
- data/data/index.html +38 -0
- data/data/prototype.js +4184 -0
- data/doc-templates/main.txt +283 -0
- data/ext/json/ext/generator/extconf.rb +11 -0
- data/ext/json/ext/generator/generator.c +919 -0
- data/ext/json/ext/generator/unicode.c +182 -0
- data/ext/json/ext/generator/unicode.h +53 -0
- data/ext/json/ext/parser/extconf.rb +11 -0
- data/ext/json/ext/parser/parser.c +1829 -0
- data/ext/json/ext/parser/parser.rl +686 -0
- data/ext/json/ext/parser/unicode.c +154 -0
- data/ext/json/ext/parser/unicode.h +58 -0
- data/install.rb +26 -0
- data/lib/json.rb +10 -0
- data/lib/json/Array.xpm +21 -0
- data/lib/json/FalseClass.xpm +21 -0
- data/lib/json/Hash.xpm +21 -0
- data/lib/json/Key.xpm +73 -0
- data/lib/json/NilClass.xpm +21 -0
- data/lib/json/Numeric.xpm +28 -0
- data/lib/json/String.xpm +96 -0
- data/lib/json/TrueClass.xpm +21 -0
- data/lib/json/add/core.rb +135 -0
- data/lib/json/add/rails.rb +58 -0
- data/lib/json/common.rb +354 -0
- data/lib/json/editor.rb +1371 -0
- data/lib/json/ext.rb +15 -0
- data/lib/json/ext/generator.so +0 -0
- data/lib/json/ext/parser.so +0 -0
- data/lib/json/json.xpm +1499 -0
- data/lib/json/pure.rb +77 -0
- data/lib/json/pure/generator.rb +430 -0
- data/lib/json/pure/parser.rb +267 -0
- data/lib/json/version.rb +8 -0
- data/tests/fixtures/fail1.json +1 -0
- data/tests/fixtures/fail10.json +1 -0
- data/tests/fixtures/fail11.json +1 -0
- data/tests/fixtures/fail12.json +1 -0
- data/tests/fixtures/fail13.json +1 -0
- data/tests/fixtures/fail14.json +1 -0
- data/tests/fixtures/fail18.json +1 -0
- data/tests/fixtures/fail19.json +1 -0
- data/tests/fixtures/fail2.json +1 -0
- data/tests/fixtures/fail20.json +1 -0
- data/tests/fixtures/fail21.json +1 -0
- data/tests/fixtures/fail22.json +1 -0
- data/tests/fixtures/fail23.json +1 -0
- data/tests/fixtures/fail24.json +1 -0
- data/tests/fixtures/fail25.json +1 -0
- data/tests/fixtures/fail27.json +2 -0
- data/tests/fixtures/fail28.json +2 -0
- data/tests/fixtures/fail3.json +1 -0
- data/tests/fixtures/fail4.json +1 -0
- data/tests/fixtures/fail5.json +1 -0
- data/tests/fixtures/fail6.json +1 -0
- data/tests/fixtures/fail7.json +1 -0
- data/tests/fixtures/fail8.json +1 -0
- data/tests/fixtures/fail9.json +1 -0
- data/tests/fixtures/pass1.json +56 -0
- data/tests/fixtures/pass15.json +1 -0
- data/tests/fixtures/pass16.json +1 -0
- data/tests/fixtures/pass17.json +1 -0
- data/tests/fixtures/pass2.json +1 -0
- data/tests/fixtures/pass26.json +1 -0
- data/tests/fixtures/pass3.json +6 -0
- data/tests/test_json.rb +312 -0
- data/tests/test_json_addition.rb +164 -0
- data/tests/test_json_fixtures.rb +34 -0
- data/tests/test_json_generate.rb +106 -0
- data/tests/test_json_rails.rb +146 -0
- data/tests/test_json_unicode.rb +62 -0
- data/tools/fuzz.rb +139 -0
- data/tools/server.rb +61 -0
- metadata +200 -0
| @@ -0,0 +1,62 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
            # -*- coding: utf-8 -*-
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            require 'test/unit'
         | 
| 5 | 
            +
            case ENV['JSON']
         | 
| 6 | 
            +
            when 'pure' then require 'json/pure'
         | 
| 7 | 
            +
            when 'ext'  then require 'json/ext'
         | 
| 8 | 
            +
            else             require 'json'
         | 
| 9 | 
            +
            end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            class TC_JSONUnicode < Test::Unit::TestCase
         | 
| 12 | 
            +
              include JSON
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              def test_unicode
         | 
| 15 | 
            +
                assert_equal '""', ''.to_json
         | 
| 16 | 
            +
                assert_equal '"\\b"', "\b".to_json
         | 
| 17 | 
            +
                assert_equal '"\u0001"', 0x1.chr.to_json
         | 
| 18 | 
            +
                assert_equal '"\u001f"', 0x1f.chr.to_json
         | 
| 19 | 
            +
                assert_equal '" "', ' '.to_json
         | 
| 20 | 
            +
                assert_equal "\"#{0x7f.chr}\"", 0x7f.chr.to_json
         | 
| 21 | 
            +
                utf8 = [ "© ≠ €! \01" ]
         | 
| 22 | 
            +
                json = '["\u00a9 \u2260 \u20ac! \u0001"]'
         | 
| 23 | 
            +
                assert_equal json, utf8.to_json
         | 
| 24 | 
            +
                assert_equal utf8, parse(json)
         | 
| 25 | 
            +
                utf8 = ["\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212"]
         | 
| 26 | 
            +
                json = "[\"\\u3042\\u3044\\u3046\\u3048\\u304a\"]"
         | 
| 27 | 
            +
                assert_equal json, utf8.to_json
         | 
| 28 | 
            +
                assert_equal utf8, parse(json)
         | 
| 29 | 
            +
                utf8 = ['საქართველო']
         | 
| 30 | 
            +
                json = "[\"\\u10e1\\u10d0\\u10e5\\u10d0\\u10e0\\u10d7\\u10d5\\u10d4\\u10da\\u10dd\"]"
         | 
| 31 | 
            +
                assert_equal json, utf8.to_json
         | 
| 32 | 
            +
                assert_equal utf8, parse(json)
         | 
| 33 | 
            +
                assert_equal '["\\u00c3"]', JSON.generate(["Ã"])
         | 
| 34 | 
            +
                assert_equal ["€"], JSON.parse('["\u20ac"]')
         | 
| 35 | 
            +
                utf8 = ["\xf0\xa0\x80\x81"]
         | 
| 36 | 
            +
                json = '["\ud840\udc01"]'
         | 
| 37 | 
            +
                assert_equal json, JSON.generate(utf8)
         | 
| 38 | 
            +
                assert_equal utf8, JSON.parse(json)
         | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
              def test_chars
         | 
| 42 | 
            +
                (0..0x7f).each do |i|
         | 
| 43 | 
            +
                  json = '["\u%04x"]' % i
         | 
| 44 | 
            +
                  if RUBY_VERSION >= "1.9."
         | 
| 45 | 
            +
                    i = i.chr
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
                  assert_equal i, JSON.parse(json).first[0]
         | 
| 48 | 
            +
                  if i == ?\b
         | 
| 49 | 
            +
                    generated = JSON.generate(["" << i])
         | 
| 50 | 
            +
                    assert '["\b"]' == generated || '["\10"]' == generated
         | 
| 51 | 
            +
                  elsif [?\n, ?\r, ?\t, ?\f].include?(i)
         | 
| 52 | 
            +
                    assert_equal '[' << ('' << i).dump << ']', JSON.generate(["" << i])
         | 
| 53 | 
            +
                  elsif i.chr < 0x20.chr
         | 
| 54 | 
            +
                    assert_equal json, JSON.generate(["" << i])
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
                assert_raise(JSON::GeneratorError) do
         | 
| 58 | 
            +
                  JSON.generate(["\x80"])
         | 
| 59 | 
            +
                end
         | 
| 60 | 
            +
                assert_equal "\302\200", JSON.parse('["\u0080"]').first
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
            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,200 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification 
         | 
| 2 | 
            +
            name: json
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            +
              version: 1.1.5
         | 
| 5 | 
            +
            platform: x86-linux
         | 
| 6 | 
            +
            authors: 
         | 
| 7 | 
            +
            - Florian Frank
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 | 
            +
            bindir: bin
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            date: 2009-05-10 00:00:00 +02:00
         | 
| 13 | 
            +
            default_executable: edit_json.rb
         | 
| 14 | 
            +
            dependencies: []
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            description: ""
         | 
| 17 | 
            +
            email: flori@ping.de
         | 
| 18 | 
            +
            executables: 
         | 
| 19 | 
            +
            - edit_json.rb
         | 
| 20 | 
            +
            - prettify_json.rb
         | 
| 21 | 
            +
            extensions: []
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            extra_rdoc_files: []
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            files: 
         | 
| 26 | 
            +
            - GPL
         | 
| 27 | 
            +
            - tests
         | 
| 28 | 
            +
            - tests/test_json_unicode.rb
         | 
| 29 | 
            +
            - tests/test_json.rb
         | 
| 30 | 
            +
            - tests/test_json_addition.rb
         | 
| 31 | 
            +
            - tests/fixtures
         | 
| 32 | 
            +
            - tests/fixtures/fail1.json
         | 
| 33 | 
            +
            - tests/fixtures/fail18.json
         | 
| 34 | 
            +
            - tests/fixtures/fail13.json
         | 
| 35 | 
            +
            - tests/fixtures/fail3.json
         | 
| 36 | 
            +
            - tests/fixtures/fail10.json
         | 
| 37 | 
            +
            - tests/fixtures/fail6.json
         | 
| 38 | 
            +
            - tests/fixtures/fail20.json
         | 
| 39 | 
            +
            - tests/fixtures/pass1.json
         | 
| 40 | 
            +
            - tests/fixtures/fail28.json
         | 
| 41 | 
            +
            - tests/fixtures/fail21.json
         | 
| 42 | 
            +
            - tests/fixtures/pass26.json
         | 
| 43 | 
            +
            - tests/fixtures/fail22.json
         | 
| 44 | 
            +
            - tests/fixtures/pass15.json
         | 
| 45 | 
            +
            - tests/fixtures/fail11.json
         | 
| 46 | 
            +
            - tests/fixtures/fail19.json
         | 
| 47 | 
            +
            - tests/fixtures/fail2.json
         | 
| 48 | 
            +
            - tests/fixtures/fail8.json
         | 
| 49 | 
            +
            - tests/fixtures/pass16.json
         | 
| 50 | 
            +
            - tests/fixtures/fail24.json
         | 
| 51 | 
            +
            - tests/fixtures/fail23.json
         | 
| 52 | 
            +
            - tests/fixtures/pass3.json
         | 
| 53 | 
            +
            - tests/fixtures/fail7.json
         | 
| 54 | 
            +
            - tests/fixtures/pass2.json
         | 
| 55 | 
            +
            - tests/fixtures/pass17.json
         | 
| 56 | 
            +
            - tests/fixtures/fail14.json
         | 
| 57 | 
            +
            - tests/fixtures/fail9.json
         | 
| 58 | 
            +
            - tests/fixtures/fail12.json
         | 
| 59 | 
            +
            - tests/fixtures/fail27.json
         | 
| 60 | 
            +
            - tests/fixtures/fail4.json
         | 
| 61 | 
            +
            - tests/fixtures/fail5.json
         | 
| 62 | 
            +
            - tests/fixtures/fail25.json
         | 
| 63 | 
            +
            - tests/test_json_generate.rb
         | 
| 64 | 
            +
            - tests/test_json_rails.rb
         | 
| 65 | 
            +
            - tests/test_json_fixtures.rb
         | 
| 66 | 
            +
            - install.rb
         | 
| 67 | 
            +
            - ext
         | 
| 68 | 
            +
            - ext/json
         | 
| 69 | 
            +
            - ext/json/ext
         | 
| 70 | 
            +
            - ext/json/ext/generator
         | 
| 71 | 
            +
            - ext/json/ext/generator/unicode.h
         | 
| 72 | 
            +
            - ext/json/ext/generator/extconf.rb
         | 
| 73 | 
            +
            - ext/json/ext/generator/generator.c
         | 
| 74 | 
            +
            - ext/json/ext/generator/unicode.c
         | 
| 75 | 
            +
            - ext/json/ext/parser
         | 
| 76 | 
            +
            - ext/json/ext/parser/unicode.h
         | 
| 77 | 
            +
            - ext/json/ext/parser/parser.rl
         | 
| 78 | 
            +
            - ext/json/ext/parser/extconf.rb
         | 
| 79 | 
            +
            - ext/json/ext/parser/parser.c
         | 
| 80 | 
            +
            - ext/json/ext/parser/unicode.c
         | 
| 81 | 
            +
            - VERSION
         | 
| 82 | 
            +
            - README
         | 
| 83 | 
            +
            - tools
         | 
| 84 | 
            +
            - tools/server.rb
         | 
| 85 | 
            +
            - tools/fuzz.rb
         | 
| 86 | 
            +
            - lib
         | 
| 87 | 
            +
            - lib/json.rb
         | 
| 88 | 
            +
            - lib/json
         | 
| 89 | 
            +
            - lib/json/add
         | 
| 90 | 
            +
            - lib/json/add/core.rb
         | 
| 91 | 
            +
            - lib/json/add/rails.rb
         | 
| 92 | 
            +
            - lib/json/ext.rb
         | 
| 93 | 
            +
            - lib/json/Key.xpm
         | 
| 94 | 
            +
            - lib/json/Array.xpm
         | 
| 95 | 
            +
            - lib/json/common.rb
         | 
| 96 | 
            +
            - lib/json/ext
         | 
| 97 | 
            +
            - lib/json/Hash.xpm
         | 
| 98 | 
            +
            - lib/json/String.xpm
         | 
| 99 | 
            +
            - lib/json/FalseClass.xpm
         | 
| 100 | 
            +
            - lib/json/Numeric.xpm
         | 
| 101 | 
            +
            - lib/json/version.rb
         | 
| 102 | 
            +
            - lib/json/pure
         | 
| 103 | 
            +
            - lib/json/pure/generator.rb
         | 
| 104 | 
            +
            - lib/json/pure/parser.rb
         | 
| 105 | 
            +
            - lib/json/pure.rb
         | 
| 106 | 
            +
            - lib/json/NilClass.xpm
         | 
| 107 | 
            +
            - lib/json/json.xpm
         | 
| 108 | 
            +
            - lib/json/editor.rb
         | 
| 109 | 
            +
            - lib/json/TrueClass.xpm
         | 
| 110 | 
            +
            - TODO
         | 
| 111 | 
            +
            - data
         | 
| 112 | 
            +
            - data/prototype.js
         | 
| 113 | 
            +
            - data/index.html
         | 
| 114 | 
            +
            - data/example.json
         | 
| 115 | 
            +
            - bin
         | 
| 116 | 
            +
            - bin/prettify_json.rb
         | 
| 117 | 
            +
            - bin/edit_json.rb
         | 
| 118 | 
            +
            - diagrams
         | 
| 119 | 
            +
            - doc-templates
         | 
| 120 | 
            +
            - doc-templates/main.txt
         | 
| 121 | 
            +
            - RUBY
         | 
| 122 | 
            +
            - benchmarks
         | 
| 123 | 
            +
            - benchmarks/data-p4-3GHz-ruby18
         | 
| 124 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat
         | 
| 125 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat
         | 
| 126 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat
         | 
| 127 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat
         | 
| 128 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat
         | 
| 129 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat
         | 
| 130 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat
         | 
| 131 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log
         | 
| 132 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat
         | 
| 133 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat
         | 
| 134 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat
         | 
| 135 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat
         | 
| 136 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat
         | 
| 137 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat
         | 
| 138 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log
         | 
| 139 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log
         | 
| 140 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat
         | 
| 141 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log
         | 
| 142 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log
         | 
| 143 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log
         | 
| 144 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log
         | 
| 145 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat
         | 
| 146 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log
         | 
| 147 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat
         | 
| 148 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat
         | 
| 149 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat
         | 
| 150 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat
         | 
| 151 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log
         | 
| 152 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat
         | 
| 153 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat
         | 
| 154 | 
            +
            - benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat
         | 
| 155 | 
            +
            - benchmarks/data
         | 
| 156 | 
            +
            - benchmarks/parser_benchmark.rb
         | 
| 157 | 
            +
            - benchmarks/generator_benchmark.rb
         | 
| 158 | 
            +
            - Rakefile
         | 
| 159 | 
            +
            - CHANGES
         | 
| 160 | 
            +
            - lib/json/ext/parser.so
         | 
| 161 | 
            +
            - lib/json/ext/generator.so
         | 
| 162 | 
            +
            has_rdoc: true
         | 
| 163 | 
            +
            homepage: http://json.rubyforge.org
         | 
| 164 | 
            +
            post_install_message: 
         | 
| 165 | 
            +
            rdoc_options: 
         | 
| 166 | 
            +
            - --title
         | 
| 167 | 
            +
            - JSON -- A JSON implemention
         | 
| 168 | 
            +
            - --main
         | 
| 169 | 
            +
            - JSON
         | 
| 170 | 
            +
            - --line-numbers
         | 
| 171 | 
            +
            require_paths: 
         | 
| 172 | 
            +
            - ext/json/ext
         | 
| 173 | 
            +
            - ext
         | 
| 174 | 
            +
            - lib
         | 
| 175 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         | 
| 176 | 
            +
              requirements: 
         | 
| 177 | 
            +
              - - ~>
         | 
| 178 | 
            +
                - !ruby/object:Gem::Version 
         | 
| 179 | 
            +
                  version: 1.8.6
         | 
| 180 | 
            +
              version: 
         | 
| 181 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 182 | 
            +
              requirements: 
         | 
| 183 | 
            +
              - - ">="
         | 
| 184 | 
            +
                - !ruby/object:Gem::Version 
         | 
| 185 | 
            +
                  version: "0"
         | 
| 186 | 
            +
              version: 
         | 
| 187 | 
            +
            requirements: []
         | 
| 188 | 
            +
             | 
| 189 | 
            +
            rubyforge_project: json
         | 
| 190 | 
            +
            rubygems_version: 1.3.1
         | 
| 191 | 
            +
            signing_key: 
         | 
| 192 | 
            +
            specification_version: 2
         | 
| 193 | 
            +
            summary: A JSON implementation as a Ruby extension
         | 
| 194 | 
            +
            test_files: 
         | 
| 195 | 
            +
            - tests/test_json_unicode.rb
         | 
| 196 | 
            +
            - tests/test_json.rb
         | 
| 197 | 
            +
            - tests/test_json_addition.rb
         | 
| 198 | 
            +
            - tests/test_json_generate.rb
         | 
| 199 | 
            +
            - tests/test_json_rails.rb
         | 
| 200 | 
            +
            - tests/test_json_fixtures.rb
         |