jsonapi-serializer-formats 0.0.2 → 0.0.3
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/lib/jsonapi-serializer-formats.rb +52 -30
- metadata +4 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e468d2540d03110000fb78f815e77e4f504e7d658c26b69ebe702e336b04a7b
|
4
|
+
data.tar.gz: ad8a4b37c9299456f3377ccafef60f013af66cab63cacec4b186365160d01491
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3fb1e17e45b0e95532701c2cadde4e8f6265f2e085f416e3c0dbbf13a009dd088ed6b3e52de05c58cb8c5450328033f7657b07fddf145c918e2b0a7e56b96265
|
7
|
+
data.tar.gz: f9760c0f1e2dd4d96c3a3429d150e1e42159546c136d2421ee44a31cda5fb87e7afb7a065c4659887d286905fb440b03c6c637a9649fe34efeace4e62ab6758f
|
@@ -1,54 +1,76 @@
|
|
1
1
|
module JSONAPI
|
2
2
|
module Formats
|
3
|
-
|
4
|
-
"hi"
|
5
|
-
end
|
3
|
+
extend ActiveSupport::Concern
|
6
4
|
|
7
|
-
|
5
|
+
included do
|
6
|
+
class << self
|
8
7
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
8
|
+
def scoped_formats
|
9
|
+
@@scoped_formats ||= []
|
10
|
+
end
|
11
|
+
|
12
|
+
# --- Override the attribute and relationship methods to support contexts
|
13
|
+
|
14
|
+
[
|
15
|
+
:attributes,
|
16
|
+
:belongs_to,
|
17
|
+
:has_many,
|
18
|
+
:has_one
|
19
|
+
].each do |method_name|
|
20
|
+
|
21
|
+
original_method_name = "jsonapi_#{method_name}".to_sym
|
22
|
+
|
23
|
+
alias_method original_method_name, method_name
|
24
|
+
|
25
|
+
define_method(method_name) do |*attributes_list, &block|
|
22
26
|
formats = [*scoped_formats]
|
23
27
|
|
24
28
|
if formats.length.positive?
|
29
|
+
|
30
|
+
# --- Read options hash (if present)
|
31
|
+
|
25
32
|
opts = attributes_list.last
|
26
33
|
unless opts.is_a?(Hash)
|
27
34
|
opts = {}
|
28
35
|
attributes_list << opts
|
29
36
|
end
|
30
|
-
|
37
|
+
|
38
|
+
# --- Inject an :if condition
|
39
|
+
|
31
40
|
cond = opts[:if]
|
32
41
|
opts[:if] = Proc.new do |_, params = {}|
|
33
|
-
|
42
|
+
if cond.present? && !cond.call(_, params)
|
43
|
+
next false # --- The user's condition failed
|
44
|
+
end
|
45
|
+
|
34
46
|
render_formats = [params[:format]].compact.flatten
|
35
|
-
|
47
|
+
|
48
|
+
# --- Return true if the user passed the require formats as params
|
49
|
+
|
36
50
|
formats.all? { |f| render_formats.include?(f) }
|
37
51
|
end
|
38
52
|
end
|
39
53
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
def format(fmt)
|
44
|
-
scoped_formats.push(fmt)
|
45
|
-
yield
|
46
|
-
ensure
|
47
|
-
scoped_formats.pop
|
54
|
+
# --- Call the original method
|
55
|
+
|
56
|
+
send(original_method_name, *attributes_list, &block)
|
48
57
|
end
|
49
|
-
|
50
|
-
alias_method :attribute, :attributes
|
51
58
|
end
|
59
|
+
|
60
|
+
#
|
61
|
+
# Defines a named format with a block
|
62
|
+
#
|
63
|
+
# @param [Symbol] fmt the name of the format you wish to create
|
64
|
+
#
|
65
|
+
#
|
66
|
+
def format(fmt)
|
67
|
+
scoped_formats.push(fmt)
|
68
|
+
yield
|
69
|
+
ensure
|
70
|
+
scoped_formats.pop
|
71
|
+
end
|
72
|
+
|
73
|
+
alias_method :attribute, :attributes
|
52
74
|
end
|
53
75
|
end
|
54
76
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jsonapi-serializer-formats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patrick Rabier
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.1
|
19
|
+
version: '2.1'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.1
|
26
|
+
version: '2.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activesupport
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,20 +38,6 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '4.2'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: activerecord
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: bundler
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,20 +108,6 @@ dependencies:
|
|
122
108
|
- - ">="
|
123
109
|
- !ruby/object:Gem::Version
|
124
110
|
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: sqlite3
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - ">="
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
111
|
description: " A module to enrich JSON:API Serializers (https://github.com/jsonapi-serializer)
|
140
112
|
with configurable formats\n"
|
141
113
|
email: patrick@tronica.io
|
@@ -166,5 +138,5 @@ requirements: []
|
|
166
138
|
rubygems_version: 3.2.3
|
167
139
|
signing_key:
|
168
140
|
specification_version: 4
|
169
|
-
summary: Adds
|
141
|
+
summary: Adds 'formats' to JSON::API Serializers
|
170
142
|
test_files: []
|