json-maglev- 1.5.4 → 1.6.1

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 (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'