oj 3.7.4 → 3.7.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 63afe8de8789be3dcae927133f970ce4c1ebcf2a95e559fd74d001002f21a976
4
- data.tar.gz: 241ad4cdb767fbaa9b39eb3772748db8217d0a3bf9545300ff63d16722abf826
3
+ metadata.gz: 1b79a00294bf924b3e584d91bf719d1b0e74fd567d8b677b394930a7825bda34
4
+ data.tar.gz: 402f51a51d76e0f3ac1e6527b0b00a67885bc1c25d246388ab96e0ccf1354e22
5
5
  SHA512:
6
- metadata.gz: c8b9183590f1ca6673d53c5e885afa958164ea0b7ad1e6ade77d5527ecad0d56ea2e9738daa85707c1f2d5fedb7c23779bc4b932a4345ca9f63e8e6520e579b5
7
- data.tar.gz: 3a51f9db59bdf848f16eed3ddc24ebe1c9d96d408fd0ec11f513c335c85deb79cf2c6b2c7f587f2acc9f9fa77510f51094331fba1150993b6d396b8f4774336e
6
+ metadata.gz: aab6be5b3ec6fd7f98323d38c7efe439f309d70b59ab12acfd02fb0290b99b8ba39b7d8ee9a2cd34d9a8a6f2fb69391bcaedb5c680f059df0da840e42f6484bc
7
+ data.tar.gz: 9b36cb9b71beaed79b0b5d3ff8f277366b105d7c51a78e93a465824d6a86afffac16c9f719b46dcbc00337130b55bf6ccf4912eea7180c07d86ef48a9fc2419e
@@ -85,6 +85,17 @@ static char xss_friendly_chars[256] = "\
85
85
  // JSON XSS combo
86
86
  static char hixss_friendly_chars[256] = "\
87
87
  66666666222622666666666666666666\
88
+ 11211111111111111111111111111111\
89
+ 11111111111111111111111111112111\
90
+ 11111111111111111111111111111111\
91
+ 11111111111111111111111111111111\
92
+ 11111111111111111111111111111111\
93
+ 11111111111111111111111111111111\
94
+ 11611111111111111111111111111111";
95
+
96
+ // Rails XSS combo
97
+ static char rails_xss_friendly_chars[256] = "\
98
+ 66666666222622666666666666666666\
88
99
  11211161111111111111111111116161\
89
100
  11111111111111111111111111112111\
90
101
  11111111111111111111111111111111\
@@ -168,6 +179,17 @@ hixss_friendly_size(const uint8_t *str, size_t len) {
168
179
  return size - len * (size_t)'0' + check;
169
180
  }
170
181
 
182
+ inline static size_t
183
+ rails_xss_friendly_size(const uint8_t *str, size_t len) {
184
+ size_t size = 0;
185
+ size_t i = len;
186
+
187
+ for (; 0 < i; str++, i--) {
188
+ size += rails_xss_friendly_chars[*str];
189
+ }
190
+ return size - len * (size_t)'0';
191
+ }
192
+
171
193
  inline static size_t
