porridge 0.2.2 → 0.3.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 +4 -4
- data/.idea/porridge.iml +7 -6
- data/CHANGELOG.md +14 -2
- data/Gemfile.lock +1 -1
- data/lib/porridge/array_serializer.rb +1 -1
- data/lib/porridge/factory.rb +34 -9
- data/lib/porridge/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 503570f42399fbe71c6029ae9f0de4571b03b743c4f325225317668389b115c2
|
|
4
|
+
data.tar.gz: 44b8eb58dde1f5e238dc308cc2274277a8139417fb7eac578a3cab140c24d15f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1428bc5610b0f3bd3ac28aa121154ba792f2dfae650ff93223427f1b21fce053e5bb0393da543fef2210b371f94d4d8277173fcd3151f89e7ec1a4c4b4874041
|
|
7
|
+
data.tar.gz: dd492f2c477bee6125c025f73b0450f636deaf5578949e434479a363b18e75f11719083213922f6fee8cfa7ce09446b66d8ea512e2bffb80bc11aaa04ce314fb
|
data/.idea/porridge.iml
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
</content>
|
|
12
12
|
<orderEntry type="inheritedJdk" />
|
|
13
13
|
<orderEntry type="sourceFolder" forTests="false" />
|
|
14
|
-
<orderEntry type="library" scope="PROVIDED" name="activesupport (
|
|
14
|
+
<orderEntry type="library" scope="PROVIDED" name="activesupport (v6.1.4.4, rbenv: 3.0.0) [gem]" level="application" />
|
|
15
15
|
<orderEntry type="library" scope="PROVIDED" name="ast (v2.4.2, rbenv: 3.0.0) [gem]" level="application" />
|
|
16
16
|
<orderEntry type="library" scope="PROVIDED" name="bundler (v2.2.25, rbenv: 3.0.0) [gem]" level="application" />
|
|
17
17
|
<orderEntry type="library" scope="PROVIDED" name="byebug (v11.1.3, rbenv: 3.0.0) [gem]" level="application" />
|
|
@@ -42,26 +42,27 @@
|
|
|
42
42
|
<orderEntry type="library" scope="PROVIDED" name="simplecov_json_formatter (v0.1.3, rbenv: 3.0.0) [gem]" level="application" />
|
|
43
43
|
<orderEntry type="library" scope="PROVIDED" name="tzinfo (v2.0.4, rbenv: 3.0.0) [gem]" level="application" />
|
|
44
44
|
<orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v2.1.0, rbenv: 3.0.0) [gem]" level="application" />
|
|
45
|
+
<orderEntry type="library" scope="PROVIDED" name="zeitwerk (v2.5.3, rbenv: 3.0.0) [gem]" level="application" />
|
|
45
46
|
</component>
|
|
46
47
|
<component name="RakeTasksCache">
|
|
47
48
|
<option name="myRootTask">
|
|
48
49
|
<RakeTaskImpl id="rake">
|
|
49
50
|
<subtasks>
|
|
50
|
-
<RakeTaskImpl description="Build porridge-0.2.
|
|
51
|
+
<RakeTaskImpl description="Build porridge-0.2.2.gem into the pkg directory" fullCommand="build" id="build" />
|
|
51
52
|
<RakeTaskImpl id="build">
|
|
52
53
|
<subtasks>
|
|
53
|
-
<RakeTaskImpl description="Generate SHA512 checksum if porridge-0.2.
|
|
54
|
+
<RakeTaskImpl description="Generate SHA512 checksum if porridge-0.2.2.gem into the checksums directory" fullCommand="build:checksum" id="checksum" />
|
|
54
55
|
</subtasks>
|
|
55
56
|
</RakeTaskImpl>
|
|
56
57
|
<RakeTaskImpl description="Remove any temporary products" fullCommand="clean" id="clean" />
|
|
57
58
|
<RakeTaskImpl description="Remove any generated files" fullCommand="clobber" id="clobber" />
|
|
58
|
-
<RakeTaskImpl description="Build and install porridge-0.2.
|
|
59
|
+
<RakeTaskImpl description="Build and install porridge-0.2.2.gem into system gems" fullCommand="install" id="install" />
|
|
59
60
|
<RakeTaskImpl id="install">
|
|
60
61
|
<subtasks>
|
|
61
|
-
<RakeTaskImpl description="Build and install porridge-0.2.
|
|
62
|
+
<RakeTaskImpl description="Build and install porridge-0.2.2.gem into system gems without network access" fullCommand="install:local" id="local" />
|
|
62
63
|
</subtasks>
|
|
63
64
|
</RakeTaskImpl>
|
|
64
|
-
<RakeTaskImpl description="Create tag v0.2.
|
|
65
|
+
<RakeTaskImpl description="Create tag v0.2.2 and build and push porridge-0.2.2.gem to rubygems.org" fullCommand="release[remote]" id="release[remote]" />
|
|
65
66
|
<RakeTaskImpl description="Run RuboCop" fullCommand="rubocop" id="rubocop" />
|
|
66
67
|
<RakeTaskImpl id="rubocop">
|
|
67
68
|
<subtasks>
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
2
|
|
|
3
|
-
## [0.
|
|
3
|
+
## [0.3.0] - 2022-01-21
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Added `Factory#attributes_field_serializer` to allow easy definition of multiple attributes at a time in serializer definition classes.
|
|
8
|
+
- Added `Factory#attribute_field_extractor` to simplify using either a `custom_extraction` or a `from_name_extractor`.
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Fixed bug where method alises in `Factory` were not respecting an overriden "source" method.
|
|
13
|
+
- Fixed bug where `ArraySerializer` counted hashes as arrays. Note that `ArraySerializer` **no longer counts `ActiveRecord::Relation` instances as arrays.** You must subclass `ArraySerializer` to attain this functionality.
|
|
14
|
+
|
|
15
|
+
## [0.2.2] - 2022-01-19
|
|
4
16
|
|
|
5
17
|
### Changed
|
|
6
18
|
|
|
@@ -14,7 +26,7 @@
|
|
|
14
26
|
|
|
15
27
|
## [0.2.0] - 2022-01-19
|
|
16
28
|
|
|
17
|
-
This is the initial functional release of the gem. Extractors, serializers, fields, field policies, and an elegant DSL over top were implemented
|
|
29
|
+
This is the initial functional release of the gem. Extractors, serializers, fields, field policies, and an elegant DSL over top were implemented.
|
|
18
30
|
|
|
19
31
|
## [0.1.0] - 2022-01-16
|
|
20
32
|
|
data/Gemfile.lock
CHANGED
data/lib/porridge/factory.rb
CHANGED
|
@@ -35,14 +35,24 @@ module Porridge
|
|
|
35
35
|
extractor callback
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
+
def attribute_extractor(name: nil, callback: nil, &block)
|
|
39
|
+
custom_extractor(callback || block) || from_name_extractor(name)
|
|
40
|
+
end
|
|
41
|
+
|
|
38
42
|
def association_extractor(serializer:, extractor: nil, extraction_name: nil, callback: nil, &block)
|
|
39
43
|
extractor SerializingExtractor.new(
|
|
40
|
-
extractor ||
|
|
44
|
+
extractor || attribute_extractor(name: extraction_name, callback: callback, &block),
|
|
41
45
|
serializer
|
|
42
46
|
)
|
|
43
47
|
end
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
|
|
49
|
+
def belongs_to_extractor(...)
|
|
50
|
+
association_extractor(...)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def has_many_extractor(...) # rubocop:disable Naming/PredicateName
|
|
54
|
+
association_extractor(...)
|
|
55
|
+
end
|
|
46
56
|
|
|
47
57
|
def serializer(base)
|
|
48
58
|
return nil if base.nil?
|
|
@@ -54,27 +64,42 @@ module Porridge
|
|
|
54
64
|
def chain_serializer(*bases)
|
|
55
65
|
serializer ChainSerializer.new(*bases)
|
|
56
66
|
end
|
|
57
|
-
|
|
67
|
+
|
|
68
|
+
def serializers(...)
|
|
69
|
+
chain_serializer(...)
|
|
70
|
+
end
|
|
58
71
|
|
|
59
72
|
def for_extracted_serializer(serializer, extractor)
|
|
60
73
|
serializer SerializerForExtracted.new(serializer, extractor)
|
|
61
74
|
end
|
|
62
|
-
|
|
75
|
+
|
|
76
|
+
def serializer_for_extracted(...)
|
|
77
|
+
for_extracted_serializer(...)
|
|
78
|
+
end
|
|
63
79
|
|
|
64
80
|
def field_serializer(name, extractor)
|
|
65
81
|
serializer FieldSerializer.new(name, extractor)
|
|
66
82
|
end
|
|
67
83
|
|
|
68
84
|
def attribute_field_serializer(name, callback = nil, extraction_name: nil, &block)
|
|
69
|
-
|
|
70
|
-
|
|
85
|
+
field_serializer(name, attribute_extractor(name: extraction_name || name, callback: callback, &block))
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def attributes_field_serializer(*names)
|
|
89
|
+
serializers(*names.map { |name| attribute_field_serializer(name) })
|
|
71
90
|
end
|
|
72
91
|
|
|
73
92
|
def association_field_serializer(name, options = {}, &block)
|
|
74
93
|
options[:extraction_name] ||= name
|
|
75
94
|
field_serializer(name, association_extractor(**options, &block))
|
|
76
95
|
end
|
|
77
|
-
|
|
78
|
-
|
|
96
|
+
|
|
97
|
+
def belongs_to_field_serializer(...)
|
|
98
|
+
association_field_serializer(...)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def has_many_field_serializer(...) # rubocop:disable Naming/PredicateName
|
|
102
|
+
association_field_serializer(...)
|
|
103
|
+
end
|
|
79
104
|
end
|
|
80
105
|
end
|
data/lib/porridge/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: porridge
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jacob
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-01-
|
|
11
|
+
date: 2022-01-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: byebug
|