jsonapi_parameters 0.0.4 → 0.1.0
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 140d60d07ed8488d9009e2c0e0757b1fbcf14596d79dc552c48c9212980985fd
|
4
|
+
data.tar.gz: 3480f41f044a29d8d2db32aa64ab10af535997fa5cb772ca1080372abb798e4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8accb91454be6e686e29b4fbee76e9185df0dc2689ac50292d8098fa4f42fff9f4f8059a7c33aa389455776b7dcf8eb081ed0f472ef1e3fcd19a358f9875dac4
|
7
|
+
data.tar.gz: 39600f7081909c9bd5be6a16694e9db09f70b53e1e8d8126fa41fcacc9666232f68d1e16196993213cb943e7875fde0308ade0dfec889a625f254ff117ef2ad8
|
data/README.md
CHANGED
@@ -56,9 +56,24 @@ With jsonapi_parameters, the difference is just the params:
|
|
56
56
|
|
57
57
|
```ruby
|
58
58
|
def create_params
|
59
|
-
params.
|
59
|
+
params.from_jsonapi.require(:model).permit(:name)
|
60
60
|
end
|
61
|
-
```
|
61
|
+
```
|
62
|
+
|
63
|
+
#### Casing
|
64
|
+
|
65
|
+
If the input is in a different convention than `:snake`, you should specify that.
|
66
|
+
|
67
|
+
You can do it in two ways:
|
68
|
+
* in an initializer, simply create `initializers/jsonapi_parameters.rb` with contents similar to:
|
69
|
+
```ruby
|
70
|
+
# config/initializers/jsonapi_parameters.rb
|
71
|
+
|
72
|
+
JsonApi::Parameters.ensure_underscore_translation = true
|
73
|
+
|
74
|
+
```
|
75
|
+
|
76
|
+
* while calling `.from_jsonapi`, for instance: `.from_jsonapi(:camel)`. **The value does not really matter, as anything different than `:snake` will result in deep keys transformation provided by [ActiveSupport](https://apidock.com/rails/v4.1.8/Hash/deep_transform_keys).**
|
62
77
|
|
63
78
|
### Plain Ruby / outside Rails
|
64
79
|
|
@@ -76,5 +91,14 @@ translator = Translator.new
|
|
76
91
|
translator.jsonapify(params)
|
77
92
|
```
|
78
93
|
|
94
|
+
#### Casing
|
95
|
+
|
96
|
+
If the input is in a different convention than `:snake`, you should specify that.
|
97
|
+
|
98
|
+
You can do it in two ways:
|
99
|
+
|
100
|
+
* by a global setting: `JsonApi::Parameters.ensure_underscore_translation = true`
|
101
|
+
* while calling `.jsonapify`, for instance: `.jsonapify(params, naming_convention: :camel)`. **The value does not really matter, as anything different than `:snake` will result in deep keys transformation provided by [ActiveSupport](https://apidock.com/rails/v4.1.8/Hash/deep_transform_keys).**
|
102
|
+
|
79
103
|
## License
|
80
104
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
@@ -3,7 +3,13 @@ require 'action_controller'
|
|
3
3
|
class ActionController::Parameters
|
4
4
|
include JsonApi::Parameters
|
5
5
|
|
6
|
-
def to_jsonapi
|
7
|
-
|
6
|
+
def to_jsonapi(*args)
|
7
|
+
warn "WARNING: #to_jsonapi method is deprecated. Please use #from_jsonapi instead.\n#{caller(1..1).first}"
|
8
|
+
|
9
|
+
from_jsonapi(*args)
|
10
|
+
end
|
11
|
+
|
12
|
+
def from_jsonapi(naming_convention = :snake)
|
13
|
+
@from_jsonapi ||= self.class.new jsonapify(self, naming_convention: naming_convention)
|
8
14
|
end
|
9
15
|
end
|
@@ -1,16 +1,20 @@
|
|
1
1
|
module JsonApi::Parameters
|
2
|
-
def jsonapify(params)
|
3
|
-
jsonapi_translate(params)
|
2
|
+
def jsonapify(params, naming_convention: :snake)
|
3
|
+
jsonapi_translate(params, naming_convention: naming_convention)
|
4
4
|
end
|
5
5
|
|
6
6
|
private
|
7
7
|
|
8
|
-
def jsonapi_translate(params)
|
8
|
+
def jsonapi_translate(params, naming_convention:)
|
9
9
|
params = params.to_unsafe_h if params.is_a?(ActionController::Parameters)
|
10
10
|
|
11
11
|
return params if params.nil? || params.empty?
|
12
12
|
|
13
|
-
@jsonapi_unsafe_hash =
|
13
|
+
@jsonapi_unsafe_hash = if naming_convention != :snake || JsonApi::Parameters.ensure_underscore_translation
|
14
|
+
params.deep_transform_keys { |key| key.to_s.underscore.to_sym }
|
15
|
+
else
|
16
|
+
params.deep_symbolize_keys
|
17
|
+
end
|
14
18
|
|
15
19
|
formed_parameters
|
16
20
|
end
|
metadata
CHANGED
@@ -1,29 +1,44 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jsonapi_parameters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
+
- Visuality
|
7
8
|
- marahin
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2019-
|
12
|
+
date: 2019-04-24 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
+
name: activesupport
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
18
|
- - ">="
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version: 4.
|
20
|
+
version: 4.1.8
|
20
21
|
type: :runtime
|
21
22
|
prerelease: false
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
23
24
|
requirements:
|
24
25
|
- - ">="
|
25
26
|
- !ruby/object:Gem::Version
|
26
|
-
version: 4.
|
27
|
+
version: 4.1.8
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: json
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '2.0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '2.0'
|
27
42
|
- !ruby/object:Gem::Dependency
|
28
43
|
name: sqlite3
|
29
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,6 +53,34 @@ dependencies:
|
|
38
53
|
- - "~>"
|
39
54
|
- !ruby/object:Gem::Version
|
40
55
|
version: 1.3.13
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: database_cleaner
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 1.7.0
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 1.7.0
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rails
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 4.1.8
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: 4.1.8
|
41
84
|
- !ruby/object:Gem::Dependency
|
42
85
|
name: rspec
|
43
86
|
requirement: !ruby/object:Gem::Requirement
|
@@ -181,6 +224,7 @@ dependencies:
|
|
181
224
|
description: JsonApi::Parameters allows you to easily translate JSON:API compliant
|
182
225
|
parameters to a structure expected by Rails.
|
183
226
|
email:
|
227
|
+
- contact@visuality.pl
|
184
228
|
- me@marahin.pl
|
185
229
|
executables: []
|
186
230
|
extensions: []
|