magic-decorator 0.3.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 673fe3ecf73066b97e1076dfb9a41e7fb31732396e9c39a5f97561d1ec2e616f
4
- data.tar.gz: 44c33204523d4022f8b2b1c1eb28dd51f5a3499d5001cdfae97fff59568d89d1
3
+ metadata.gz: 84b46e61d09d011e36bfd527b1e99bf9b83a7d3d4844f9afcd11304abd5c7990
4
+ data.tar.gz: 22f50120c5b4b8b2887d28b3e909f698128c04a37293c9409d93411dddb1f2e3
5
5
  SHA512:
6
- metadata.gz: 309f3a70d8ce2ae726375e59e152a77d044b7ffe52d8f7064e4baefe964aecc90c4a835dbf3e5474a56e0c7de08e0cb0e975e3e65bc3872a2cc2a18f2a401885
7
- data.tar.gz: 595d311692d8db65bb29e0adc44222a48abea98b7b869a62d6b823cb436801be1317cddfc9c4caacf9a6514ec8cc0a1182a1b26c005f9efe2c52fa0d48cca2fc
6
+ metadata.gz: 0ad5fc1e9e7cf8fab9a75a792cc31f027e113e95f7968ee2f6502b113c4f8f943bf7f111fa599929896e6bf7a3a77cf7cf13d46c6fe58dd52e770fc109278d42
7
+ data.tar.gz: 743f50f6835be84d59028240ec9c306df79f8647c90d4b4c34d39eb9e462741cbfc3f0ebde4bea447c0a94b731e61a8e370c497d84821bfe9dfa4272771f3d8b
data/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ ## [1.0.0] — 2024-11-23
2
+
3
+ This release marks the gem to be stable enough.
4
+
5
+ > [!NOTE]
6
+ > Nothing notable was changed in the code since the last version.
7
+
8
+ ### Documentation
9
+
10
+ - Added a section about overriding the defaults.
11
+ - Added a section about testing.
12
+
13
+
1
14
  ## [0.3.0] — 2024-10-27
2
15
 
3
16
  ### Added
data/README.md CHANGED
@@ -165,6 +165,51 @@ It automagically decorates all its decoratable items.
165
165
  - enables _double-splat_ operator: `**decorated`,
166
166
  - enumerating methods yield decorated items.
167
167
 
168
+ ## Overriding the magic
169
+
170
+ When one needs more complicated behavior than the default one or feels like [_explicit is better than implicit_](
171
+ https://peps.python.org/pep-0020/#the-zen-of-python
172
+ ).
173
+
174
+ ### Decorator class inference
175
+
176
+ One may override `#decorator` for any decoratable class, to be used instead of Magic Lookup.
177
+
178
+ - That could be as straightforward as a constant:
179
+
180
+ ```ruby
181
+ class Guest
182
+ private
183
+
184
+ def decorator = UserDecorator
185
+ end
186
+
187
+ guest.decorate # => instance of UserDecorator
188
+ ```
189
+
190
+ - Or, that could be virtually any logic:
191
+
192
+ ```ruby
193
+ class User
194
+ private
195
+
196
+ def decorator = admin? ? AdminDecorator : super
197
+ end
198
+
199
+ user.decorate # => instance of UserDecorator
200
+ admin.decorate # => instance of AdminDecorator
201
+ ```
202
+
203
+ ## Testing decorators
204
+
205
+ Testing a decorator is much like testing any other class.
206
+
207
+ To test whether an object is decorated one can use `#decorated?` method.
208
+
209
+ > [!NOTE]
210
+ > A decorated object equals the original one (`object.decorated == object`).
211
+ > Thus, any existing tests shouldn’t break when the objects being tested get decorated.
212
+
168
213
  ## Development
169
214
 
170
215
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -34,6 +34,8 @@ module Magic
34
34
  deconstruct_keys
35
35
  ]
36
36
 
37
+ private
38
+
37
39
  def method_missing(method, ...)
38
40
  return super if method.start_with? 'to_' # converter
39
41
  return super if method.start_with? '_' # system
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Magic
4
4
  module Decorator
5
- VERSION = '0.3.0'
5
+ VERSION = '1.0.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magic-decorator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Senko
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2024-10-27 00:00:00.000000000 Z
10
+ date: 2024-11-23 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: magic-lookup
@@ -69,7 +69,7 @@ licenses:
69
69
  metadata:
70
70
  homepage_uri: https://github.com/Alexander-Senko/magic-decorator
71
71
  source_code_uri: https://github.com/Alexander-Senko/magic-decorator
72
- changelog_uri: https://github.com/Alexander-Senko/magic-decorator/blob/v0.3.0/CHANGELOG.md
72
+ changelog_uri: https://github.com/Alexander-Senko/magic-decorator/blob/v1.0.0/CHANGELOG.md
73
73
  rdoc_options: []
74
74
  require_paths:
75
75
  - lib