oj_windows 3.16.15
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 +7 -0
- data/CHANGELOG.md +44 -0
- data/LICENSE +21 -0
- data/README.md +164 -0
- data/ext/oj_windows/buf.h +85 -0
- data/ext/oj_windows/cache.c +339 -0
- data/ext/oj_windows/cache.h +22 -0
- data/ext/oj_windows/cache8.c +105 -0
- data/ext/oj_windows/cache8.h +21 -0
- data/ext/oj_windows/circarray.c +64 -0
- data/ext/oj_windows/circarray.h +22 -0
- data/ext/oj_windows/code.c +214 -0
- data/ext/oj_windows/code.h +40 -0
- data/ext/oj_windows/compat.c +239 -0
- data/ext/oj_windows/custom.c +1074 -0
- data/ext/oj_windows/debug.c +126 -0
- data/ext/oj_windows/dump.c +1556 -0
- data/ext/oj_windows/dump.h +110 -0
- data/ext/oj_windows/dump_compat.c +901 -0
- data/ext/oj_windows/dump_leaf.c +162 -0
- data/ext/oj_windows/dump_object.c +710 -0
- data/ext/oj_windows/dump_strict.c +405 -0
- data/ext/oj_windows/encode.h +16 -0
- data/ext/oj_windows/err.c +57 -0
- data/ext/oj_windows/err.h +67 -0
- data/ext/oj_windows/extconf.rb +77 -0
- data/ext/oj_windows/fast.c +1710 -0
- data/ext/oj_windows/intern.c +325 -0
- data/ext/oj_windows/intern.h +22 -0
- data/ext/oj_windows/mem.c +320 -0
- data/ext/oj_windows/mem.h +53 -0
- data/ext/oj_windows/mimic_json.c +919 -0
- data/ext/oj_windows/object.c +726 -0
- data/ext/oj_windows/odd.c +245 -0
- data/ext/oj_windows/odd.h +43 -0
- data/ext/oj_windows/oj.c +2097 -0
- data/ext/oj_windows/oj.h +420 -0
- data/ext/oj_windows/parse.c +1317 -0
- data/ext/oj_windows/parse.h +113 -0
- data/ext/oj_windows/parser.c +1600 -0
- data/ext/oj_windows/parser.h +103 -0
- data/ext/oj_windows/rails.c +1484 -0
- data/ext/oj_windows/rails.h +18 -0
- data/ext/oj_windows/reader.c +222 -0
- data/ext/oj_windows/reader.h +137 -0
- data/ext/oj_windows/resolve.c +80 -0
- data/ext/oj_windows/resolve.h +12 -0
- data/ext/oj_windows/rxclass.c +144 -0
- data/ext/oj_windows/rxclass.h +26 -0
- data/ext/oj_windows/saj.c +675 -0
- data/ext/oj_windows/saj2.c +584 -0
- data/ext/oj_windows/saj2.h +23 -0
- data/ext/oj_windows/scp.c +187 -0
- data/ext/oj_windows/simd.h +47 -0
- data/ext/oj_windows/sparse.c +946 -0
- data/ext/oj_windows/stream_writer.c +329 -0
- data/ext/oj_windows/strict.c +189 -0
- data/ext/oj_windows/string_writer.c +517 -0
- data/ext/oj_windows/trace.c +72 -0
- data/ext/oj_windows/trace.h +55 -0
- data/ext/oj_windows/usual.c +1218 -0
- data/ext/oj_windows/usual.h +69 -0
- data/ext/oj_windows/util.c +136 -0
- data/ext/oj_windows/util.h +20 -0
- data/ext/oj_windows/val_stack.c +101 -0
- data/ext/oj_windows/val_stack.h +151 -0
- data/ext/oj_windows/validate.c +46 -0
- data/ext/oj_windows/wab.c +584 -0
- data/lib/oj/active_support_helper.rb +39 -0
- data/lib/oj/bag.rb +95 -0
- data/lib/oj/easy_hash.rb +52 -0
- data/lib/oj/error.rb +21 -0
- data/lib/oj/json.rb +188 -0
- data/lib/oj/mimic.rb +301 -0
- data/lib/oj/saj.rb +80 -0
- data/lib/oj/schandler.rb +143 -0
- data/lib/oj/state.rb +135 -0
- data/lib/oj/version.rb +4 -0
- data/lib/oj_windows/active_support_helper.rb +39 -0
- data/lib/oj_windows/bag.rb +95 -0
- data/lib/oj_windows/easy_hash.rb +52 -0
- data/lib/oj_windows/error.rb +21 -0
- data/lib/oj_windows/json.rb +188 -0
- data/lib/oj_windows/mimic.rb +301 -0
- data/lib/oj_windows/saj.rb +80 -0
- data/lib/oj_windows/schandler.rb +143 -0
- data/lib/oj_windows/state.rb +135 -0
- data/lib/oj_windows/version.rb +4 -0
- data/lib/oj_windows.rb +15 -0
- data/pages/Advanced.md +38 -0
- data/pages/Compatibility.md +49 -0
- data/pages/Custom.md +37 -0
- data/pages/Encoding.md +61 -0
- data/pages/InstallOptions.md +20 -0
- data/pages/JsonGem.md +60 -0
- data/pages/Modes.md +94 -0
- data/pages/Options.md +339 -0
- data/pages/Parser.md +134 -0
- data/pages/Rails.md +85 -0
- data/pages/Security.md +43 -0
- data/pages/WAB.md +12 -0
- metadata +242 -0
data/pages/Parser.md
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Oj::Parser API
|
|
2
|
+
|
|
3
|
+
The `Oj::Parser` API provides high-performance JSON parsing with isolated configuration.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Unlike `Oj.load()` which uses global default options, `Oj::Parser` allows creating
|
|
8
|
+
separate parser instances, each with its own configuration. This provides:
|
|
9
|
+
|
|
10
|
+
- **No option leakage** between different use cases
|
|
11
|
+
- **Better performance** by avoiding per-call option processing
|
|
12
|
+
- **Cleaner API** with method-based option setting
|
|
13
|
+
|
|
14
|
+
## Creating Parsers
|
|
15
|
+
|
|
16
|
+
```ruby
|
|
17
|
+
require 'oj_windows'
|
|
18
|
+
|
|
19
|
+
# Validation parser
|
|
20
|
+
validator = Oj::Parser.new(:validate)
|
|
21
|
+
|
|
22
|
+
# Callback parser (SAJ-style)
|
|
23
|
+
saj_parser = Oj::Parser.new(:saj)
|
|
24
|
+
|
|
25
|
+
# Object builder parser
|
|
26
|
+
usual_parser = Oj::Parser.new(:usual)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Parser Types
|
|
30
|
+
|
|
31
|
+
### :validate
|
|
32
|
+
|
|
33
|
+
Validates JSON without building Ruby objects. Fastest option when you only need
|
|
34
|
+
to check if JSON is well-formed.
|
|
35
|
+
|
|
36
|
+
```ruby
|
|
37
|
+
parser = Oj::Parser.new(:validate)
|
|
38
|
+
parser.parse('{"valid": true}') # Returns nil, no exception = valid
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### :saj (Callback)
|
|
42
|
+
|
|
43
|
+
Provides callbacks for each JSON element. Compatible with `Oj::Saj` handlers.
|
|
44
|
+
|
|
45
|
+
```ruby
|
|
46
|
+
class MyHandler < Oj::Saj
|
|
47
|
+
def hash_start(key); end
|
|
48
|
+
def hash_end(key); end
|
|
49
|
+
def array_start(key); end
|
|
50
|
+
def array_end(key); end
|
|
51
|
+
def add_value(value, key); end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
parser = Oj::Parser.new(:saj)
|
|
55
|
+
parser.handler = MyHandler.new
|
|
56
|
+
parser.parse(json_string)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### :usual
|
|
60
|
+
|
|
61
|
+
Builds Ruby objects from JSON. The most common parser type.
|
|
62
|
+
|
|
63
|
+
```ruby
|
|
64
|
+
parser = Oj::Parser.new(:usual)
|
|
65
|
+
parser.symbol_keys = true
|
|
66
|
+
parser.cache_keys = true
|
|
67
|
+
|
|
68
|
+
data = parser.parse('{"name": "test"}')
|
|
69
|
+
# => {:name => "test"}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Configuration Options
|
|
73
|
+
|
|
74
|
+
Set options as methods on the parser instance:
|
|
75
|
+
|
|
76
|
+
```ruby
|
|
77
|
+
parser = Oj::Parser.new(:usual)
|
|
78
|
+
parser.symbol_keys = true # Use Symbol keys instead of String
|
|
79
|
+
parser.cache_keys = true # Cache frequently used keys
|
|
80
|
+
parser.cache_strings = 6 # Cache strings up to length 6
|
|
81
|
+
parser.create_id = '^o' # Object creation identifier
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Performance
|
|
85
|
+
|
|
86
|
+
Benchmarks on Windows with Ruby 3.4.8 MSVC (50,000 iterations):
|
|
87
|
+
|
|
88
|
+
### Validation
|
|
89
|
+
```
|
|
90
|
+
System time (secs) rate (ops/sec)
|
|
91
|
+
------------------- ----------- --------------
|
|
92
|
+
Oj::Saj.none 0.087 575904.833
|
|
93
|
+
Oj::Parser.validate 0.093 535818.388
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Callback (SAJ)
|
|
97
|
+
```
|
|
98
|
+
System time (secs) rate (ops/sec)
|
|
99
|
+
-------------- ----------- --------------
|
|
100
|
+
Oj::Parser.saj 0.623 80316.627
|
|
101
|
+
Oj::Saj.all 0.893 55984.415
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
`Oj::Parser.new(:saj)` is **1.43x** faster than `Oj.saj_parse`.
|
|
105
|
+
|
|
106
|
+
### Parse to Primitives
|
|
107
|
+
```
|
|
108
|
+
System time (secs) rate (ops/sec)
|
|
109
|
+
---------------- ----------- --------------
|
|
110
|
+
Oj::Parser.usual 0.329 152133.829
|
|
111
|
+
JSON::Ext 0.337 148264.387
|
|
112
|
+
Oj::strict_load 0.528 94769.267
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
`Oj::Parser.new(:usual)` is **1.03x** faster than JSON::Ext.
|
|
116
|
+
|
|
117
|
+
### Object Parsing
|
|
118
|
+
```
|
|
119
|
+
System time (secs) rate (ops/sec)
|
|
120
|
+
---------------- ----------- --------------
|
|
121
|
+
Oj::Parser.usual 0.054 921939.392
|
|
122
|
+
JSON::Ext 0.076 656601.405
|
|
123
|
+
Oj::compat_load 0.142 352839.974
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
`Oj::Parser.new(:usual)` is **1.40x** faster than JSON::Ext and
|
|
127
|
+
**2.61x** faster than `Oj.compat_load`.
|
|
128
|
+
|
|
129
|
+
## Summary
|
|
130
|
+
|
|
131
|
+
On Windows MSVC Ruby 3.4.8, `Oj::Parser` provides:
|
|
132
|
+
- Up to **2.6x faster** parsing than legacy Oj methods
|
|
133
|
+
- Isolated configuration per parser instance
|
|
134
|
+
- Better memory efficiency through caching
|
data/pages/Rails.md
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Rails Integration
|
|
2
|
+
|
|
3
|
+
`oj_windows` provides seamless integration with Rails and ActiveSupport on Windows MSVC Ruby.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
Add this to a Rails initializer to replace Rails' JSON handling with `oj_windows`:
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
require 'oj_windows'
|
|
11
|
+
|
|
12
|
+
Oj.optimize_rails()
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
This single call:
|
|
16
|
+
- Sets `oj_windows` as the JSON encoder
|
|
17
|
+
- Sets `oj_windows` as the JSON decoder
|
|
18
|
+
- Optimizes common Rails types
|
|
19
|
+
- Mimics the JSON gem interface
|
|
20
|
+
|
|
21
|
+
## Manual Setup
|
|
22
|
+
|
|
23
|
+
For more control, configure each component separately:
|
|
24
|
+
|
|
25
|
+
```ruby
|
|
26
|
+
require 'oj_windows'
|
|
27
|
+
|
|
28
|
+
Oj::Rails.set_encoder() # Use Oj for encoding
|
|
29
|
+
Oj::Rails.set_decoder() # Use Oj for decoding
|
|
30
|
+
Oj::Rails.optimize() # Optimize common types
|
|
31
|
+
Oj::Rails.mimic_JSON() # Mimic JSON gem interface
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Optimized Types
|
|
35
|
+
|
|
36
|
+
When `Oj::Rails.optimize()` is called, these types use fast native encoding:
|
|
37
|
+
|
|
38
|
+
| Type | Description |
|
|
39
|
+
|------|-------------|
|
|
40
|
+
| Array | Ruby arrays |
|
|
41
|
+
| BigDecimal | Arbitrary precision decimals |
|
|
42
|
+
| Float | Floating point numbers |
|
|
43
|
+
| Hash | Ruby hashes |
|
|
44
|
+
| Range | Range objects |
|
|
45
|
+
| Regexp | Regular expressions |
|
|
46
|
+
| Time | Time objects |
|
|
47
|
+
| ActiveSupport::TimeWithZone | Rails time zones |
|
|
48
|
+
| ActionController::Parameters | Controller params |
|
|
49
|
+
| ActiveRecord::Base subclasses | Model instances |
|
|
50
|
+
|
|
51
|
+
## ActiveSupport Globals
|
|
52
|
+
|
|
53
|
+
`oj_windows` honors these ActiveSupport encoding globals:
|
|
54
|
+
|
|
55
|
+
```ruby
|
|
56
|
+
ActiveSupport::JSON::Encoding.use_standard_json_time_format
|
|
57
|
+
ActiveSupport::JSON::Encoding.escape_html_entities_in_json
|
|
58
|
+
ActiveSupport::JSON::Encoding.time_precision
|
|
59
|
+
ActiveSupport::JSON::Encoding.json_encoder
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Verifying Oj is Active
|
|
63
|
+
|
|
64
|
+
To confirm `oj_windows` is handling JSON encoding, enable tracing:
|
|
65
|
+
|
|
66
|
+
```ruby
|
|
67
|
+
require 'oj_windows'
|
|
68
|
+
|
|
69
|
+
Oj.default_options = { trace: true }
|
|
70
|
+
Oj.optimize_rails()
|
|
71
|
+
|
|
72
|
+
Time.now.to_json # Will output trace information
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Notes
|
|
76
|
+
|
|
77
|
+
1. **Float Precision**: Optimized floats use 16 significant digits (Ruby's json gem may use 16 or 17 depending on value)
|
|
78
|
+
|
|
79
|
+
2. **Hash Key Collisions**: Optimized hashes don't check for duplicate keys after `to_s()` conversion
|
|
80
|
+
|
|
81
|
+
3. **Rails Mode**: Calling `Oj.optimize_rails()` doesn't change the default Oj mode. To also use Rails mode for direct Oj calls:
|
|
82
|
+
|
|
83
|
+
```ruby
|
|
84
|
+
Oj.default_options = { mode: :rails }
|
|
85
|
+
```
|
data/pages/Security.md
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Security Considerations
|
|
2
|
+
|
|
3
|
+
When parsing JSON from untrusted sources, certain `oj_windows` options should be used with caution.
|
|
4
|
+
|
|
5
|
+
## Potential Vulnerabilities
|
|
6
|
+
|
|
7
|
+
### Symbol Keys
|
|
8
|
+
The `:symbol_keys` option converts JSON keys to Ruby Symbols. In Ruby versions before 2.2, Symbols are not garbage collected, which could lead to memory exhaustion from malicious input.
|
|
9
|
+
|
|
10
|
+
### Auto-Define Classes
|
|
11
|
+
The `:auto_define` option automatically creates Ruby classes from JSON. While useful during development, this can exhaust memory if an attacker sends JSON with many unique class names.
|
|
12
|
+
|
|
13
|
+
## Safe Parsing
|
|
14
|
+
|
|
15
|
+
For untrusted input, use `Oj.safe_load()` which applies the strictest, safest options:
|
|
16
|
+
|
|
17
|
+
```ruby
|
|
18
|
+
require 'oj_windows'
|
|
19
|
+
|
|
20
|
+
# Safe parsing of untrusted JSON
|
|
21
|
+
data = Oj.safe_load(untrusted_json_string)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Best Practices
|
|
25
|
+
|
|
26
|
+
1. **Use `safe_load()` for untrusted input** - applies safest defaults
|
|
27
|
+
2. **Avoid `:symbol_keys` with untrusted data** - prevents Symbol table exhaustion
|
|
28
|
+
3. **Disable `:auto_define` in production** - prevents arbitrary class creation
|
|
29
|
+
4. **Validate parsed data** - always validate structure and types after parsing
|
|
30
|
+
5. **Set `:max_nesting`** - limit depth to prevent stack overflow attacks
|
|
31
|
+
|
|
32
|
+
## Object Mode Considerations
|
|
33
|
+
|
|
34
|
+
In `:object` mode, `oj_windows` can deserialize Ruby objects from JSON. While no methods are called during deserialization, you should always validate the resulting objects before using them.
|
|
35
|
+
|
|
36
|
+
```ruby
|
|
37
|
+
# Safe: strict mode only creates native JSON types
|
|
38
|
+
data = Oj.strict_load(json_string)
|
|
39
|
+
|
|
40
|
+
# Caution: object mode creates Ruby objects
|
|
41
|
+
obj = Oj.object_load(json_string)
|
|
42
|
+
# Validate obj before using
|
|
43
|
+
```
|
data/pages/WAB.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# WAB mode
|
|
2
|
+
|
|
3
|
+
The `:wab` mode ignores all options except the indent option. Performance of
|
|
4
|
+
this mode is slightly faster than the :strict and :null modes. It is designed for Web Application Builder (WAB) style data exchange.
|
|
5
|
+
|
|
6
|
+
Options other than the indentation are not supported since the encoding and
|
|
7
|
+
formats are defined by the API that is used to encode data being passed from
|
|
8
|
+
one component in a WAB system and allowing an option that would break the
|
|
9
|
+
data exchange is best not supported.
|
|
10
|
+
|
|
11
|
+
The mode encodes like the strict mode except the URI, Time, WAB::UUID, and
|
|
12
|
+
BigDecimal are supported.
|
metadata
ADDED
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: oj_windows
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 3.16.15
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- tigel
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: bigdecimal
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '3.0'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '3.0'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: ostruct
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '0.2'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - ">="
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '0.2'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: minitest
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '5'
|
|
47
|
+
type: :development
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '5'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: rake-compiler
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - ">="
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '0.9'
|
|
61
|
+
- - "<"
|
|
62
|
+
- !ruby/object:Gem::Version
|
|
63
|
+
version: '2.0'
|
|
64
|
+
type: :development
|
|
65
|
+
prerelease: false
|
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
67
|
+
requirements:
|
|
68
|
+
- - ">="
|
|
69
|
+
- !ruby/object:Gem::Version
|
|
70
|
+
version: '0.9'
|
|
71
|
+
- - "<"
|
|
72
|
+
- !ruby/object:Gem::Version
|
|
73
|
+
version: '2.0'
|
|
74
|
+
- !ruby/object:Gem::Dependency
|
|
75
|
+
name: test-unit
|
|
76
|
+
requirement: !ruby/object:Gem::Requirement
|
|
77
|
+
requirements:
|
|
78
|
+
- - "~>"
|
|
79
|
+
- !ruby/object:Gem::Version
|
|
80
|
+
version: '3.0'
|
|
81
|
+
type: :development
|
|
82
|
+
prerelease: false
|
|
83
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
84
|
+
requirements:
|
|
85
|
+
- - "~>"
|
|
86
|
+
- !ruby/object:Gem::Version
|
|
87
|
+
version: '3.0'
|
|
88
|
+
description: oj_windows is a Windows-exclusive fork of the Oj gem, optimized for Ruby
|
|
89
|
+
compiled with MSVC (Visual Studio). Provides fast JSON parsing/serialization with
|
|
90
|
+
full Rails and JSON gem compatibility. Requires Ruby 3.4+ built with MSVC toolchain.
|
|
91
|
+
email: tigel-agm@tigel.com
|
|
92
|
+
executables: []
|
|
93
|
+
extensions:
|
|
94
|
+
- ext/oj_windows/extconf.rb
|
|
95
|
+
extra_rdoc_files:
|
|
96
|
+
- CHANGELOG.md
|
|
97
|
+
- LICENSE
|
|
98
|
+
- README.md
|
|
99
|
+
- pages/Advanced.md
|
|
100
|
+
- pages/Compatibility.md
|
|
101
|
+
- pages/Custom.md
|
|
102
|
+
- pages/Encoding.md
|
|
103
|
+
- pages/InstallOptions.md
|
|
104
|
+
- pages/JsonGem.md
|
|
105
|
+
- pages/Modes.md
|
|
106
|
+
- pages/Options.md
|
|
107
|
+
- pages/Parser.md
|
|
108
|
+
- pages/Rails.md
|
|
109
|
+
- pages/Security.md
|
|
110
|
+
- pages/WAB.md
|
|
111
|
+
files:
|
|
112
|
+
- CHANGELOG.md
|
|
113
|
+
- LICENSE
|
|
114
|
+
- README.md
|
|
115
|
+
- ext/oj_windows/buf.h
|
|
116
|
+
- ext/oj_windows/cache.c
|
|
117
|
+
- ext/oj_windows/cache.h
|
|
118
|
+
- ext/oj_windows/cache8.c
|
|
119
|
+
- ext/oj_windows/cache8.h
|
|
120
|
+
- ext/oj_windows/circarray.c
|
|
121
|
+
- ext/oj_windows/circarray.h
|
|
122
|
+
- ext/oj_windows/code.c
|
|
123
|
+
- ext/oj_windows/code.h
|
|
124
|
+
- ext/oj_windows/compat.c
|
|
125
|
+
- ext/oj_windows/custom.c
|
|
126
|
+
- ext/oj_windows/debug.c
|
|
127
|
+
- ext/oj_windows/dump.c
|
|
128
|
+
- ext/oj_windows/dump.h
|
|
129
|
+
- ext/oj_windows/dump_compat.c
|
|
130
|
+
- ext/oj_windows/dump_leaf.c
|
|
131
|
+
- ext/oj_windows/dump_object.c
|
|
132
|
+
- ext/oj_windows/dump_strict.c
|
|
133
|
+
- ext/oj_windows/encode.h
|
|
134
|
+
- ext/oj_windows/err.c
|
|
135
|
+
- ext/oj_windows/err.h
|
|
136
|
+
- ext/oj_windows/extconf.rb
|
|
137
|
+
- ext/oj_windows/fast.c
|
|
138
|
+
- ext/oj_windows/intern.c
|
|
139
|
+
- ext/oj_windows/intern.h
|
|
140
|
+
- ext/oj_windows/mem.c
|
|
141
|
+
- ext/oj_windows/mem.h
|
|
142
|
+
- ext/oj_windows/mimic_json.c
|
|
143
|
+
- ext/oj_windows/object.c
|
|
144
|
+
- ext/oj_windows/odd.c
|
|
145
|
+
- ext/oj_windows/odd.h
|
|
146
|
+
- ext/oj_windows/oj.c
|
|
147
|
+
- ext/oj_windows/oj.h
|
|
148
|
+
- ext/oj_windows/parse.c
|
|
149
|
+
- ext/oj_windows/parse.h
|
|
150
|
+
- ext/oj_windows/parser.c
|
|
151
|
+
- ext/oj_windows/parser.h
|
|
152
|
+
- ext/oj_windows/rails.c
|
|
153
|
+
- ext/oj_windows/rails.h
|
|
154
|
+
- ext/oj_windows/reader.c
|
|
155
|
+
- ext/oj_windows/reader.h
|
|
156
|
+
- ext/oj_windows/resolve.c
|
|
157
|
+
- ext/oj_windows/resolve.h
|
|
158
|
+
- ext/oj_windows/rxclass.c
|
|
159
|
+
- ext/oj_windows/rxclass.h
|
|
160
|
+
- ext/oj_windows/saj.c
|
|
161
|
+
- ext/oj_windows/saj2.c
|
|
162
|
+
- ext/oj_windows/saj2.h
|
|
163
|
+
- ext/oj_windows/scp.c
|
|
164
|
+
- ext/oj_windows/simd.h
|
|
165
|
+
- ext/oj_windows/sparse.c
|
|
166
|
+
- ext/oj_windows/stream_writer.c
|
|
167
|
+
- ext/oj_windows/strict.c
|
|
168
|
+
- ext/oj_windows/string_writer.c
|
|
169
|
+
- ext/oj_windows/trace.c
|
|
170
|
+
- ext/oj_windows/trace.h
|
|
171
|
+
- ext/oj_windows/usual.c
|
|
172
|
+
- ext/oj_windows/usual.h
|
|
173
|
+
- ext/oj_windows/util.c
|
|
174
|
+
- ext/oj_windows/util.h
|
|
175
|
+
- ext/oj_windows/val_stack.c
|
|
176
|
+
- ext/oj_windows/val_stack.h
|
|
177
|
+
- ext/oj_windows/validate.c
|
|
178
|
+
- ext/oj_windows/wab.c
|
|
179
|
+
- lib/oj/active_support_helper.rb
|
|
180
|
+
- lib/oj/bag.rb
|
|
181
|
+
- lib/oj/easy_hash.rb
|
|
182
|
+
- lib/oj/error.rb
|
|
183
|
+
- lib/oj/json.rb
|
|
184
|
+
- lib/oj/mimic.rb
|
|
185
|
+
- lib/oj/saj.rb
|
|
186
|
+
- lib/oj/schandler.rb
|
|
187
|
+
- lib/oj/state.rb
|
|
188
|
+
- lib/oj/version.rb
|
|
189
|
+
- lib/oj_windows.rb
|
|
190
|
+
- lib/oj_windows/active_support_helper.rb
|
|
191
|
+
- lib/oj_windows/bag.rb
|
|
192
|
+
- lib/oj_windows/easy_hash.rb
|
|
193
|
+
- lib/oj_windows/error.rb
|
|
194
|
+
- lib/oj_windows/json.rb
|
|
195
|
+
- lib/oj_windows/mimic.rb
|
|
196
|
+
- lib/oj_windows/saj.rb
|
|
197
|
+
- lib/oj_windows/schandler.rb
|
|
198
|
+
- lib/oj_windows/state.rb
|
|
199
|
+
- lib/oj_windows/version.rb
|
|
200
|
+
- pages/Advanced.md
|
|
201
|
+
- pages/Compatibility.md
|
|
202
|
+
- pages/Custom.md
|
|
203
|
+
- pages/Encoding.md
|
|
204
|
+
- pages/InstallOptions.md
|
|
205
|
+
- pages/JsonGem.md
|
|
206
|
+
- pages/Modes.md
|
|
207
|
+
- pages/Options.md
|
|
208
|
+
- pages/Parser.md
|
|
209
|
+
- pages/Rails.md
|
|
210
|
+
- pages/Security.md
|
|
211
|
+
- pages/WAB.md
|
|
212
|
+
homepage: https://github.com/tigel-agm/oj_windows
|
|
213
|
+
licenses:
|
|
214
|
+
- MIT
|
|
215
|
+
metadata:
|
|
216
|
+
bug_tracker_uri: https://github.com/tigel-agm/oj_windows/issues
|
|
217
|
+
changelog_uri: https://github.com/tigel-agm/oj_windows/blob/main/CHANGELOG.md
|
|
218
|
+
documentation_uri: https://github.com/tigel-agm/oj_windows/blob/main/README.md
|
|
219
|
+
source_code_uri: https://github.com/tigel-agm/oj_windows
|
|
220
|
+
rubygems_mfa_required: 'true'
|
|
221
|
+
rdoc_options:
|
|
222
|
+
- "--title"
|
|
223
|
+
- oj_windows
|
|
224
|
+
- "--main"
|
|
225
|
+
- README.md
|
|
226
|
+
require_paths:
|
|
227
|
+
- lib
|
|
228
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
229
|
+
requirements:
|
|
230
|
+
- - ">="
|
|
231
|
+
- !ruby/object:Gem::Version
|
|
232
|
+
version: '3.4'
|
|
233
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
234
|
+
requirements:
|
|
235
|
+
- - ">="
|
|
236
|
+
- !ruby/object:Gem::Version
|
|
237
|
+
version: '0'
|
|
238
|
+
requirements: []
|
|
239
|
+
rubygems_version: 3.6.9
|
|
240
|
+
specification_version: 4
|
|
241
|
+
summary: High-performance JSON parser for Windows MSVC Ruby
|
|
242
|
+
test_files: []
|