u-struct 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +5 -5
  3. data/.rubocop.yml +129 -0
  4. data/.rubocop_todo.yml +10 -0
  5. data/.tool-versions +1 -0
  6. data/CHANGELOG.md +115 -27
  7. data/Gemfile +14 -3
  8. data/README.md +166 -62
  9. data/Rakefile +5 -5
  10. data/bin/console +3 -3
  11. data/bin/prepare_coverage +7 -9
  12. data/bin/run_ci +17 -0
  13. data/bin/tapioca +28 -0
  14. data/examples/rgb/number.rb +1 -1
  15. data/examples/rgb_1.rb +3 -3
  16. data/examples/rgb_2.rb +2 -2
  17. data/examples/rgb_3.rb +1 -1
  18. data/lib/micro/struct/factory/create_struct.rb +12 -5
  19. data/lib/micro/struct/factory/members.rb +1 -0
  20. data/lib/micro/struct/factory.rb +10 -5
  21. data/lib/micro/struct/features.rb +18 -23
  22. data/lib/micro/struct/normalize_names.rb +4 -3
  23. data/lib/micro/struct/version.rb +2 -1
  24. data/lib/micro/struct.rb +32 -5
  25. data/lib/u-struct.rb +2 -0
  26. data/rbi/micro/struct/factory/create_struct.rbi +60 -0
  27. data/rbi/micro/struct/factory/members.rbi +67 -0
  28. data/rbi/micro/struct/factory.rbi +41 -0
  29. data/rbi/micro/struct/features.rbi +41 -0
  30. data/rbi/micro/struct/normalize_names.rbi +20 -0
  31. data/rbi/micro/struct/version.rbi +3 -0
  32. data/rbi/micro/struct.rbi +68 -0
  33. data/sorbet/config +8 -0
  34. data/sorbet/rbi/gems/ast@2.4.2.rbi +54 -0
  35. data/sorbet/rbi/gems/coderay@1.1.3.rbi +8 -0
  36. data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +11 -0
  37. data/sorbet/rbi/gems/docile@1.4.0.rbi +54 -0
  38. data/sorbet/rbi/gems/method_source@1.0.0.rbi +8 -0
  39. data/sorbet/rbi/gems/minitest@5.15.0.rbi +345 -0
  40. data/sorbet/rbi/gems/parser@3.1.0.0.rbi +1196 -0
  41. data/sorbet/rbi/gems/pry@0.14.1.rbi +8 -0
  42. data/sorbet/rbi/gems/rake@13.0.6.rbi +806 -0
  43. data/sorbet/rbi/gems/rbi@0.0.9.rbi +1602 -0
  44. data/sorbet/rbi/gems/simplecov-html@0.12.3.rbi +89 -0
  45. data/sorbet/rbi/gems/simplecov@0.21.2.rbi +577 -0
  46. data/sorbet/rbi/gems/simplecov_json_formatter@0.1.3.rbi +8 -0
  47. data/sorbet/rbi/gems/spoom@1.1.8.rbi +1252 -0
  48. data/sorbet/rbi/gems/tapioca@0.6.2.rbi +1232 -0
  49. data/sorbet/rbi/gems/thor@1.2.1.rbi +844 -0
  50. data/sorbet/rbi/gems/unparser@0.6.3.rbi +8 -0
  51. data/sorbet/rbi/gems/webrick@1.7.0.rbi +601 -0
  52. data/sorbet/rbi/gems/yard-sorbet@0.6.1.rbi +199 -0
  53. data/sorbet/rbi/gems/yard@0.9.27.rbi +4112 -0
  54. data/sorbet/tapioca/config.yml +13 -0
  55. data/sorbet/tapioca/require.rb +4 -0
  56. data/u-struct.gemspec +3 -3
  57. metadata +37 -3
  58. data/bin/test +0 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3bae44de8a2fcfcebd5838c5aa282a16ca45e96f373cfb914f84849d1f05b46d
