json-maglev- 1.5.4 → 1.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/CHANGES +11 -1
  2. data/Rakefile +14 -12
  3. data/VERSION +1 -1
  4. data/ext/json/ext/generator/extconf.rb +0 -7
  5. data/ext/json/ext/generator/generator.c +55 -10
  6. data/ext/json/ext/generator/generator.h +7 -5
  7. data/ext/json/ext/parser/extconf.rb +0 -3
  8. data/ext/json/ext/parser/parser.c +418 -207
  9. data/ext/json/ext/parser/parser.h +11 -10
  10. data/ext/json/ext/parser/parser.rl +178 -104
  11. data/install.rb +1 -8
  12. data/java/src/json/ext/Generator.java +3 -3
  13. data/java/src/json/ext/GeneratorMethods.java +2 -2
  14. data/java/src/json/ext/GeneratorService.java +1 -1
  15. data/java/src/json/ext/GeneratorState.java +41 -13
  16. data/java/src/json/ext/OptionsReader.java +1 -1
  17. data/java/src/json/ext/Parser.java +382 -107
  18. data/java/src/json/ext/Parser.rl +97 -28
  19. data/java/src/json/ext/ParserService.java +1 -1
  20. data/java/src/json/ext/Utils.java +1 -1
  21. data/json.gemspec +5 -6
  22. data/json_pure.gemspec +5 -9
  23. data/lib/json.rb +4 -4
  24. data/lib/json/add/complex.rb +22 -0
  25. data/lib/json/add/core.rb +9 -241
  26. data/lib/json/add/date.rb +34 -0
  27. data/lib/json/add/date_time.rb +50 -0
  28. data/lib/json/add/exception.rb +31 -0
  29. data/lib/json/add/range.rb +29 -0
  30. data/lib/json/add/rational.rb +22 -0
  31. data/lib/json/add/regexp.rb +30 -0
  32. data/lib/json/add/struct.rb +30 -0
  33. data/lib/json/add/symbol.rb +25 -0
  34. data/lib/json/add/time.rb +35 -0
  35. data/lib/json/common.rb +47 -35
  36. data/lib/json/ext.rb +2 -15
  37. data/lib/json/pure/generator.rb +17 -2
  38. data/lib/json/pure/parser.rb +89 -55
  39. data/lib/json/version.rb +1 -1
  40. data/tests/test_json.rb +36 -0
  41. data/tests/test_json_addition.rb +8 -1
  42. data/tests/test_json_generate.rb +34 -1
  43. data/tools/server.rb +1 -0
  44. metadata +20 -24
  45. data/bin/edit_json.rb +0 -9
  46. data/bin/prettify_json.rb +0 -48
  47. data/lib/json/Array.xpm +0 -21
  48. data/lib/json/FalseClass.xpm +0 -21
  49. data/lib/json/Hash.xpm +0 -21
  50. data/lib/json/Key.xpm +0 -73
  51. data/lib/json/NilClass.xpm +0 -21
  52. data/lib/json/Numeric.xpm +0 -28
  53. data/lib/json/String.xpm +0 -96
  54. data/lib/json/TrueClass.xpm +0 -21
  55. data/lib/json/add/rails.rb +0 -8
  56. data/lib/json/editor.rb +0 -1369
  57. data/lib/json/json.xpm +0 -1499
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
3
- *
3
+ *
4
4
  * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files
5
5
  * for details.
6
6
  */
@@ -29,16 +29,16 @@ import org.jruby.util.ByteList;
29
29
 
30
30
  /**
31
31
  * The <code>JSON::Ext::Parser</code> class.
32
- *
32
+ *
33
33
  * <p>This is the JSON parser implemented as a Java class. To use it as the
34
34
  * standard parser, set
35
35
  * <pre>JSON.parser = JSON::Ext::Parser</pre>
36
36
  * This is performed for you when you <code>include "json/ext"</code>.
37
- *
37
+ *
38
38
  * <p>This class does not perform the actual parsing, just acts as an interface
39
39
  * to Ruby code. When the {@link #parse()} method is invoked, a
40
40
  * Parser.ParserSession object is instantiated, which handles the process.
41
- *
41
+ *
42
42
  * @author mernen
43
43
  */
