json_data_extractor 0.0.10 → 0.0.11
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 +4 -4
- data/README.md +32 -9
- data/lib/json_data_extractor.rb +14 -0
- data/lib/src/configuration.rb +9 -0
- data/lib/src/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aeef2dddd8e11795c682d9db785b955164fbab87e4dc1c63843ba02a76b65905
|
4
|
+
data.tar.gz: e17a062f72e0ae56bc09b42ccaa237c12149b667b63dfb0e58a60dd3ea8e5830
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b574bc9f7c79a4405d7b86739e1bf50e0ccbc82f1016befedf3e5bbb0da040db263492ee8978cd3d83957546d47338980bcfba80770a620a9c637937675bad46
|
7
|
+
data.tar.gz: 2a83cf29049a8c4205851a83e12e0867f42ae684564c6bc7ae9e183b4399f9a2390f9be36724f137064bf8e76f74b30d977539fdb1c620972c05a949f19883f2
|
data/README.md
CHANGED
@@ -88,14 +88,16 @@ an optional modifier field that specifies one or more modifiers to apply to the
|
|
88
88
|
Modifiers are used to transform the data in some way before placing it in the output JSON.
|
89
89
|
|
90
90
|
Here's an example schema that extracts the authors and categories from a JSON structure similar to
|
91
|
-
the one used in the previous example
|
92
|
-
|
93
|
-
```
|
94
|
-
|
95
|
-
authors:
|
96
|
-
path: $.store.book[*].author
|
97
|
-
modifier: downcase
|
98
|
-
|
91
|
+
the one used in the previous example:
|
92
|
+
|
93
|
+
```json
|
94
|
+
{
|
95
|
+
"authors": {
|
96
|
+
"path": "$.store.book[*].author",
|
97
|
+
"modifier": "downcase"
|
98
|
+
},
|
99
|
+
"categories": "$..category"
|
100
|
+
}
|
99
101
|
```
|
100
102
|
|
101
103
|
The resulting json will be:
|
@@ -161,7 +163,8 @@ results = extractor.extract(schema)
|
|
161
163
|
```
|
162
164
|
|
163
165
|
Modifiers are called in the order in which they are defined, so keep that in mind when defining your
|
164
|
-
schema.
|
166
|
+
schema. By default JDE raises an ArgumentError if a modifier is not applicable, but this behaviour
|
167
|
+
can be configured to ignore missing modifiers. See Configuration options for details
|
165
168
|
|
166
169
|
### Nested schemas
|
167
170
|
|
@@ -186,6 +189,26 @@ E.g. this is a valid real-life schema with nested data:
|
|
186
189
|
}
|
187
190
|
}
|
188
191
|
```
|
192
|
+
Nested schema can be also applied to objects, not arrays. See specs for more examples.
|
193
|
+
|
194
|
+
## Configuration Options
|
195
|
+
The JsonDataExtractor gem provides a configuration option to control the behavior when encountering invalid modifiers.
|
196
|
+
|
197
|
+
### Strict Modifiers
|
198
|
+
By default, the gem operates in strict mode, which means that if an invalid modifier is encountered, an `ArgumentError` will be raised. This ensures that only valid modifiers are applied to the extracted data.
|
199
|
+
|
200
|
+
To change this behavior and allow the use of invalid modifiers without raising an error, you can configure the gem to operate in non-strict mode.
|
201
|
+
|
202
|
+
```ruby
|
203
|
+
JsonDataExtractor.configure do |config|
|
204
|
+
config.strict_modifiers = false
|
205
|
+
end
|
206
|
+
```
|
207
|
+
When `strict_modifiers` is set to `false`, any invalid modifiers will be ignored, and the original value will be returned without applying any modification.
|
208
|
+
|
209
|
+
It is important to note that enabling non-strict mode should be done with caution, as it can lead to unexpected behavior if there are typos or incorrect modifiers specified in the schema.
|
210
|
+
|
211
|
+
By default, `strict_modifiers` is set to `true`, providing a safe and strict behavior. However, you can customize this configuration option according to your specific needs.
|
189
212
|
|
190
213
|
## TODO
|
191
214
|
|
data/lib/json_data_extractor.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'src/version'
|
2
|
+
require 'src/configuration'
|
2
3
|
require 'jsonpath'
|
3
4
|
|
4
5
|
class JsonDataExtractor
|
@@ -88,8 +89,21 @@ class JsonDataExtractor
|
|
88
89
|
modifiers[modifier].call(value)
|
89
90
|
elsif value.respond_to?(modifier)
|
90
91
|
value.send(modifier)
|
92
|
+
elsif self.class.configuration.strict_modifiers
|
93
|
+
raise ArgumentError, "Invalid modifier: :#{modifier}"
|
91
94
|
else
|
92
95
|
value
|
93
96
|
end
|
94
97
|
end
|
98
|
+
|
99
|
+
|
100
|
+
class << self
|
101
|
+
def configuration
|
102
|
+
@configuration ||= Configuration.new
|
103
|
+
end
|
104
|
+
|
105
|
+
def configure
|
106
|
+
yield(configuration)
|
107
|
+
end
|
108
|
+
end
|
95
109
|
end
|
data/lib/src/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json_data_extractor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Max Buslaev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -116,6 +116,7 @@ files:
|
|
116
116
|
- bin/setup
|
117
117
|
- json_data_extractor.gemspec
|
118
118
|
- lib/json_data_extractor.rb
|
119
|
+
- lib/src/configuration.rb
|
119
120
|
- lib/src/version.rb
|
120
121
|
homepage: https://github.com/austerlitz/json_data_extractor
|
121
122
|
licenses:
|