172
194
  rails_friendly_size(const uint8_t *str, size_t len) {
173
195
  size_t size = 0;
@@ -754,6 +776,10 @@ oj_dump_cstr(const char *str, size_t cnt, bool is_sym, bool escape1, Out out) {
754
776
  cmap = hixss_friendly_chars;
755
777
  size = hixss_friendly_size((uint8_t*)str, cnt);
756
778
  break;
779
+ case RailsXEsc:
780
+ cmap = rails_xss_friendly_chars;
781
+ size = rails_xss_friendly_size((uint8_t*)str, cnt);
782
+ break;
757
783
  case RailsEsc:
758
784
  cmap = rails_friendly_chars;
759
785
  size = rails_friendly_size((uint8_t*)str, cnt);
@@ -795,7 +821,7 @@ oj_dump_cstr(const char *str, size_t cnt, bool is_sym, bool escape1, Out out) {
795
821
  for (; str < end; str++) {
796
822
  switch (cmap[(uint8_t)*str]) {
797
823
  case '1':
798
- if (JXEsc == out->opts->escape_mode && check_start <= str) {
824
+ if ((JXEsc == out->opts->escape_mode || RailsXEsc == out->opts->escape_mode) && check_start <= str) {
799
825
  if (0 != (0x80 & (uint8_t)*str)) {
800
826
  if (0xC0 == (0xC0 & (uint8_t)*str)) {
801
827
  check_start = check_unicode(str, end, orig);
@@ -819,7 +845,7 @@ oj_dump_cstr(const char *str, size_t cnt, bool is_sym, bool escape1, Out out) {
819
845
  }
820
846
  break;
821
847
  case '3': // Unicode
822
- if (0xe2 == (uint8_t)*str && JXEsc == out->opts->escape_mode && 2 <= end - str) {
848
+ if (0xe2 == (uint8_t)*str && (JXEsc == out->opts->escape_mode || RailsXEsc == out->opts->escape_mode) && 2 <= end - str) {
823
849
  if (0x80 == (uint8_t)str[1] && (0xa8 == (uint8_t)str[2] || 0xa9 == (uint8_t)str[2])) {
824
850
  str = dump_unicode(str, end, out, orig);
825
851
  } else {
@@ -838,7 +864,7 @@ oj_dump_cstr(const char *str, size_t cnt, bool is_sym, bool escape1, Out out) {
838
864
  *out->cur++ = '0';
839
865
  dump_hex((uint8_t)*str, out);
840
866
  } else {
841
- if (0xe2 == (uint8_t)*str && JXEsc == out->opts->escape_mode && 2 <= end - str) {
867
+ if (0xe2 == (uint8_t)*str && (JXEsc == out->opts->escape_mode || RailsXEsc == out->opts->escape_mode) && 2 <= end - str) {
842
868
  if (0x80 == (uint8_t)str[1] && (0xa8 == (uint8_t)str[2] || 0xa9 == (uint8_t)str[2])) {
843
869
  str = dump_unicode(str, end, out, orig);
844
870
  } else {
@@ -856,7 +882,7 @@ oj_dump_cstr(const char *str, size_t cnt, bool is_sym, bool escape1, Out out) {
856
882
  }
857
883
  *out->cur++ = '"';
858
884
  }
859
- if (JXEsc == out->opts->escape_mode && 0 < str - orig && 0 != (0x80 & *(str - 1))) {
885
+ if ((JXEsc == out->opts->escape_mode || RailsXEsc == out->opts->escape_mode) && 0 < str - orig && 0 != (0x80 & *(str - 1))) {
860
886
  uint8_t c = (uint8_t)*(str - 1);
861
887
  int i;
862
888
  int scnt = (int)(str - orig);
@@ -167,7 +167,7 @@ oj_parse_mimic_dump_options(VALUE ropts, Options copts) {
167
167
  if (Qnil != (v = rb_hash_lookup(ropts, oj_ascii_only_sym))) {
168
168
  // generate seems to assume anything except nil and false are true.
169
169
  if (Qfalse == v) {
170
- copts->escape_mode = JXEsc; // JSONEsc;
170
+ copts->escape_mode = JXEsc;
171
171
  } else {
172
172
  copts->escape_mode = ASCIIEsc;
173
173
  }
@@ -69,7 +69,8 @@ typedef enum {
69
69
  JSONEsc = 'j',
70
70
  XSSEsc = 'x',
71
71
  ASCIIEsc = 'a',
72
- JXEsc = 'r', // json
72
+ JXEsc = 'g', // json gem
73
+ RailsXEsc = 'r', // rails xss mode
73
74
  RailsEsc = 'R', // rails non escape
74
75
  } Encoding;
75
76
 
@@ -917,7 +917,7 @@ encode(VALUE obj, ROptTable ropts, Options opts, int argc, VALUE *argv) {
917
917
  copts.str_rx.tail = NULL;
918
918
  copts.mode = RailsMode;
919
919
  if (escape_html) {
920
- copts.escape_mode = JXEsc;
920
+ copts.escape_mode = RailsXEsc;
921
921
  } else {
922
922
  copts.escape_mode = RailsEsc;
923
923
  }
@@ -1481,7 +1481,7 @@ oj_dump_rails_val(VALUE obj, int depth, Out out) {
1481
1481
  out->opts->str_rx.head = NULL;
1482
1482
  out->opts->str_rx.tail = NULL;
1483
1483
  if (escape_html) {
1484
- out->opts->escape_mode = JXEsc;
1484
+ out->opts->escape_mode = RailsXEsc;
1485
1485
  } else {
1486
1486
  out->opts->escape_mode = RailsEsc;
1487
1487
  }
@@ -1,5 +1,5 @@
1
1
 
2
2
  module Oj
3
3
  # Current version of the module.
4
- VERSION = '3.7.4'
4
+ VERSION = '3.7.5'
5
5
  end
@@ -84,49 +84,49 @@ options available in each mode. An `x` in the matrix indicates the option is
84
84
  supported in that mode. A number indicates the footnotes describe additional
85
85
  information.
86
86
 
87
- | Option | type | :null | :strict | :compat | :rails | :object | :custom | :wab |
88
- | ---------------------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- |
89
- | :allow_blank | Boolean | | | 1 | 1 | | x | |
90
- | :allow_gc | Boolean | x | x | x | x | x | x | |
91
- | :allow_invalid_unicode | Boolean | | | | | x | x | |
92
- | :allow_nan | Boolean | | | x | | x | x | |
93
- | :array_class | Class | | | x | x | | x | |
94
- | :array_nl | String | | | | | | x | |
95
- | :ascii_only | Boolean | x | x | 2 | 2 | x | x | |
96
- | :auto_define | Boolean | | | | | x | x | |
97
- | :bigdecimal_as_decimal | Boolean | | | | 3 | x | x | |
98
- | :bigdecimal_load | Boolean | | | | | | x | |
99
- | :circular | Boolean | x | x | x | x | x | x | |
100
- | :class_cache | Boolean | | | | | x | x | |
101
- | :create_additions | Boolean | | | x | x | | x | |
102
- | :create_id | String | | | x | x | | x | |
103
- | :empty_string | Boolean | | | | | | x | |
104
- | :escape_mode | Symbol | | | | | | x | |
105
- | :float_precision | Fixnum | x | x | | | | x | |
106
- | :hash_class | Class | | | x | x | | x | |
107
- | :ignore | Array | | | | | x | x | |
108
- | :indent | Integer | x | x | 3 | 4 | x | x | x |
109
- | :indent_str | String | | | x | x | | x | |
110
- | :integer_range | Range | x | x | x | x | x | x | x |
111
- | :match_string | Hash | | | x | x | | x | |
112
- | :max_nesting | Fixnum | 4 | 4 | x | | 5 | 4 | |
113
- | :mode | Symbol | - | - | - | - | - | - | |
114
- | :nan | Symbol | | | | | | x | |
115
- | :nilnil | Boolean | | | | | | x | |
116
- | :object_class | Class | | | x | | | x | |
117
- | :object_nl | String | | | x | x | | x | |
118
- | :omit_nil | Boolean | x | x | x | x | x | x | |
119
- | :quirks_mode | Boolean | | | 6 | | | x | |
120
- | :second_precision | Fixnum | | | | | x | x | |
121
- | :space | String | | | x | x | | x | |
122
- | :space_before | String | | | x | x | | x | |
123
- | :symbol_keys | Boolean | x | x | x | x | x | x | |
124
- | :trace | Boolean | x | x | x | x | x | x | x |
125
- | :time_format | Symbol | | | | | x | x | |
126
- | :use_as_json | Boolean | | | | | | x | |
127
- | :use_to_hash | Boolean | | | | | | x | |
128
- | :use_to_json | Boolean | | | | | | x | |
129
- --------------------------------------------------------------------------------------------------------
87
+ | Option | type | :null | :strict | :compat | :rails | :object | :custom | :wab |
88
+ | ---------------------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- |
89
+ | :allow_blank | Boolean | | | 1 | 1 | | x | |
90
+ | :allow_gc | Boolean | x | x | x | x | x | x | |
91
+ | :allow_invalid_unicode | Boolean | | | | | x | x | |
92
+ | :allow_nan | Boolean | | | x | | x | x | |
93
+ | :array_class | Class | | | x | x | | x | |
94
+ | :array_nl | String | | | | | | x | |
95
+ | :ascii_only | Boolean | x | x | 2 | 2 | x | x | |
96
+ | :auto_define | Boolean | | | | | x | x | |
97
+ | :bigdecimal_as_decimal | Boolean | | | | 3 | x | x | |
98
+ | :bigdecimal_load | Boolean | | | | | | x | |
99
+ | :circular | Boolean | x | x | x | x | x | x | |
100
+ | :class_cache | Boolean | | | | | x | x | |
101
+ | :create_additions | Boolean | | | x | x | | x | |
102
+ | :create_id | String | | | x | x | | x | |
103
+ | :empty_string | Boolean | | | | | | x | |
104
+ | :escape_mode | Symbol | | | | | | x | |
105
+ | :float_precision | Fixnum | x | x | | | | x | |
106
+ | :hash_class | Class | | | x | x | | x | |
107
+ | :ignore | Array | | | | | x | x | |
108
+ | :indent | Integer | x | x | 3 | 4 | x | x | x |
109
+ | :indent_str | String | | | x | x | | x | |
110
+ | :integer_range | Range | x | x | x | x | x | x | x |
111
+ | :match_string | Hash | | | x | x | | x | |
112
+ | :max_nesting | Fixnum | 4 | 4 | x | | 5 | 4 | |
113
+ | :mode | Symbol | - | - | - | - | - | - | |
114
+ | :nan | Symbol | | | | | | x | |
115
+ | :nilnil | Boolean | | | | | | x | |
116
+ | :object_class | Class | | | x | | | x | |
117
+ | :object_nl | String | | | x | x | | x | |
118
+ | :omit_nil | Boolean | x | x | x | x | x | x | |
119
+ | :quirks_mode | Boolean | | | 6 | | | x | |
120
+ | :second_precision | Fixnum | | | | | x | x | |
121
+ | :space | String | | | x | x | | x | |
122
+ | :space_before | String | | | x | x | | x | |
123
+ | :symbol_keys | Boolean | x | x | x | x | x | x | |
124
+ | :trace | Boolean | x | x | x | x | x | x | x |
125
+ | :time_format | Symbol | | | | | x | x | |
126
+ | :use_as_json | Boolean | | | | | | x | |
127
+ | :use_to_hash | Boolean | | | | | | x | |
128
+ | :use_to_json | Boolean | | | | | | x | |
129
+ --------------------------------------------------------------------------------------------------------
130
130
 
131
131
  1. :allow_blank an alias for :nilnil.
132
132
 
@@ -0,0 +1,15 @@
1
+ #require 'active_support'
2
+ #require 'active_support/core_ext'
3
+ #require 'active_support/json'
4
+ require 'oj'
5
+
6
+ #Oj.optimize_rails
7
+ Oj.mimic_JSON
8
+
9
+ h = {:type=>:record, :name=>:group, :namespace=>"com.salsify.identity", :fields=>[{:name=>"id", :type=>{:name=>:salsify_uuid, :type=>:fixed, :namespace=>"com.salsify", :size=>38}}, {:name=>"type", :type=>"string", :default=>"groups"}, {:name=>"external_id", :type=>[:null, "string"], :default=>nil}, {:name=>"created_at", :type=>{:type=>"long", :logicalType=>"timestamp-micros"}}, {:name=>"updated_at", :type=>{:type=>"long", :logicalType=>"timestamp-micros"}}, {:name=>"name", :type=>"string"}, {:name=>"policy", :type=>[:null, {:type=>:record, :name=>:policy, :namespace=>"com.salsify.security", :fields=>[{:name=>"created_at", :type=>{:type=>"long", :logicalType=>"timestamp-micros"}}, {:name=>"updated_at", :type=>{:type=>"long", :logicalType=>"timestamp-micros"}}, {:name=>"id", :type=>"com.salsify.salsify_uuid"}, {:name=>"type", :type=>"string", :default=>"policies"}, {:name=>"external_id", :type=>[:null, "string"], :default=>nil}, {:name=>"name", :type=>"string"}, {:name=>"statements", :type=>{:type=>:array, :items=>{:type=>:record, :name=>:statement, :namespace=>"com.salsify.security", :fields=>[{:name=>"created_at", :type=>{:type=>"long", :logicalType=>"timestamp-micros"}}, {:name=>"updated_at", :type=>{:type=>"long", :logicalType=>"timestamp-micros"}}, {:name=>"id", :type=>"com.salsify.salsify_uuid"}, {:name=>"type", :type=>"string", :default=>"statements"}, {:name=>"external_id", :type=>[:null, "string"], :default=>nil}, {:name=>"action", :type=>{:name=>"__statement_action_enum", :type=>:enum, :namespace=>"com.salsify.security", :symbols=>[:manage, :read]}}, {:name=>"resource", :type=>{:name=>"__statement_resource_enum", :type=>:enum, :namespace=>"com.salsify.security", :symbols=>[:product, :digital_asset]}}, {:name=>"conditions", :type=>{:type=>:array, :items=>{:type=>:record, :name=>:condition, :namespace=>"com.salsify.security", :fields=>[{:name=>"created_at", :type=>{:type=>"long", :logicalType=>"timestamp-micros"}}, {:name=>"updated_at", :type=>{:type=>"long", :logicalType=>"timestamp-micros"}}, {:name=>"id", :type=>"com.salsify.salsify_uuid"}, {:name=>"type", :type=>"string", :default=>"conditions"}, {:name=>"external_id", :type=>[:null, "string"], :default=>nil}, {:name=>"operator", :type=>{:name=>"__condition_operator_enum", :type=>:enum, :namespace=>"com.salsify.security", :symbols=>[:equals]}}, {:name=>"attribute_type", :type=>{:name=>"__condition_attribute_type_enum", :type=>:enum, :namespace=>"com.salsify.security", :symbols=>[:resource]}}, {:name=>"value", :type=>"string"}, {:name=>"attribute", :type=>[:null, {:type=>:record, :name=>:reference, :namespace=>"com.salsify", :fields=>[{:name=>"id", :type=>"com.salsify.salsify_uuid"}, {:name=>"type", :type=>"string", :doc=>"snake_case, plural name for the resource type"}, {:name=>"external_id", :type=>[:null, "string"], :default=>nil}]}], :default=>nil}, {:name=>"broken", :type=>[:null, "boolean"], :default=>nil}]}}}]}}}]}], :default=>nil}]}
10
+
11
+ #Oj.dump(h)
12
+ puts JSON.pretty_generate(h)
13
+ #puts JSON.fast_generate(h)
14
+ #puts JSON.generate(h)
15
+
@@ -1,83 +1,32 @@
1
1
  #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
2
 
4
- $: << File.dirname(__FILE__)
5
- $oj_dir = File.dirname(File.expand_path(File.dirname(__FILE__)))
6
- %w(lib ext).each do |dir|
7
- $: << File.join($oj_dir, dir)
8
- end
3
+ $: << '.'
4
+ $: << '../lib'
5
+ $: << '../ext'
9
6
 
10
7
  require 'oj'
11
- require 'tracer'
12
8
 
13
- #Tracer.on
14
9
 
15
10
  class MyParser
16
- attr_accessor :enum
17
-
18
11
  def initialize
19
- @io = StringIO.new
20
- @writer = Oj::StreamWriter.new(@io)
21
-
22
- json_string = Oj.dump({ records: 1.upto(2).map{|i| { id: i, name: "record_#{i}" }} }, mode: :strict)
23
- @test_json = StringIO.new(json_string)
24
-
25
- @enum = Enumerator.new do |yielder|
26
- @yielder = yielder
27
- Oj.sc_parse(self, @test_json)
28
- end
29
- end
30
-
31
- # Stream parsing methods
32
- def hash_start
33
- @writer.push_object
34
- end
35
-
36
- def hash_end
37
- @writer.pop unless @io.eof
12
+ @current_depth = 0
38
13
  end
39
14
 
40
- def hash_key(key)
41
- @writer.push_key(key)
15
+ def parse(file)
16
+ Oj.sc_parse(self, file)
42
17
  end
43
18
 
44
- def hash_set(h, key, value)
45
- @writer.push_value(value)
46
- end
47
-
48
- def array_start
49
- @writer.push_array
50
- end
51
-
52
- def array_end
53
- @writer.pop
54
- end
55
-
56
- def array_append(a, value)
57
- yield_data
58
- end
59
-
60
- def add_value(value);end
61
-
62
- def yield_data
63
- @writer.pop_all
64
- @yielder << @io.string
65
- @io.reopen("")
66
- array_start
19
+ def hash_start
20
+ puts "start"
21
+ @current_depth += 1
22
+ raise Exception.new("Hello")
23
+ {}
67
24
  end
68
- end
69
-
70
- #puts MyParser.new.enum.to_a
71
-
72
- puts "------------"
73
-
74
- MyError = Class.new(StandardError)
75
25
 
76
- MyParser.new.enum.each.with_index do |r, i|
77
- puts "========="
78
- raise MyError.new('hello')
79
- #raise StopIteration if i == 0
80
- #break if i >= 4
26
+ # Other Oj::ScHandler methods go below.
27
+ # The parser's purpose is to find a specific value nested deep within the streaming JSON
28
+ # and to stop parsing immediately afterward.
81
29
  end
82
30
 
83
- #{"records":[{"id":1,"name":"record_1"},{"id":2,"name":"record_2"},{"id":3,"name":"record_3"},{"id":4,"name":"record_4"},{"id":5,"name":"record_5"},{"id":6,"name":"record_6"},{"id":7,"name":"record_7"},{"id":8,"name":"record_8"},{"id":9,"name":"record_9"},{"id":10,"name":"record_10"},{"id":11,"name":"record_11"},{"id":12,"name":"record_12"},{"id":13,"name":"record_13"},{"id":14,"name":"record_14"},{"id":15,"name":"record_15"},{"id":16,"name":"record_16"},{"id":17,"name":"record_17"},{"id":18,"name":"record_18"},{"id":19,"name":"record_19"},{"id":20,"name":"record_20"},{"id":21,"name":"record_21"},{"id":22,"name":"record_22"},{"id":23,"name":"record_23"},{"id":24,"name":"record_24"},{"id":25,"name":"record_25"}]}
31
+ parser = MyParser.new
32
+ parser.parse(%|{"a":{"b":{"c":{}}}}|)
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $: << '.'
4
+ $: << '../lib'
5
+ $: << '../ext'
6
+
7
+ require 'objspace'
8
+ require 'oj'
9
+ require 'json'
10
+ require 'get_process_mem'
11
+
12
+ def record_allocation
13
+ GC.start
14
+ GC.start
15
+
16
+ mem = GetProcessMem.new
17
+ puts "Before - Process Memory: #{mem.mb} mb"
18
+ puts "Before - Objects count: #{ObjectSpace.each_object.count}"
19
+ puts "Before - Symbols count: #{Symbol.all_symbols.size}"
20
+
21
+ yield
22
+
23
+ GC.start
24
+ GC.start
25
+ GC.start
26
+
27
+ puts "After - Process Memory: #{mem.mb} mb"
28
+ puts "After - Objects count: #{ObjectSpace.each_object.count}"
29
+ puts "After - Symbols count: #{Symbol.all_symbols.size}"
30
+ end
31
+
32
+ record_allocation do
33
+ data = 1_000_000.times.map { |i| "string_number_#{i}".to_sym } # array of symbols
34
+ Oj.dump(data, mode: :rails)
35
+ end
@@ -243,6 +243,11 @@ class CompatJuice < Minitest::Test
243
243
  assert_equal({"a\nb" => true, "c\td" => false}, obj)
244
244
  end
245
245
 
246
+ def test_hash_escaping
247
+ json = Oj.to_json({'<>' => '<>'}, mode: :compat)
248
+ assert_equal(json, '{"<>":"<>"}')
249
+ end
250
+
246
251
  def test_bignum_object
247
252
  dump_and_load(7 ** 55, false)
248
253
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oj
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.4
4
+ version: 3.7.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Ohler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-29 00:00:00.000000000 Z
11
+ date: 2018-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -79,16 +79,16 @@ extensions:
79
79
  - ext/oj/extconf.rb
80
80
  extra_rdoc_files:
81
81
  - README.md
82
- - pages/Rails.md
83
- - pages/JsonGem.md
84
- - pages/Encoding.md
85
- - pages/WAB.md
86
- - pages/Custom.md
82
+ - pages/Modes.md
87
83
  - pages/Advanced.md
88
84
  - pages/Options.md
85
+ - pages/Custom.md
89
86
  - pages/Compatibility.md
90
- - pages/Modes.md
87
+ - pages/WAB.md
91
88
  - pages/Security.md
89
+ - pages/Encoding.md
90
+ - pages/JsonGem.md
91
+ - pages/Rails.md
92
92
  files:
93
93
  - LICENSE
94
94
  - README.md
@@ -175,7 +175,7 @@ files:
175
175
  - test/activesupport5/encoding_test_cases.rb
176
176
  - test/activesupport5/test_helper.rb
177
177
  - test/activesupport5/time_zone_test_helpers.rb
178
- - test/bar.rb
178
+ - test/big.rb
179
179
  - test/files.rb
180
180
  - test/foo.rb
181
181
  - test/helper.rb
@@ -198,6 +198,7 @@ files:
198
198
  - test/json_gem/json_parser_test.rb
199
199
  - test/json_gem/json_string_matching_test.rb
200
200
  - test/json_gem/test_helper.rb
201
+ - test/mem.rb
201
202
  - test/perf.rb
202
203
  - test/perf_compat.rb
203
204
  - test/perf_fast.rb
@@ -276,81 +277,82 @@ signing_key:
276
277
  specification_version: 4
277
278
  summary: A fast JSON parser and serializer.
278
279
  test_files:
279
- - test/foo.rb
280
- - test/test_integer_range.rb
281
- - test/test_strict.rb
282
- - test/perf_strict.rb
283
- - test/tests.rb
284
- - test/perf_saj.rb
285
- - test/test_compat.rb
286
- - test/helper.rb
287
280
  - test/perf_file.rb
288
- - test/test_scp.rb
289
- - test/perf_compat.rb
290
- - test/json_gem/json_common_interface_test.rb
291
- - test/json_gem/json_addition_test.rb
292
- - test/json_gem/json_fixtures_test.rb
293
- - test/json_gem/json_ext_parser_test.rb
281
+ - test/test_hash.rb
282
+ - test/perf.rb
283
+ - test/test_object.rb
284
+ - test/test_null.rb
285
+ - test/test_compat.rb
286
+ - test/test_custom.rb
287
+ - test/perf_scp.rb
288
+ - test/test_integer_range.rb
289
+ - test/test_gc.rb
290
+ - test/sample.rb
294
291
  - test/json_gem/json_string_matching_test.rb
295
- - test/json_gem/json_generic_object_test.rb
296
- - test/json_gem/json_generator_test.rb
292
+ - test/json_gem/json_addition_test.rb
297
293
  - test/json_gem/test_helper.rb
298
- - test/json_gem/json_encoding_test.rb
294
+ - test/json_gem/json_generator_test.rb
299
295
  - test/json_gem/json_parser_test.rb
300
- - test/perf_wab.rb
301
- - test/test_file.rb
302
- - test/test_object.rb
303
- - test/sample.rb
304
- - test/perf_object.rb
305
- - test/test_hash.rb
306
- - test/test_custom.rb
307
- - test/bar.rb
308
- - test/activesupport4/encoding_test.rb
296
+ - test/json_gem/json_encoding_test.rb
297
+ - test/json_gem/json_common_interface_test.rb
298
+ - test/json_gem/json_generic_object_test.rb
299
+ - test/json_gem/json_ext_parser_test.rb
300
+ - test/json_gem/json_fixtures_test.rb
301
+ - test/tests_mimic_addition.rb
302
+ - test/test_wab.rb
309
303
  - test/activesupport4/test_helper.rb
310
304
  - test/activesupport4/decoding_test.rb
311
- - test/sample_json.rb
305
+ - test/activesupport4/encoding_test.rb
306
+ - test/activerecord/result_test.rb
307
+ - test/_test_active.rb
308
+ - test/test_file.rb
312
309
  - test/activesupport5/encoding_test_cases.rb
313
- - test/activesupport5/encoding_test.rb
314
310
  - test/activesupport5/time_zone_test_helpers.rb
315
311
  - test/activesupport5/test_helper.rb
316
312
  - test/activesupport5/decoding_test.rb
317
- - test/test_saj.rb
318
- - test/perf_scp.rb
319
- - test/test_wab.rb
320
- - test/test_null.rb
321
- - test/_test_active.rb
322
- - test/_test_mimic_rails.rb
323
- - test/test_fast.rb
324
- - test/perf_fast.rb
325
- - test/sample/change.rb
326
- - test/sample/text.rb
327
- - test/sample/doc.rb
328
- - test/sample/shape.rb
329
- - test/sample/layer.rb
330
- - test/sample/group.rb
331
- - test/sample/file.rb
332
- - test/sample/rect.rb
333
- - test/sample/hasprops.rb
334
- - test/sample/line.rb
335
- - test/sample/dir.rb
336
- - test/sample/oval.rb
337
- - test/tests_mimic.rb
338
- - test/perf_simple.rb
339
- - test/activerecord/result_test.rb
313
+ - test/activesupport5/encoding_test.rb
314
+ - test/tests.rb
340
315
  - test/_test_active_mimic.rb
341
- - test/tests_mimic_addition.rb
342
- - test/test_writer.rb
343
- - test/perf.rb
316
+ - test/perf_object.rb
317
+ - test/test_strict.rb
318
+ - test/test_scp.rb
319
+ - test/perf_wab.rb
320
+ - test/test_saj.rb
321
+ - test/mem.rb
322
+ - test/perf_compat.rb
323
+ - test/helper.rb
324
+ - test/isolated/test_mimic_alone.rb
344
325
  - test/isolated/test_mimic_define.rb
345
- - test/isolated/test_mimic_after.rb
346
326
  - test/isolated/test_mimic_rails_after.rb
347
- - test/isolated/test_mimic_before.rb
327
+ - test/isolated/test_mimic_after.rb
348
328
  - test/isolated/test_mimic_rails_before.rb
329
+ - test/isolated/test_mimic_as_json.rb
349
330
  - test/isolated/test_mimic_redefine.rb
350
331
  - test/isolated/shared.rb
351
- - test/isolated/test_mimic_alone.rb
352
- - test/isolated/test_mimic_as_json.rb
332
+ - test/isolated/test_mimic_before.rb
333
+ - test/sample_json.rb
353
334
  - test/test_debian.rb
354
- - test/test_gc.rb
335
+ - test/perf_fast.rb
336
+ - test/test_writer.rb
337
+ - test/test_fast.rb
338
+ - test/sample/line.rb
339
+ - test/sample/change.rb
340
+ - test/sample/dir.rb
341
+ - test/sample/text.rb
342
+ - test/sample/layer.rb
343
+ - test/sample/rect.rb
344
+ - test/sample/group.rb
345
+ - test/sample/oval.rb
346
+ - test/sample/doc.rb
347
+ - test/sample/hasprops.rb
348
+ - test/sample/shape.rb
349
+ - test/sample/file.rb
355
350
  - test/files.rb
351
+ - test/big.rb
352
+ - test/perf_saj.rb
353
+ - test/foo.rb
354
+ - test/tests_mimic.rb
355
+ - test/perf_strict.rb
356
356
  - test/test_various.rb
357
+ - test/_test_mimic_rails.rb
358
+ - test/perf_simple.rb
@@ -1,17 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- $: << File.dirname(__FILE__)
5
- $oj_dir = File.dirname(File.expand_path(File.dirname(__FILE__)))
6
- %w(lib ext).each do |dir|
7
- $: << File.join($oj_dir, dir)
8
- end
9
-
10
- require 'oj'
11
- require 'tracer'
12
-
13
- #Tracer.on
14
-
15
- Oj.load_file(ARGV[0], mode: :strict) { |obj|
16
- puts Oj.dump(obj, indent: 2)
17
- }