44
44
  public class Parser extends RubyObject {
@@ -49,6 +49,7 @@ public class Parser extends RubyObject {
49
49
  private int maxNesting;
50
50
  private boolean allowNaN;
51
51
  private boolean symbolizeNames;
52
+ private boolean quirksMode;
52
53
  private RubyClass objectClass;
53
54
  private RubyClass arrayClass;
54
55
  private RubyHash match_string;
@@ -69,7 +70,7 @@ public class Parser extends RubyObject {
69
70
 
70
71
  /**
71
72
  * Multiple-value return for internal parser methods.
72
- *
73
+ *
73
74
  * <p>All the <code>parse<var>Stuff</var></code> methods return instances of
74
75
  * <code>ParserResult</code> when successful, or <code>null</code> when
75
76
  * there's a problem with the input data.
@@ -98,18 +99,18 @@ public class Parser extends RubyObject {
98
99
 
99
100
  /**
100
101
  * <code>Parser.new(source, opts = {})</code>
101
- *
102
+ *
102
103
  * <p>Creates a new <code>JSON::Ext::Parser</code> instance for the string
103
104
  * <code>source</code>.
104
105
  * It will be configured by the <code>opts</code> Hash.
105
106
  * <code>opts</code> can have the following keys:
106
- *
107
+ *
107
108
  * <dl>
108
109
  * <dt><code>:max_nesting</code>
109
110
  * <dd>The maximum depth of nesting allowed in the parsed data
110
111
  * structures. Disable depth checking with <code>:max_nesting => false|nil|0</code>,
111
112
  * it defaults to 19.
112
- *
113
+ *
113
114
  * <dt><code>:allow_nan</code>
114
115
  * <dd>If set to <code>true</code>, allow <code>NaN</code>,
115
116
  * <code>Infinity</code> and <code>-Infinity</code> in defiance of RFC 4627
@@ -118,17 +119,25 @@ public class Parser extends RubyObject {
118
119
  * <dt><code>:symbolize_names</code>
119
120
  * <dd>If set to <code>true</code>, returns symbols for the names (keys) in
120
121
  * a JSON object. Otherwise strings are returned, which is also the default.
122
+ *
123
+ * <dt><code>:quirks_mode?</code>
124
+ * <dd>If set to <code>true</code>, if the parse is in quirks_mode, false
125
+ * otherwise.
121
126
  *
122
127
  * <dt><code>:create_additions</code>
123
128
  * <dd>If set to <code>false</code>, the Parser doesn't create additions
124
129
  * even if a matchin class and <code>create_id</code> was found. This option
125
130
  * defaults to <code>true</code>.
126
- *
131
+ *
127
132
  * <dt><code>:object_class</code>
128
133
  * <dd>Defaults to Hash.
129
- *
134
+ *
130
135
  * <dt><code>:array_class</code>
131
136
  * <dd>Defaults to Array.
137
+ *
138
+ * <dt><code>:quirks_mode</code>
139
+ * <dd>Enables quirks_mode for parser, that is for example parsing single
140
+ * JSON values instead of documents is possible.
132
141
  * </dl>
133
142
  */
134
143
  @JRubyMethod(name = "new", required = 1, optional = 1, meta = true)
@@ -146,19 +155,21 @@ public class Parser extends RubyObject {
146
155
  if (this.vSource != null) {
147
156
  throw runtime.newTypeError("already initialized instance");
148
157
  }
149
- RubyString source = convertEncoding(context, args[0].convertToString());
150
158
 
151
159
  OptionsReader opts = new OptionsReader(context, args.length > 1 ? args[1] : null);
152
160
  this.maxNesting = opts.getInt("max_nesting", DEFAULT_MAX_NESTING);
153
161
  this.allowNaN = opts.getBool("allow_nan", false);
154
162
  this.symbolizeNames = opts.getBool("symbolize_names", false);
163
+ this.quirksMode = opts.getBool("quirks_mode", false);
155
164
  this.createId = opts.getString("create_id", getCreateId(context));
156
165
  this.createAdditions = opts.getBool("create_additions", true);
157
166
  this.objectClass = opts.getClass("object_class", runtime.getHash());
158
167
  this.arrayClass = opts.getClass("array_class", runtime.getArray());
159
168
  this.match_string = opts.getHash("match_string");
160
169
 
161
- this.vSource = source;
170
+ this.vSource = args[0].convertToString();
171
+ if (!quirksMode) this.vSource = convertEncoding(context, vSource);
172
+
162
173
  return this;
163
174
  }
164
175
 
@@ -227,7 +238,7 @@ public class Parser extends RubyObject {
227
238
 
228
239
  /**
229
240
  * <code>Parser#parse()</code>
230
- *
241
+ *
231
242
  * <p>Parses the current JSON text <code>source</code> and returns the
232
243
  * complete data structure as a result.
233
244
  */
@@ -238,7 +249,7 @@ public class Parser extends RubyObject {
238
249
 
239
250
  /**
240
251
  * <code>Parser#source()</code>
241
- *
252
+ *
242
253
  * <p>Returns a copy of the current <code>source</code> string, that was
243
254
  * used to construct this Parser.
244
255
  */
@@ -247,6 +258,17 @@ public class Parser extends RubyObject {
247
258
  return checkAndGetSource().dup();
248
259
  }
249
260
 
261
+ /**
262
+ * <code>Parser#quirks_mode?()</code>
263
+ *
264
+ * <p>If set to <code>true</code>, if the parse is in quirks_mode, false
265
+ * otherwise.
266
+ */
267
+ @JRubyMethod(name = "quirks_mode?")
268
+ public IRubyObject quirks_mode_p(ThreadContext context) {
269
+ return context.getRuntime().newBoolean(quirksMode);
270
+ }
271
+
250
272
  public RubyString checkAndGetSource() {
251
273
  if (vSource != null) {
252
274
  return vSource;
@@ -266,7 +288,7 @@ public class Parser extends RubyObject {
266
288
 
267
289
  /**
268
290
  * A string parsing session.
269
- *
291
+ *
270
292
  * <p>Once a ParserSession is instantiated, the source string should not
271
293
  * change until the parsing is complete. The ParserSession object assumes
272
294
  * the source {@link RubyString} is still associated to its original
@@ -364,7 +386,7 @@ public class Parser extends RubyObject {
364
386
  }
365
387
  }
366
388
  action parse_number {
367
- if (pe > fpc + 9 &&
389
+ if (pe > fpc + 9 - (parser.quirksMode ? 1 : 0) &&
368
390
  absSubSequence(fpc, fpc + 9).toString().equals(JSON_MINUS_INFINITY)) {
369
391
 
370
392
  if (parser.allowNaN) {
@@ -464,7 +486,7 @@ public class Parser extends RubyObject {
464
486
  fbreak;
465
487
  }
466
488
 
467
- main := '-'? ( '0' | [1-9][0-9]* ) ( ^[0-9] @exit );
489
+ main := '-'? ( '0' | [1-9][0-9]* ) ( ^[0-9]? @exit );
468
490
  }%%
469
491
 
470
492
  ParserResult parseInteger(int p, int pe) {
@@ -500,7 +522,7 @@ public class Parser extends RubyObject {
500
522
  main := '-'?
501
523
  ( ( ( '0' | [1-9][0-9]* ) '.' [0-9]+ ( [Ee] [+\-]?[0-9]+ )? )
502
524
  | ( ( '0' | [1-9][0-9]* ) ( [Ee] [+\-]? [0-9]+ ) ) )
503
- ( ^[0-9Ee.\-] @exit );
525
+ ( ^[0-9Ee.\-]? @exit );
504
526
  }%%
505
527
 
506
528
  ParserResult parseFloat(int p, int pe) {
@@ -578,7 +600,7 @@ public class Parser extends RubyObject {
578
600
  }
579
601
  });
580
602
  } catch (JumpException e) { }
581
- if (memoArray[1] != null) {
603
+ if (memoArray[1] != null) {
582
604
  RubyClass klass = (RubyClass) memoArray[1];
583
605
  if (klass.respondsTo("json_creatable?") &&
584
606
  klass.callMethod(context, "json_creatable?").isTrue()) {
@@ -701,15 +723,14 @@ public class Parser extends RubyObject {
701
723
  fhold;
702
724
  fbreak;
703
725
  }
726
+
727
+ pair = ignore* begin_name >parse_name ignore* name_separator
728
+ ignore* begin_value >parse_value;
729
+ next_pair = ignore* value_separator pair;
704
730
 
705
- a_pair = ignore*
706
- begin_name >parse_name
707
- ignore* name_separator ignore*
708
- begin_value >parse_value;
709
-
710
- main := begin_object
711
- (a_pair (ignore* value_separator a_pair)*)?
712
- ignore* end_object @exit;
731
+ main := (
732
+ begin_object (pair (next_pair)*)? ignore* end_object
733
+ ) @exit;
713
734
  }%%
714
735
 
715
736
  ParserResult parseObject(int p, int pe) {
@@ -789,7 +810,7 @@ public class Parser extends RubyObject {
789
810
  ignore*;
790
811
  }%%
791
812
 
792
- public IRubyObject parse() {
813
+ public IRubyObject parseStrict() {
793
814
  int cs = EVIL;
794
815
  int p, pe;
795
816
  IRubyObject result = null;
@@ -806,6 +827,54 @@ public class Parser extends RubyObject {
806
827
  }
807
828
  }
808
829
 
830
+ %%{
831
+ machine JSON_quirks_mode;
832
+ include JSON_common;
833
+
834
+ write data;
835
+
836
+ action parse_value {
837
+ ParserResult res = parseValue(fpc, pe);
838
+ if (res == null) {
839
+ fhold;
840
+ fbreak;
841
+ } else {
842
+ result = res.result;
843
+ fexec res.p;
844
+ }
845
+ }
846
+
847
+ main := ignore*
848
+ ( begin_value >parse_value)
849
+ ignore*;
850
+ }%%
851
+
852
+ public IRubyObject parseQuirksMode() {
853
+ int cs = EVIL;
854
+ int p, pe;
855
+ IRubyObject result = null;
856
+
857
+ %% write init;
858
+ p = byteList.begin();
859
+ pe = p + byteList.length();
860
+ %% write exec;
861
+
862
+ if (cs >= JSON_quirks_mode_first_final && p == pe) {
863
+ return result;
864
+ } else {
865
+ throw unexpectedToken(p, pe);
866
+ }
867
+ }
868
+
869
+ public IRubyObject parse() {
870
+ if (parser.quirksMode) {
871
+ return parseQuirksMode();
872
+ } else {
873
+ return parseStrict();
874
+ }
875
+
876
+ }
877
+
809
878
  /**
810
879
  * Returns a subsequence of the source ByteList, based on source
811
880
  * array byte offsets (i.e., the ByteList's own begin offset is not
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
3
- *
3
+ *
4
4
  * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files
5
5
  * for details.
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
3
- *
3
+ *
4
4
  * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files
5
5
  * for details.
6
6
  */
data/json.gemspec CHANGED
@@ -2,27 +2,26 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{json-maglev-}
5
- s.version = "1.5.4"
5
+ s.version = "1.6.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = [%q{Florian Frank}]
9
- s.date = %q{2011-07-08}
9
+ s.date = %q{2011-09-18}
10
10
  s.description = %q{This is a JSON implementation as a Ruby extension in C.}
11
11
  s.email = %q{flori@ping.de}
12
- s.executables = [%q{edit_json.rb}, %q{prettify_json.rb}]
13
12
  s.extensions = [%q{ext/json/ext/parser/extconf.rb}, %q{ext/json/ext/generator/extconf.rb}]
14
13
  s.extra_rdoc_files = [%q{README.rdoc}]
15
- s.files = [%q{tests}, %q{tests/test_json_string_matching.rb}, %q{tests/test_json_fixtures.rb}, %q{tests/setup_variant.rb}, %q{tests/fixtures}, %q{tests/fixtures/fail6.json}, %q{tests/fixtures/fail9.json}, %q{tests/fixtures/fail10.json}, %q{tests/fixtures/fail24.json}, %q{tests/fixtures/fail28.json}, %q{tests/fixtures/fail13.json}, %q{tests/fixtures/fail4.json}, %q{tests/fixtures/pass3.json}, %q{tests/fixtures/fail11.json}, %q{tests/fixtures/fail14.json}, %q{tests/fixtures/fail3.json}, %q{tests/fixtures/fail12.json}, %q{tests/fixtures/pass16.json}, %q{tests/fixtures/pass15.json}, %q{tests/fixtures/fail20.json}, %q{tests/fixtures/fail8.json}, %q{tests/fixtures/pass2.json}, %q{tests/fixtures/fail5.json}, %q{tests/fixtures/fail1.json}, %q{tests/fixtures/fail25.json}, %q{tests/fixtures/pass17.json}, %q{tests/fixtures/fail7.json}, %q{tests/fixtures/pass26.json}, %q{tests/fixtures/fail21.json}, %q{tests/fixtures/pass1.json}, %q{tests/fixtures/fail23.json}, %q{tests/fixtures/fail18.json}, %q{tests/fixtures/fail2.json}, %q{tests/fixtures/fail22.json}, %q{tests/fixtures/fail27.json}, %q{tests/fixtures/fail19.json}, %q{tests/test_json_unicode.rb}, %q{tests/test_json_addition.rb}, %q{tests/test_json_generate.rb}, %q{tests/test_json_encoding.rb}, %q{tests/test_json.rb}, %q{COPYING}, %q{TODO}, %q{Rakefile}, %q{benchmarks}, %q{benchmarks/data-p4-3GHz-ruby18}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat}, %q{benchmarks/parser2_benchmark.rb}, %q{benchmarks/parser_benchmark.rb}, %q{benchmarks/generator2_benchmark.rb}, %q{benchmarks/generator_benchmark.rb}, %q{benchmarks/ohai.ruby}, %q{benchmarks/data}, %q{benchmarks/ohai.json}, %q{lib}, %q{lib/json}, %q{lib/json/json.xpm}, %q{lib/json/TrueClass.xpm}, %q{lib/json/version.rb}, %q{lib/json/Array.xpm}, %q{lib/json/add}, %q{lib/json/add/core.rb}, %q{lib/json/add/rails.rb}, %q{lib/json/common.rb}, %q{lib/json/pure}, %q{lib/json/pure/generator.rb}, %q{lib/json/pure/parser.rb}, %q{lib/json/ext.rb}, %q{lib/json/pure.rb}, %q{lib/json/Key.xpm}, %q{lib/json/FalseClass.xpm}, %q{lib/json/editor.rb}, %q{lib/json/Numeric.xpm}, %q{lib/json/ext}, %q{lib/json/NilClass.xpm}, %q{lib/json/String.xpm}, %q{lib/json/Hash.xpm}, %q{lib/json.rb}, %q{Gemfile}, %q{README.rdoc}, %q{json_pure.gemspec}, %q{GPL}, %q{CHANGES}, %q{bin}, %q{bin/prettify_json.rb}, %q{bin/edit_json.rb}, %q{COPYING-json-jruby}, %q{ext}, %q{ext/json}, %q{ext/json/ext}, %q{ext/json/ext/parser}, %q{ext/json/ext/parser/parser.h}, %q{ext/json/ext/parser/extconf.rb}, %q{ext/json/ext/parser/parser.rl}, %q{ext/json/ext/parser/parser.c}, %q{ext/json/ext/generator}, %q{ext/json/ext/generator/generator.c}, %q{ext/json/ext/generator/extconf.rb}, %q{ext/json/ext/generator/generator.h}, %q{VERSION}, %q{data}, %q{data/prototype.js}, %q{data/index.html}, %q{data/example.json}, %q{json.gemspec}, %q{java}, %q{java/src}, %q{java/src/json}, %q{java/src/json/ext}, %q{java/src/json/ext/Parser.java}, %q{java/src/json/ext/RuntimeInfo.java}, %q{java/src/json/ext/GeneratorState.java}, %q{java/src/json/ext/OptionsReader.java}, %q{java/src/json/ext/ParserService.java}, %q{java/src/json/ext/Parser.rl}, %q{java/src/json/ext/StringEncoder.java}, %q{java/src/json/ext/GeneratorService.java}, %q{java/src/json/ext/Utils.java}, %q{java/src/json/ext/StringDecoder.java}, %q{java/src/json/ext/Generator.java}, %q{java/src/json/ext/ByteListTranscoder.java}, %q{java/src/json/ext/GeneratorMethods.java}, %q{java/lib}, %q{java/lib/bytelist-1.0.6.jar}, %q{java/lib/jcodings.jar}, %q{diagrams}, %q{README-json-jruby.markdown}, %q{install.rb}, %q{json-java.gemspec}, %q{tools}, %q{tools/fuzz.rb}, %q{tools/server.rb}, %q{./tests/test_json_string_matching.rb}, %q{./tests/test_json_fixtures.rb}, %q{./tests/test_json_unicode.rb}, %q{./tests/test_json_addition.rb}, %q{./tests/test_json_generate.rb}, %q{./tests/test_json_encoding.rb}, %q{./tests/test_json.rb}]
14
+ s.files = [%q{tests}, %q{tests/test_json_string_matching.rb}, %q{tests/test_json_fixtures.rb}, %q{tests/setup_variant.rb}, %q{tests/fixtures}, %q{tests/fixtures/fail6.json}, %q{tests/fixtures/fail9.json}, %q{tests/fixtures/fail10.json}, %q{tests/fixtures/fail24.json}, %q{tests/fixtures/fail28.json}, %q{tests/fixtures/fail13.json}, %q{tests/fixtures/fail4.json}, %q{tests/fixtures/pass3.json}, %q{tests/fixtures/fail11.json}, %q{tests/fixtures/fail14.json}, %q{tests/fixtures/fail3.json}, %q{tests/fixtures/fail12.json}, %q{tests/fixtures/pass16.json}, %q{tests/fixtures/pass15.json}, %q{tests/fixtures/fail20.json}, %q{tests/fixtures/fail8.json}, %q{tests/fixtures/pass2.json}, %q{tests/fixtures/fail5.json}, %q{tests/fixtures/fail1.json}, %q{tests/fixtures/fail25.json}, %q{tests/fixtures/pass17.json}, %q{tests/fixtures/fail7.json}, %q{tests/fixtures/pass26.json}, %q{tests/fixtures/fail21.json}, %q{tests/fixtures/pass1.json}, %q{tests/fixtures/fail23.json}, %q{tests/fixtures/fail18.json}, %q{tests/fixtures/fail2.json}, %q{tests/fixtures/fail22.json}, %q{tests/fixtures/fail27.json}, %q{tests/fixtures/fail19.json}, %q{tests/test_json_unicode.rb}, %q{tests/test_json_addition.rb}, %q{tests/test_json_generate.rb}, %q{tests/test_json_encoding.rb}, %q{tests/test_json.rb}, %q{COPYING}, %q{TODO}, %q{Rakefile}, %q{benchmarks}, %q{benchmarks/data-p4-3GHz-ruby18}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat}, %q{benchmarks/parser2_benchmark.rb}, %q{benchmarks/parser_benchmark.rb}, %q{benchmarks/generator2_benchmark.rb}, %q{benchmarks/generator_benchmark.rb}, %q{benchmarks/ohai.ruby}, %q{benchmarks/data}, %q{benchmarks/ohai.json}, %q{lib}, %q{lib/json}, %q{lib/json/version.rb}, %q{lib/json/add}, %q{lib/json/add/symbol.rb}, %q{lib/json/add/struct.rb}, %q{lib/json/add/complex.rb}, %q{lib/json/add/rational.rb}, %q{lib/json/add/exception.rb}, %q{lib/json/add/time.rb}, %q{lib/json/add/date_time.rb}, %q{lib/json/add/core.rb}, %q{lib/json/add/range.rb}, %q{lib/json/add/date.rb}, %q{lib/json/add/regexp.rb}, %q{lib/json/common.rb}, %q{lib/json/pure}, %q{lib/json/pure/generator.rb}, %q{lib/json/pure/parser.rb}, %q{lib/json/ext.rb}, %q{lib/json/pure.rb}, %q{lib/json/ext}, %q{lib/json.rb}, %q{Gemfile}, %q{README.rdoc}, %q{json_pure.gemspec}, %q{GPL}, %q{CHANGES}, %q{COPYING-json-jruby}, %q{ext}, %q{ext/json}, %q{ext/json/ext}, %q{ext/json/ext/parser}, %q{ext/json/ext/parser/parser.h}, %q{ext/json/ext/parser/extconf.rb}, %q{ext/json/ext/parser/parser.rl}, %q{ext/json/ext/parser/parser.c}, %q{ext/json/ext/generator}, %q{ext/json/ext/generator/generator.c}, %q{ext/json/ext/generator/extconf.rb}, %q{ext/json/ext/generator/generator.h}, %q{VERSION}, %q{data}, %q{data/prototype.js}, %q{data/index.html}, %q{data/example.json}, %q{json.gemspec}, %q{java}, %q{java/src}, %q{java/src/json}, %q{java/src/json/ext}, %q{java/src/json/ext/Parser.java}, %q{java/src/json/ext/RuntimeInfo.java}, %q{java/src/json/ext/GeneratorState.java}, %q{java/src/json/ext/OptionsReader.java}, %q{java/src/json/ext/ParserService.java}, %q{java/src/json/ext/Parser.rl}, %q{java/src/json/ext/StringEncoder.java}, %q{java/src/json/ext/GeneratorService.java}, %q{java/src/json/ext/Utils.java}, %q{java/src/json/ext/StringDecoder.java}, %q{java/src/json/ext/Generator.java}, %q{java/src/json/ext/ByteListTranscoder.java}, %q{java/src/json/ext/GeneratorMethods.java}, %q{java/lib}, %q{java/lib/bytelist-1.0.6.jar}, %q{java/lib/jcodings.jar}, %q{diagrams}, %q{README-json-jruby.markdown}, %q{install.rb}, %q{json-java.gemspec}, %q{tools}, %q{tools/fuzz.rb}, %q{tools/server.rb}, %q{./tests/test_json_string_matching.rb}, %q{./tests/test_json_fixtures.rb}, %q{./tests/test_json_unicode.rb}, %q{./tests/test_json_addition.rb}, %q{./tests/test_json_generate.rb}, %q{./tests/test_json_encoding.rb}, %q{./tests/test_json.rb}]
16
15
  s.homepage = %q{http://flori.github.com/json}
17
16
  s.rdoc_options = [%q{--title}, %q{JSON implemention for Ruby}, %q{--main}, %q{README.rdoc}]
18
17
  s.require_paths = [%q{ext/json/ext}, %q{ext}, %q{lib}]
19
18
  s.rubyforge_project = %q{json}
20
- s.rubygems_version = %q{1.8.5}
19
+ s.rubygems_version = %q{1.8.6}
21
20
  s.summary = %q{JSON Implementation for Ruby}
22
21
  s.test_files = [%q{./tests/test_json_string_matching.rb}, %q{./tests/test_json_fixtures.rb}, %q{./tests/test_json_unicode.rb}, %q{./tests/test_json_addition.rb}, %q{./tests/test_json_generate.rb}, %q{./tests/test_json_encoding.rb}, %q{./tests/test_json.rb}]
23
22
 
24
23
  if s.respond_to? :specification_version then
25
- s.specification_version = 4
24
+ s.specification_version = 3
26
25
 
27
26
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
28
27
  s.add_development_dependency(%q<permutation>, [">= 0"])
data/json_pure.gemspec CHANGED
@@ -2,45 +2,41 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{json_pure}
5
- s.version = "1.5.4"
5
+ s.version = "1.6.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = [%q{Florian Frank}]
9
- s.date = %q{2011-07-08}
9
+ s.date = %q{2011-09-18}
10
10
  s.description = %q{This is a JSON implementation in pure Ruby.}
11
11
  s.email = %q{flori@ping.de}
12
- s.executables = [%q{edit_json.rb}, %q{prettify_json.rb}]
13
12
  s.extra_rdoc_files = [%q{README.rdoc}]
14
- s.files = [%q{tests}, %q{tests/test_json_string_matching.rb}, %q{tests/test_json_fixtures.rb}, %q{tests/setup_variant.rb}, %q{tests/fixtures}, %q{tests/fixtures/fail6.json}, %q{tests/fixtures/fail9.json}, %q{tests/fixtures/fail10.json}, %q{tests/fixtures/fail24.json}, %q{tests/fixtures/fail28.json}, %q{tests/fixtures/fail13.json}, %q{tests/fixtures/fail4.json}, %q{tests/fixtures/pass3.json}, %q{tests/fixtures/fail11.json}, %q{tests/fixtures/fail14.json}, %q{tests/fixtures/fail3.json}, %q{tests/fixtures/fail12.json}, %q{tests/fixtures/pass16.json}, %q{tests/fixtures/pass15.json}, %q{tests/fixtures/fail20.json}, %q{tests/fixtures/fail8.json}, %q{tests/fixtures/pass2.json}, %q{tests/fixtures/fail5.json}, %q{tests/fixtures/fail1.json}, %q{tests/fixtures/fail25.json}, %q{tests/fixtures/pass17.json}, %q{tests/fixtures/fail7.json}, %q{tests/fixtures/pass26.json}, %q{tests/fixtures/fail21.json}, %q{tests/fixtures/pass1.json}, %q{tests/fixtures/fail23.json}, %q{tests/fixtures/fail18.json}, %q{tests/fixtures/fail2.json}, %q{tests/fixtures/fail22.json}, %q{tests/fixtures/fail27.json}, %q{tests/fixtures/fail19.json}, %q{tests/test_json_unicode.rb}, %q{tests/test_json_addition.rb}, %q{tests/test_json_generate.rb}, %q{tests/test_json_encoding.rb}, %q{tests/test_json.rb}, %q{COPYING}, %q{TODO}, %q{Rakefile}, %q{benchmarks}, %q{benchmarks/data-p4-3GHz-ruby18}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat}, %q{benchmarks/parser2_benchmark.rb}, %q{benchmarks/parser_benchmark.rb}, %q{benchmarks/generator2_benchmark.rb}, %q{benchmarks/generator_benchmark.rb}, %q{benchmarks/ohai.ruby}, %q{benchmarks/data}, %q{benchmarks/ohai.json}, %q{lib}, %q{lib/json}, %q{lib/json/json.xpm}, %q{lib/json/TrueClass.xpm}, %q{lib/json/version.rb}, %q{lib/json/Array.xpm}, %q{lib/json/add}, %q{lib/json/add/core.rb}, %q{lib/json/add/rails.rb}, %q{lib/json/common.rb}, %q{lib/json/pure}, %q{lib/json/pure/generator.rb}, %q{lib/json/pure/parser.rb}, %q{lib/json/ext.rb}, %q{lib/json/pure.rb}, %q{lib/json/Key.xpm}, %q{lib/json/FalseClass.xpm}, %q{lib/json/editor.rb}, %q{lib/json/Numeric.xpm}, %q{lib/json/ext}, %q{lib/json/NilClass.xpm}, %q{lib/json/String.xpm}, %q{lib/json/Hash.xpm}, %q{lib/json.rb}, %q{Gemfile}, %q{README.rdoc}, %q{json_pure.gemspec}, %q{GPL}, %q{CHANGES}, %q{bin}, %q{bin/prettify_json.rb}, %q{bin/edit_json.rb}, %q{COPYING-json-jruby}, %q{ext}, %q{ext/json}, %q{ext/json/ext}, %q{ext/json/ext/parser}, %q{ext/json/ext/parser/parser.h}, %q{ext/json/ext/parser/extconf.rb}, %q{ext/json/ext/parser/parser.rl}, %q{ext/json/ext/parser/mkmf.log}, %q{ext/json/ext/parser/parser.c}, %q{ext/json/ext/generator}, %q{ext/json/ext/generator/generator.c}, %q{ext/json/ext/generator/extconf.rb}, %q{ext/json/ext/generator/generator.h}, %q{VERSION}, %q{data}, %q{data/prototype.js}, %q{data/index.html}, %q{data/example.json}, %q{json.gemspec}, %q{java}, %q{java/src}, %q{java/src/json}, %q{java/src/json/ext}, %q{java/src/json/ext/Parser.java}, %q{java/src/json/ext/RuntimeInfo.java}, %q{java/src/json/ext/GeneratorState.java}, %q{java/src/json/ext/OptionsReader.java}, %q{java/src/json/ext/ParserService.java}, %q{java/src/json/ext/Parser.rl}, %q{java/src/json/ext/StringEncoder.java}, %q{java/src/json/ext/GeneratorService.java}, %q{java/src/json/ext/Utils.java}, %q{java/src/json/ext/StringDecoder.java}, %q{java/src/json/ext/Generator.java}, %q{java/src/json/ext/ByteListTranscoder.java}, %q{java/src/json/ext/GeneratorMethods.java}, %q{java/lib}, %q{java/lib/bytelist-1.0.6.jar}, %q{java/lib/jcodings.jar}, %q{diagrams}, %q{README-json-jruby.markdown}, %q{install.rb}, %q{json-java.gemspec}, %q{tools}, %q{tools/fuzz.rb}, %q{tools/server.rb}, %q{./tests/test_json_string_matching.rb}, %q{./tests/test_json_fixtures.rb}, %q{./tests/test_json_unicode.rb}, %q{./tests/test_json_addition.rb}, %q{./tests/test_json_generate.rb}, %q{./tests/test_json_encoding.rb}, %q{./tests/test_json.rb}]
13
+ s.files = [%q{tests}, %q{tests/test_json_string_matching.rb}, %q{tests/test_json_fixtures.rb}, %q{tests/setup_variant.rb}, %q{tests/fixtures}, %q{tests/fixtures/fail6.json}, %q{tests/fixtures/fail9.json}, %q{tests/fixtures/fail10.json}, %q{tests/fixtures/fail24.json}, %q{tests/fixtures/fail28.json}, %q{tests/fixtures/fail13.json}, %q{tests/fixtures/fail4.json}, %q{tests/fixtures/pass3.json}, %q{tests/fixtures/fail11.json}, %q{tests/fixtures/fail14.json}, %q{tests/fixtures/fail3.json}, %q{tests/fixtures/fail12.json}, %q{tests/fixtures/pass16.json}, %q{tests/fixtures/pass15.json}, %q{tests/fixtures/fail20.json}, %q{tests/fixtures/fail8.json}, %q{tests/fixtures/pass2.json}, %q{tests/fixtures/fail5.json}, %q{tests/fixtures/fail1.json}, %q{tests/fixtures/fail25.json}, %q{tests/fixtures/pass17.json}, %q{tests/fixtures/fail7.json}, %q{tests/fixtures/pass26.json}, %q{tests/fixtures/fail21.json}, %q{tests/fixtures/pass1.json}, %q{tests/fixtures/fail23.json}, %q{tests/fixtures/fail18.json}, %q{tests/fixtures/fail2.json}, %q{tests/fixtures/fail22.json}, %q{tests/fixtures/fail27.json}, %q{tests/fixtures/fail19.json}, %q{tests/test_json_unicode.rb}, %q{tests/test_json_addition.rb}, %q{tests/test_json_generate.rb}, %q{tests/test_json_encoding.rb}, %q{tests/test_json.rb}, %q{COPYING}, %q{TODO}, %q{Rakefile}, %q{benchmarks}, %q{benchmarks/data-p4-3GHz-ruby18}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat}, %q{benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat}, %q{benchmarks/parser2_benchmark.rb}, %q{benchmarks/parser_benchmark.rb}, %q{benchmarks/generator2_benchmark.rb}, %q{benchmarks/generator_benchmark.rb}, %q{benchmarks/ohai.ruby}, %q{benchmarks/data}, %q{benchmarks/ohai.json}, %q{lib}, %q{lib/json}, %q{lib/json/version.rb}, %q{lib/json/add}, %q{lib/json/add/symbol.rb}, %q{lib/json/add/struct.rb}, %q{lib/json/add/complex.rb}, %q{lib/json/add/rational.rb}, %q{lib/json/add/exception.rb}, %q{lib/json/add/time.rb}, %q{lib/json/add/date_time.rb}, %q{lib/json/add/core.rb}, %q{lib/json/add/range.rb}, %q{lib/json/add/date.rb}, %q{lib/json/add/regexp.rb}, %q{lib/json/common.rb}, %q{lib/json/pure}, %q{lib/json/pure/generator.rb}, %q{lib/json/pure/parser.rb}, %q{lib/json/ext.rb}, %q{lib/json/pure.rb}, %q{lib/json/ext}, %q{lib/json.rb}, %q{Gemfile}, %q{README.rdoc}, %q{json_pure.gemspec}, %q{GPL}, %q{CHANGES}, %q{COPYING-json-jruby}, %q{ext}, %q{ext/json}, %q{ext/json/ext}, %q{ext/json/ext/parser}, %q{ext/json/ext/parser/parser.h}, %q{ext/json/ext/parser/extconf.rb}, %q{ext/json/ext/parser/parser.rl}, %q{ext/json/ext/parser/parser.c}, %q{ext/json/ext/generator}, %q{ext/json/ext/generator/generator.c}, %q{ext/json/ext/generator/extconf.rb}, %q{ext/json/ext/generator/generator.h}, %q{VERSION}, %q{data}, %q{data/prototype.js}, %q{data/index.html}, %q{data/example.json}, %q{json.gemspec}, %q{java}, %q{java/src}, %q{java/src/json}, %q{java/src/json/ext}, %q{java/src/json/ext/Parser.java}, %q{java/src/json/ext/RuntimeInfo.java}, %q{java/src/json/ext/GeneratorState.java}, %q{java/src/json/ext/OptionsReader.java}, %q{java/src/json/ext/ParserService.java}, %q{java/src/json/ext/Parser.rl}, %q{java/src/json/ext/StringEncoder.java}, %q{java/src/json/ext/GeneratorService.java}, %q{java/src/json/ext/Utils.java}, %q{java/src/json/ext/StringDecoder.java}, %q{java/src/json/ext/Generator.java}, %q{java/src/json/ext/ByteListTranscoder.java}, %q{java/src/json/ext/GeneratorMethods.java}, %q{java/lib}, %q{java/lib/bytelist-1.0.6.jar}, %q{java/lib/jcodings.jar}, %q{diagrams}, %q{README-json-jruby.markdown}, %q{install.rb}, %q{json-java.gemspec}, %q{tools}, %q{tools/fuzz.rb}, %q{tools/server.rb}, %q{./tests/test_json_string_matching.rb}, %q{./tests/test_json_fixtures.rb}, %q{./tests/test_json_unicode.rb}, %q{./tests/test_json_addition.rb}, %q{./tests/test_json_generate.rb}, %q{./tests/test_json_encoding.rb}, %q{./tests/test_json.rb}]
15
14
  s.homepage = %q{http://flori.github.com/json}
16
15
  s.rdoc_options = [%q{--title}, %q{JSON implemention for ruby}, %q{--main}, %q{README.rdoc}]
17
16
  s.require_paths = [%q{lib}]
18
17
  s.rubyforge_project = %q{json}
19
- s.rubygems_version = %q{1.8.5}
18
+ s.rubygems_version = %q{1.8.6}
20
19
  s.summary = %q{JSON Implementation for Ruby}
21
20
  s.test_files = [%q{./tests/test_json_string_matching.rb}, %q{./tests/test_json_fixtures.rb}, %q{./tests/test_json_unicode.rb}, %q{./tests/test_json_addition.rb}, %q{./tests/test_json_generate.rb}, %q{./tests/test_json_encoding.rb}, %q{./tests/test_json.rb}]
22
21
 
23
22
  if s.respond_to? :specification_version then
24
- s.specification_version = 4
23
+ s.specification_version = 3
25
24
 
26
25
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
27
26
  s.add_development_dependency(%q<permutation>, [">= 0"])
28
27
  s.add_development_dependency(%q<bullshit>, [">= 0"])
29
28
  s.add_development_dependency(%q<sdoc>, [">= 0"])
30
29
  s.add_development_dependency(%q<rake>, ["~> 0.9.2"])
31
- s.add_runtime_dependency(%q<spruz>, ["~> 0.2.8"])
32
30
  else
33
31
  s.add_dependency(%q<permutation>, [">= 0"])
34
32
  s.add_dependency(%q<bullshit>, [">= 0"])
35
33
  s.add_dependency(%q<sdoc>, [">= 0"])
36
34
  s.add_dependency(%q<rake>, ["~> 0.9.2"])
37
- s.add_dependency(%q<spruz>, ["~> 0.2.8"])
38
35
  end
39
36
  else
40
37
  s.add_dependency(%q<permutation>, [">= 0"])
41
38
  s.add_dependency(%q<bullshit>, [">= 0"])
42
39
  s.add_dependency(%q<sdoc>, [">= 0"])
43
40
  s.add_dependency(%q<rake>, ["~> 0.9.2"])
44
- s.add_dependency(%q<spruz>, ["~> 0.2.8"])
45
41
  end
46
42
  end
data/lib/json.rb CHANGED
@@ -7,13 +7,13 @@
7
7
  #
8
8
  # Built on two universally available structures:
9
9
  # 1. A collection of name/value pairs. Often referred to as an _object_, hash table, record, struct, keyed list, or associative array.
10
- # 2. An orderd list of values. More commonly named as an _array_, vector, sequence, or list.
10
+ # 2. An ordered list of values. More commonly called an _array_, vector, sequence or list.
11
11
  #
12
12
  # To read more about JSON visit: http://json.org
13
13
  #
14
14
  # == Parsing JSON
15
15
  #
16
- # To parse a JSON string received by another application, or generated within
16
+ # To parse a JSON string received by another application or generated within
17
17
  # your existing application:
18
18
  #
19
19
  # require 'json'
@@ -42,8 +42,8 @@
42
42
  # puts {:hello => "goodbye"}.to_json => "{\"hello\":\"goodbye\"}"
43
43
  #
44
44
  # <tt>JSON.generate</tt> only allows objects or arrays to be converted
45
- # to JSON syntax. While <tt>to_json</tt> accepts many Ruby classes
46
- # even though it only acts a method for serialization:
45
+ # to JSON syntax. <tt>to_json</tt>, however, accepts many Ruby classes
46
+ # even though it acts only as a method for serialization:
47
47
  #
48
48
  # require 'json'
49
49
  #
@@ -0,0 +1,22 @@
1
+ unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
2
+ require 'json'
3
+ end
4
+ defined?(::Complex) or require 'complex'
5
+
6
+ class Complex
7
+ def self.json_create(object)
8
+ Complex(object['r'], object['i'])
9
+ end
10
+
11
+ def as_json(*)
12
+ {
13
+ JSON.create_id => self.class.name,
14
+ 'r' => real,
15
+ 'i' => imag,
16
+ }
17
+ end
18
+
19
+ def to_json(*)
20
+ as_json.to_json
21
+ end
22
+ end
data/lib/json/add/core.rb CHANGED
@@ -1,243 +1,11 @@
1
- # This file contains implementations of ruby core's custom objects for
1
+ # This file requires the implementations of ruby core's custom objects for
2
2
  # serialisation/deserialisation.
3
3
 
4
- unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
5
- require 'json'
6
- end
7
- require 'date'
8
-
9
- # Symbol serialization/deserialization
10
- class Symbol
11
- # Returns a hash, that will be turned into a JSON object and represent this
12
- # object.
13
- def as_json(*)
14
- {
15
- JSON.create_id => self.class.name,
16
- 's' => to_s,
17
- }
18
- end
19
-
20
- # Stores class name (Symbol) with String representation of Symbol as a JSON string.
21
- def to_json(*a)
22
- as_json.to_json(*a)
23
- end
24
-
25
- # Deserializes JSON string by converting the <tt>string</tt> value stored in the object to a Symbol
26
- def self.json_create(o)
27
- o['s'].to_sym
28
- end
29
- end
30
-
31
- # Time serialization/deserialization
32
- class Time
33
-
34
- # Deserializes JSON string by converting time since epoch to Time
35
- def self.json_create(object)
36
- if usec = object.delete('u') # used to be tv_usec -> tv_nsec
37
- object['n'] = usec * 1000
38
- end
39
- if respond_to?(:tv_nsec)
40
- at(*object.values_at('s', 'n'))
41
- else
42
- at(object['s'], object['n'] / 1000)
43
- end
44
- end
45
-
46
- # Returns a hash, that will be turned into a JSON object and represent this
47
- # object.
48
- def as_json(*)
49
- {
50
- JSON.create_id => self.class.name,
51
- 's' => tv_sec,
52
- 'n' => respond_to?(:tv_nsec) ? tv_nsec : tv_usec * 1000
53
- }
54
- end
55
-
56
- # Stores class name (Time) with number of seconds since epoch and number of
57
- # microseconds for Time as JSON string
58
- def to_json(*args)
59
- as_json.to_json(*args)
60
- end
61
- end
62
-
63
- # Date serialization/deserialization
64
- class Date
65
-
66
- # Deserializes JSON string by converting Julian year <tt>y</tt>, month
67
- # <tt>m</tt>, day <tt>d</tt> and Day of Calendar Reform <tt>sg</tt> to Date.
68
- def self.json_create(object)
69
- civil(*object.values_at('y', 'm', 'd', 'sg'))
70
- end
71
-
72
- alias start sg unless method_defined?(:start)
73
-
74
- # Returns a hash, that will be turned into a JSON object and represent this
75
- # object.
76
- def as_json(*)
77
- {
78
- JSON.create_id => self.class.name,
79
- 'y' => year,
80
- 'm' => month,
81
- 'd' => day,
82
- 'sg' => start,
83
- }
84
- end
85
-
86
- # Stores class name (Date) with Julian year <tt>y</tt>, month <tt>m</tt>, day
87
- # <tt>d</tt> and Day of Calendar Reform <tt>sg</tt> as JSON string
88
- def to_json(*args)
89
- as_json.to_json(*args)
90
- end
91
- end
92
-
93
- # DateTime serialization/deserialization
94
- class DateTime
95
-
96
- # Deserializes JSON string by converting year <tt>y</tt>, month <tt>m</tt>,
97
- # day <tt>d</tt>, hour <tt>H</tt>, minute <tt>M</tt>, second <tt>S</tt>,
98
- # offset <tt>of</tt> and Day of Calendar Reform <tt>sg</tt> to DateTime.
99
- def self.json_create(object)
100
- args = object.values_at('y', 'm', 'd', 'H', 'M', 'S')
101
- of_a, of_b = object['of'].split('/')
102
- if of_b and of_b != '0'
103
- args << Rational(of_a.to_i, of_b.to_i)
104
- else
105
- args << of_a
106
- end
107
- args << object['sg']
108
- civil(*args)
109
- end
110
-
111
- alias start sg unless method_defined?(:start)
112
-
113
- # Returns a hash, that will be turned into a JSON object and represent this
114
- # object.
115
- def as_json(*)
116
- {
117
- JSON.create_id => self.class.name,
118
- 'y' => year,
119
- 'm' => month,
120
- 'd' => day,
121
- 'H' => hour,
122
- 'M' => min,
123
- 'S' => sec,
124
- 'of' => offset.to_s,
125
- 'sg' => start,
126
- }
127
- end
128
-
129
- # Stores class name (DateTime) with Julian year <tt>y</tt>, month <tt>m</tt>,
130
- # day <tt>d</tt>, hour <tt>H</tt>, minute <tt>M</tt>, second <tt>S</tt>,
131
- # offset <tt>of</tt> and Day of Calendar Reform <tt>sg</tt> as JSON string
132
- def to_json(*args)
133
- as_json.to_json(*args)
134
- end
135
- end
136
-
137
- # Range serialization/deserialization
138
- class Range
139
-
140
- # Deserializes JSON string by constructing new Range object with arguments
141
- # <tt>a</tt> serialized by <tt>to_json</tt>.
142
- def self.json_create(object)
143
- new(*object['a'])
144
- end
145
-
146
- # Returns a hash, that will be turned into a JSON object and represent this
147
- # object.
148
- def as_json(*)
149
- {
150
- JSON.create_id => self.class.name,
151
- 'a' => [ first, last, exclude_end? ]
152
- }
153
- end
154
-
155
- # Stores class name (Range) with JSON array of arguments <tt>a</tt> which
156
- # include <tt>first</tt> (integer), <tt>last</tt> (integer), and
157
- # <tt>exclude_end?</tt> (boolean) as JSON string.
158
- def to_json(*args)
159
- as_json.to_json(*args)
160
- end
161
- end
162
-
163
- # Struct serialization/deserialization
164
- class Struct
165
-
166
- # Deserializes JSON string by constructing new Struct object with values
167
- # <tt>v</tt> serialized by <tt>to_json</tt>.
168
- def self.json_create(object)
169
- new(*object['v'])
170
- end
171
-
172
- # Returns a hash, that will be turned into a JSON object and represent this
173
- # object.
174
- def as_json(*)
175
- klass = self.class.name
176
- klass.to_s.empty? and raise JSON::JSONError, "Only named structs are supported!"
177
- {
178
- JSON.create_id => klass,
179
- 'v' => values,
180
- }
181
- end
182
-
183
- # Stores class name (Struct) with Struct values <tt>v</tt> as a JSON string.
184
- # Only named structs are supported.
185
- def to_json(*args)
186
- as_json.to_json(*args)
187
- end
188
- end
189
-
190
- # Exception serialization/deserialization
191
- class Exception
192
-
193
- # Deserializes JSON string by constructing new Exception object with message
194
- # <tt>m</tt> and backtrace <tt>b</tt> serialized with <tt>to_json</tt>
195
- def self.json_create(object)
196
- result = new(object['m'])
197
- result.set_backtrace object['b']
198
- result
199
- end
200
-
201
- # Returns a hash, that will be turned into a JSON object and represent this
202
- # object.
203
- def as_json(*)
204
- {
205
- JSON.create_id => self.class.name,
206
- 'm' => message,
207
- 'b' => backtrace,
208
- }
209
- end
210
-
211
- # Stores class name (Exception) with message <tt>m</tt> and backtrace array
212
- # <tt>b</tt> as JSON string
213
- def to_json(*args)
214
- as_json.to_json(*args)
215
- end
216
- end
217
-
218
- # Regexp serialization/deserialization
219
- class Regexp
220
-
221
- # Deserializes JSON string by constructing new Regexp object with source
222
- # <tt>s</tt> (Regexp or String) and options <tt>o</tt> serialized by
223
- # <tt>to_json</tt>
224
- def self.json_create(object)
225
- new(object['s'], object['o'])
226
- end
227
-
228
- # Returns a hash, that will be turned into a JSON object and represent this
229
- # object.
230
- def as_json(*)
231
- {
232
- JSON.create_id => self.class.name,
233
- 'o' => options,
234
- 's' => source,
235
- }
236
- end
237
-
238
- # Stores class name (Regexp) with options <tt>o</tt> and source <tt>s</tt>
239
- # (Regexp or String) as JSON string
240
- def to_json(*)
241
- as_json.to_json
242
- end
243
- end
4
+ require 'json/add/date'
5
+ require 'json/add/date_time'
6
+ require 'json/add/exception'
7
+ require 'json/add/range'
8
+ require 'json/add/regexp'
9
+ require 'json/add/struct'
10
+ require 'json/add/symbol'
11
+ require 'json/add/time'