4
- data.tar.gz: 7c4aa02beaaebf9a455d707d5e7cc654e7b3d3932b4555588aad0db3eff04806
3
+ metadata.gz: fa40551d175dd0f2239b9c8a5c7fda5ea39e29b4293c23d8318744cf2f9df0b9
4
+ data.tar.gz: 5f5058d00fde571ed7fb972dd976dcae1dbe5e7469c2f069eeb29b6cdd01747a
5
5
  SHA512:
6
- metadata.gz: d08cb82f8392d7f960cb570ca2ddea82e931dd97c2ab9b6125a56aaca5a231d100d1e5f15bafa482214d0d63cd5c7d4f14d01bbbed3d5d07a2b60dc7f46024e9
7
- data.tar.gz: 5bdc2d780807cbf09be36ed2d79453396a756642d3b088af74a79dc1d755328fa78786ed94167a1f7e8292b417614d17c606693f46ee4d8244c69ff7675d5900
6
+ metadata.gz: ef1569d45a887c42dd1239a35a98fdb160c6d93ca5e6cd24cbac1f4763295ff4228c5343f64fdf33e91a51503597b66aa0222b0652fd7b723d2e35e3a3c2e4ca
7
+ data.tar.gz: 7c2747b2b46095461d6402a1a7f58d4a2b4b8396572c4e6bb7d36e986da1aec44a17f82603ec2c01bd62bbbe3a6127114a8023b6e04e0601df8be045daae9699
@@ -6,20 +6,20 @@ jobs:
6
6
  runs-on: ubuntu-latest
7
7
  strategy:
8
8
  matrix:
9
- ruby: [2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 3.0, 3.1.0-preview1]
9
+ ruby: [2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 3.0.3, 3.1]
10
10
  steps:
11
11
  - uses: actions/checkout@v2
12
12
  - uses: ruby/setup-ruby@v1
13
13
  with:
14
14
  ruby-version: ${{ matrix.ruby }}
15
15
  bundler-cache: true
16
- - name: Test and generate coverage
17
- run: bin/test
16
+ - name: Run sorbet, rubocop, tests and generate code coverage
17
+ run: bin/run_ci
18
18
  - name: Format coverage
19
- if: ${{ matrix.ruby >= 3 && matrix.ruby < 3.1 }}
19
+ if: ${{ matrix.ruby >= 3.1 }}
20
20
  run: bin/prepare_coverage
21
21
  - uses: paambaati/codeclimate-action@v2.7.5
22
- if: ${{ matrix.ruby >= 3 && matrix.ruby < 3.1 }}
22
+ if: ${{ matrix.ruby >= 3.1 }}
23
23
  env:
24
24
  CC_TEST_REPORTER_ID: 8ce350edeb0772e94ffd678bbaca30d9c1293b9d9051a1689c79b91c21f5afd5
25
25
  with:
data/.rubocop.yml ADDED
@@ -0,0 +1,129 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ # The behavior of RuboCop can be controlled via the .rubocop.yml
4
+ # configuration file. It makes it possible to enable/disable
5
+ # certain cops (checks) and to alter their behavior if they accept
6
+ # any parameters. The file can be placed either in your home
7
+ # directory or in some project directory.
8
+ #
9
+ # RuboCop will start looking for the configuration file in the directory
10
+ # where the inspected file is and continue its way up to the root directory.
11
+ #
12
+ # See https://docs.rubocop.org/rubocop/configuration
13
+
14
+ require:
15
+ - rubocop-rake
16
+ - rubocop-minitest
17
+
18
+ AllCops:
19
+ NewCops: enable
20
+ TargetRubyVersion: 2.5
21
+
22
+ # == Gemspec ==
23
+
24
+ Gemspec/RequiredRubyVersion:
25
+ Enabled: false
26
+
27
+ # == Style ==
28
+
29
+ Style/Alias:
30
+ Enabled: false
31
+
32
+ Style/CaseEquality:
33
+ Enabled: false
34
+
35
+ Style/ClassAndModuleChildren:
36
+ Enabled: false
37
+
38
+ Style/CombinableLoops:
39
+ Exclude:
40
+ - test/**/*.rb
41
+
42
+ Style/Documentation:
43
+ Enabled: false
44
+
45
+ Style/FormatStringToken:
46
+ EnforcedStyle: annotated
47
+
48
+ Style/Lambda:
49
+ Enabled: false
50
+
51
+ Style/LambdaCall:
52
+ Enabled: false
53
+
54
+ Style/ModuleFunction:
55
+ EnforcedStyle: extend_self
56
+
57
+ Style/RaiseArgs:
58
+ EnforcedStyle: compact
59
+
60
+ Style/SymbolArray:
61
+ EnforcedStyle: brackets
62
+
63
+ # == Layout ==
64
+
65
+ Layout/ArrayAlignment:
66
+ Enabled: false
67
+
68
+ Layout/ExtraSpacing:
69
+ Enabled: false
70
+
71
+ Layout/HashAlignment:
72
+ Enabled: false
73
+
74
+ Layout/SpaceAroundOperators:
75
+ Enabled: false
76
+
77
+ Layout/SpaceInsideArrayLiteralBrackets:
78
+ EnforcedStyle: no_space
79
+ EnforcedStyleForEmptyBrackets: no_space
80
+
81
+ Layout/SpaceInsideHashLiteralBraces:
82
+ EnforcedStyle: no_space
83
+
84
+ # == Lint ==
85
+
86
+ Lint/ConstantDefinitionInBlock:
87
+ Enabled: false
88
+
89
+ Lint/NestedMethodDefinition:
90
+ Exclude:
91
+ - test/micro/struct/instance_method_test.rb
92
+
93
+ # == Naming ==
94
+
95
+ Naming/ClassAndModuleCamelCase:
96
+ Enabled: false
97
+
98
+ Naming/FileName:
99
+ Exclude:
100
+ - lib/u-struct.rb
101
+
102
+ Naming/MethodParameterName:
103
+ Exclude:
104
+ - examples/**/*.rb
105
+
106
+ Naming/RescuedExceptionsVariableName:
107
+ PreferredName: exception
108
+
109
+ # == Metrics ==
110
+
111
+ Metrics/AbcSize:
112
+ Exclude:
113
+ - test/**/*.rb
114
+
115
+ Metrics/MethodLength:
116
+ Exclude:
117
+ - test/**/*.rb
118
+
119
+ Metrics/ClassLength:
120
+ Exclude:
121
+ - test/**/*.rb
122
+
123
+ # == Minitest ==
124
+
125
+ Minitest/AssertWithExpectedArgument:
126
+ Enabled: false
127
+
128
+ Minitest/MultipleAssertions:
129
+ Max: 21
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,10 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2022-01-27 11:53:52 UTC using RuboCop version 1.25.0.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ Gemspec/RequireMFA:
10
+ Enabled: false
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 3.1.0
data/CHANGELOG.md CHANGED
@@ -6,47 +6,111 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
8
  - [[Unreleased]](#unreleased)
9
- - [[0.12.0] - 2021-12-22](#0120---2021-12-22)
9
+ - [[1.1.0] - 2021-03-23](#110---2021-03-23)
10
10
  - [Added](#added)
11
- - [[0.11.0] - 2021-12-19](#0110---2021-12-19)
11
+ - [[1.0.0] - 2021-01-19](#100---2021-01-19)
12
+ - [[0.12.0] - 2021-12-22](#0120---2021-12-22)
12
13
  - [Added](#added-1)
14
+ - [[0.11.0] - 2021-12-19](#0110---2021-12-19)
15
+ - [Added](#added-2)
13
16
  - [[0.10.0] - 2021-12-15](#0100---2021-12-15)
14
17
  - [Changed](#changed)
15
18
  - [[0.9.0] - 2021-12-14](#090---2021-12-14)
16
- - [Added](#added-2)
19
+ - [Added](#added-3)
17
20
  - [Changed](#changed-1)
18
21
  - [[0.8.0] - 2021-12-05](#080---2021-12-05)
19
- - [Added](#added-3)
20
- - [[0.7.0] - 2021-12-04](#070---2021-12-04)
21
22
  - [Added](#added-4)
23
+ - [[0.7.0] - 2021-12-04](#070---2021-12-04)
24
+ - [Added](#added-5)
22
25
  - [Changed](#changed-2)
23
26
  - [[0.6.0] - 2021-12-03](#060---2021-12-03)
24
- - [Added](#added-5)
25
- - [[0.5.0] - 2021-12-02](#050---2021-12-02)
26
27
  - [Added](#added-6)
27
- - [[0.4.0] - 2021-12-02](#040---2021-12-02)
28
+ - [[0.5.0] - 2021-12-02](#050---2021-12-02)
28
29
  - [Added](#added-7)
30
+ - [[0.4.0] - 2021-12-02](#040---2021-12-02)
31
+ - [Added](#added-8)
29
32
  - [[0.3.1] - 2021-12-02](#031---2021-12-02)
30
33
  - [Fixed](#fixed)
31
34
  - [[0.3.0] - 2021-12-02](#030---2021-12-02)
32
- - [Added](#added-8)
33
- - [[0.2.0] - 2021-12-02](#020---2021-12-02)
34
35
  - [Added](#added-9)
35
- - [[0.1.0] - 2021-12-02](#010---2021-12-02)
36
+ - [[0.2.0] - 2021-12-02](#020---2021-12-02)
36
37
  - [Added](#added-10)
37
-
38
+ - [[0.1.0] - 2021-12-02](#010---2021-12-02)
39
+ - [Added](#added-11)
38
40
  ## [Unreleased]
39
41
 
40
- [⬆️ &nbsp;Back to Top](#changelog-)
42
+ [Diff](https://github.com/serradura/u-struct/compare/v1.1.0...main)
43
+
44
+ ## [1.1.0] - 2021-03-23
45
+
46
+ [Diff](https://github.com/serradura/u-struct/compare/v1.0.0...v1.1.0) | [Tag](https://github.com/serradura/u-struct/tree/v1.1.0)
47
+ ### Added
48
+
49
+ - Add `Micro::Struct[]` as an alias of `Micro::Struct.with`.
50
+ ```ruby
51
+ Micro::Struct[:readonly] # is the same as Micro::Struct.with(:readonly)
52
+ ```
53
+
54
+ - Add `Micro::Struct.immutable` method as a shortcut to `Micro::Struct.with(:readonly, :instance_copy)`.
55
+ It also accepts the `with:` option, which can be used to define additional features.
56
+ ```ruby
57
+ Micro::Struct.immutable.new(:name)
58
+
59
+ Micro::Struct.immutable.new(:name) do
60
+ def hi(other_name)
61
+ "Hi, #{other_name}! My name is #{name}"
62
+ end
63
+ end
64
+
65
+ Micro::Struct.immutable(with: :to_hash).new(:name)
66
+
67
+ Micro::Struct.immutable(with: [:to_hash, :to_proc]).new(:name)
68
+
69
+ Micro::Struct.immutable.instance(name: 'Rodrigo')
70
+
71
+ Micro::Struct.immutable(with: [:to_hash]).instance(name: 'Serradura')
72
+ ```
73
+
74
+ - Add `Micro::Struct.readonly` method as a shortcut to `Micro::Struct.with(:readonly)`.
75
+ It has the same properties of `Micro::Struct.immutable`.
76
+ ```ruby
77
+ Micro::Struct.readonly.new(:name)
78
+
79
+ Micro::Struct.readonly.new(:name) do
80
+ def hi(other_name)
81
+ "Hi, #{other_name}! My name is #{name}"
82
+ end
83
+ end
84
+
85
+ Micro::Struct.readonly(with: :to_hash).new(:name)
86
+
87
+ Micro::Struct.readonly(with: [:to_hash, :to_proc]).new(:name)
88
+
89
+ Micro::Struct.readonly.instance(name: 'Rodrigo')
90
+
91
+ Micro::Struct.readonly(with: [:to_hash]).instance(name: 'Serradura')
92
+ ```
93
+ **Development stuff**
94
+
95
+ - Set up Rubocop.
96
+ - Add `.rbi` files, and set up sorbet to be used in development.
97
+
98
+ <p align="right">(<a href="#changelog-">⬆️ &nbsp;back to top</a>)</p>
99
+
100
+ <p align="right">(<a href="#changelog-">⬆️ &nbsp;back to top</a>)</p>
41
101
 
42
102
  ## [1.0.0] - 2021-01-19
43
103
 
104
+ [Diff](https://github.com/serradura/u-struct/compare/v0.12.0...v1.0.0) | [Tag](https://github.com/serradura/u-struct/tree/v1.0.0)
105
+
44
106
  - Review and update docs and examples. ;)
45
107
 
46
- [⬆️ &nbsp;Back to Top](#changelog-)
108
+ <p align="right">(<a href="#changelog-">⬆️ &nbsp;back to top</a>)</p>
47
109
 
48
110
  ## [0.12.0] - 2021-12-22
49
111
 
112
+ [Diff](https://github.com/serradura/u-struct/compare/v0.11.0...v0.12.0) | [Tag](https://github.com/serradura/u-struct/tree/v0.12.0)
113
+
50
114
  ### Added
51
115
 
52
116
  - Add `Micro::Struct.instance` to create a struct instance from a given hash.
@@ -115,20 +179,24 @@ Person.features.options?(:to_proc, :readonly) # => true
115
179
  Person.features.options?(:to_ary, :readonly) # => false
116
180
  ```
117
181
 
118
- [⬆️ &nbsp;Back to Top](#changelog-)
182
+ <p align="right">(<a href="#changelog-">⬆️ &nbsp;back to top</a>)</p>
119
183
 
120
184
  ## [0.11.0] - 2021-12-19
121
185
 
186
+ [Diff](https://github.com/serradura/u-struct/compare/v0.10.0...v0.11.0) | [Tag](https://github.com/serradura/u-struct/tree/v0.11.0)
187
+
122
188
  ### Added
123
189
 
124
190
  - Reduce the required Ruby version to `>= 2.2.0`.
125
191
  - Set up a CI with Github actions.
126
192
  - Test the codebase against the Ruby versions: `2.2`, `2.3`, `2.4`, `2.5`, `2.6`, `2.7`, `3.0` and `3.1.0-preview1`.
127
193
 
128
- [⬆️ &nbsp;Back to Top](#changelog-)
194
+ <p align="right">(<a href="#changelog-">⬆️ &nbsp;back to top</a>)</p>
129
195
 
130
196
  ## [0.10.0] - 2021-12-15
131
197
 
198
+ [Diff](https://github.com/serradura/u-struct/compare/v0.9.0...v0.10.0) | [Tag](https://github.com/serradura/u-struct/tree/v0.10.0)
199
+
132
200
  ### Changed
133
201
 
134
202
  - Make `Micro::Struct.new` return a Ruby struct instead of a module.
@@ -159,10 +227,12 @@ rgb_color.to_hex
159
227
  # => "#0105ff"
160
228
  ```
161
229
 
162
- [⬆️ &nbsp;Back to Top](#changelog-)
230
+ <p align="right">(<a href="#changelog-">⬆️ &nbsp;back to top</a>)</p>
163
231
 
164
232
  ## [0.9.0] - 2021-12-14
165
233
 
234
+ [Diff](https://github.com/serradura/u-struct/compare/v0.8.0...v0.9.0) | [Tag](https://github.com/serradura/u-struct/tree/v0.9.0)
235
+
166
236
  ### Added
167
237
 
168
238
  - Add `__new__` method and make `.new` its alias. You can use `__new__` when overwriting the module's `new`.
@@ -248,10 +318,12 @@ rgb_color.to_ary # => [1, 5, 255]
248
318
  rgb_color.to_hash # => {:r=>1, :g=>5, :b=>255}
249
319
  ```
250
320
 
251
- [⬆️ &nbsp;Back to Top](#changelog-)
321
+ <p align="right">(<a href="#changelog-">⬆️ &nbsp;back to top</a>)</p>
252
322
 
253
323
  ## [0.8.0] - 2021-12-05
254
324
 
325
+ [Diff](https://github.com/serradura/u-struct/compare/v0.7.0...v0.8.0) | [Tag](https://github.com/serradura/u-struct/tree/v0.8.0)
326
+
255
327
  ### Added
256
328
 
257
329
  - Add `.===` to the module, it delegates the calling to its struct.
@@ -266,10 +338,12 @@ Person === person
266
338
  # => true
267
339
  ```
268
340
 
269
- [⬆️ &nbsp;Back to Top](#changelog-)
341
+ <p align="right">(<a href="#changelog-">⬆️ &nbsp;back to top</a>)</p>
270
342
 
271
343
  ## [0.7.0] - 2021-12-04
272
344
 
345
+ [Diff](https://github.com/serradura/u-struct/compare/v0.6.0...v0.7.0) | [Tag](https://github.com/serradura/u-struct/tree/v0.7.0)
346
+
273
347
  ### Added
274
348
 
275
349
  - Add `required:` option to define required struct members.
@@ -295,10 +369,12 @@ Person = Micro::Struct.new(
295
369
  )
296
370
  ```
297
371
 
298
- [⬆️ &nbsp;Back to Top](#changelog-)
372
+ <p align="right">(<a href="#changelog-">⬆️ &nbsp;back to top</a>)</p>
299
373
 
300
374
  ## [0.6.0] - 2021-12-03
301
375
 
376
+ [Diff](https://github.com/serradura/u-struct/compare/v0.5.0...v0.6.0) | [Tag](https://github.com/serradura/u-struct/tree/v0.6.0)
377
+
302
378
  ### Added
303
379
 
304
380
  - Add the capability to create a struct with optional members.
@@ -320,10 +396,12 @@ Persona.new
320
396
  # => #<struct Persona::Struct first_name=nil, last_name=nil>
321
397
  ```
322
398
 
323
- [⬆️ &nbsp;Back to Top](#changelog-)
399
+ <p align="right">(<a href="#changelog-">⬆️ &nbsp;back to top</a>)</p>
324
400
 
325
401
  ## [0.5.0] - 2021-12-02
326
402
 
403
+ [Diff](https://github.com/serradura/u-struct/compare/v0.4.0...v0.5.0) | [Tag](https://github.com/serradura/u-struct/tree/v0.5.0)
404
+
327
405
  ### Added
328
406
 
329
407
  - Add new feature `:instance_copy`. It instantiates a struct of the same kind from its current state.
@@ -371,10 +449,12 @@ person.name # => "Rodrigo Serradura"
371
449
  new_person.name # => "John Doe"
372
450
  ```
373
451
 
374
- [⬆️ &nbsp;Back to Top](#changelog-)
452
+ <p align="right">(<a href="#changelog-">⬆️ &nbsp;back to top</a>)</p>
375
453
 
376
454
  ## [0.4.0] - 2021-12-02
377
455
 
456
+ [Diff](https://github.com/serradura/u-struct/compare/v0.3.1...v0.4.0) | [Tag](https://github.com/serradura/u-struct/tree/v0.4.0)
457
+
378
458
  ### Added
379
459
 
380
460
  - Add `.members` to the module, it delegates the calling to its struct.
@@ -400,26 +480,32 @@ person.respond_to?(:to_hash) # => false
400
480
  Person.respond_to?(:to_proc) # => false
401
481
  ```
402
482
 
403
- [⬆️ &nbsp;Back to Top](#changelog-)
483
+ <p align="right">(<a href="#changelog-">⬆️ &nbsp;back to top</a>)</p>
404
484
 
405
485
  ## [0.3.1] - 2021-12-02
406
486
 
487
+ [Diff](https://github.com/serradura/u-struct/compare/v0.3.0...v0.3.1) | [Tag](https://github.com/serradura/u-struct/tree/v0.3.1)
488
+
407
489
  ### Fixed
408
490
 
409
491
  - Fix the spec.files config of `u-struct.gemspec`.
410
492
 
411
- [⬆️ &nbsp;Back to Top](#changelog-)
493
+ <p align="right">(<a href="#changelog-">⬆️ &nbsp;back to top</a>)</p>
412
494
 
413
495
  ## [0.3.0] - 2021-12-02
414
496
 
497
+ [Diff](https://github.com/serradura/u-struct/compare/v0.2.0...v0.3.0) | [Tag](https://github.com/serradura/u-struct/tree/v0.3.0)
498
+
415
499
  ### Added
416
500
 
417
501
  - Add `lib/u-struct.rb` to allow the bundler to require the gem in an automatic way.
418
502
 
419
- [⬆️ &nbsp;Back to Top](#changelog-)
503
+ <p align="right">(<a href="#changelog-">⬆️ &nbsp;back to top</a>)</p>
420
504
 
421
505
  ## [0.2.0] - 2021-12-02
422
506
 
507
+ [Diff](https://github.com/serradura/u-struct/compare/v0.1.0...v0.2.0) | [Tag](https://github.com/serradura/u-struct/tree/v0.2.0)
508
+
423
509
  ### Added
424
510
 
425
511
  - Add `to_hash` as an alias of Struct's `to_h`.
@@ -436,10 +522,12 @@ person = Person.new(first_name: 'Rodrigo', last_name: 'Serradura')
436
522
  print_first_and_last_name(**person) # Rodrigo Serradura
437
523
  ```
438
524
 
439
- [⬆️ &nbsp;Back to Top](#changelog-)
525
+ <p align="right">(<a href="#changelog-">⬆️ &nbsp;back to top</a>)</p>
440
526
 
441
527
  ## [0.1.0] - 2021-12-02
442
528
 
529
+ [Diff](https://github.com/serradura/u-struct/compare/19beceb97a9bc22f2a485b82e4002b6a2e20a73c...v0.1.0) | [Tag](https://github.com/serradura/u-struct/tree/v0.1.0)
530
+
443
531
  ### Added
444
532
 
445
533
  - Create a module containing a Ruby struct with some custom features.
@@ -499,4 +587,4 @@ Person::Struct.new
499
587
  # => NoMethodError (private method `new' called for Person::Struct:Class)
500
588
  ```
501
589
 
502
- [⬆️ &nbsp;Back to Top](#changelog-)
590
+ <p align="right">(<a href="#changelog-">⬆️ &nbsp;back to top</a>)</p>
data/Gemfile CHANGED
@@ -5,7 +5,18 @@ source 'https://rubygems.org'
5
5
  # Specify your gem's dependencies in micro-struct.gemspec
6
6
  gemspec
7
7
 
8
- gem 'rake', '~> 13.0'
8
+ gem 'rake', '13.0.6'
9
9
 
10
- gem 'minitest', '~> 5.0'
11
- gem 'simplecov', '~> 0.21.2' if RUBY_VERSION >= '2.5.0'
10
+ gem 'minitest', '5.15.0'
11
+
12
+ if RUBY_VERSION >= '2.5.0'
13
+ gem 'rubocop', '1.26'
14
+ gem 'rubocop-minitest', '0.18.0'
15
+ gem 'rubocop-rake', '0.6.0'
16
+ gem 'simplecov', '0.21.2'
17
+ end
18
+
19
+ if RUBY_VERSION >= '2.7.0'
20
+ gem 'sorbet', '0.5.9775'
21
+ gem 'tapioca', '0.7.0'
22
+ end