lite-decorator 1.3.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/README.md +24 -5
- data/lib/lite/decorator/base.rb +3 -7
- data/lib/lite/decorator/infered.rb +19 -0
- data/lib/lite/decorator/record.rb +2 -6
- data/lib/lite/decorator/version.rb +1 -1
- data/lib/lite/decorator.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 79964d52a1fbc21e1b05b9fa7b7ba819a49e0dcfa1ad82999fa4ac5c3361cfd3
|
4
|
+
data.tar.gz: 2320e385b9dae23e2b3834a6fc47990780c74eca64db25a59859c1c61eb9ca29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2c3b1b9994591964fcf233883e635ab7ce649c3ce8e2dac46cd8e37d5010d27818117ee9a38ec038bef76a40975566f0cf085420675b295c66919cad178dcd0
|
7
|
+
data.tar.gz: 6ff5619a096ea3ea9333713fb4ba59936c407670ab71ad9856b177ddda2dbf766caaa82b91b0a5c022d5b3b3e1acc5c2d5fd43f02fcc564d47372ec7d31872c9
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -59,7 +59,7 @@ end
|
|
59
59
|
## Usage
|
60
60
|
|
61
61
|
To access the decorator you need to pass the object to the decorator class.
|
62
|
-
PORO's
|
62
|
+
PORO's and ActiveRecord objects can be decorated with this method.
|
63
63
|
|
64
64
|
#### Instance
|
65
65
|
```ruby
|
@@ -75,16 +75,35 @@ collection = UserDecorator.new(users)
|
|
75
75
|
collection.map(&:full_name) #=> ["John Doe", "Jane Poe"]
|
76
76
|
```
|
77
77
|
|
78
|
-
##
|
78
|
+
## Infered decoration
|
79
79
|
|
80
|
-
Including the
|
81
|
-
|
82
|
-
|
80
|
+
Including the `Infered` module will setup a `decorator_class` and `decorator` method
|
81
|
+
that you can access via your PORO and ActiveRecord objects.
|
82
|
+
|
83
|
+
```ruby
|
84
|
+
class User < ActiveRecord::Base
|
85
|
+
include Lite::Decorator::Infered
|
86
|
+
end
|
87
|
+
|
88
|
+
# Usage
|
89
|
+
user = User.first
|
90
|
+
user.decorator.full_name
|
91
|
+
```
|
92
|
+
|
93
|
+
## Record decoration
|
94
|
+
|
95
|
+
Including the `Record` module will use method missing to delegate decorator methods as
|
96
|
+
if it lived on the ActiveRecord object itself. If neither the class instance and the
|
97
|
+
decorator contain the method, a `NoMethodError` just like normal.
|
83
98
|
|
84
99
|
```ruby
|
85
100
|
class User < ActiveRecord::Base
|
86
101
|
include Lite::Decorator::Record
|
87
102
|
end
|
103
|
+
|
104
|
+
# Usage
|
105
|
+
user = User.first
|
106
|
+
user.full_name
|
88
107
|
```
|
89
108
|
|
90
109
|
## Development
|
data/lib/lite/decorator/base.rb
CHANGED
@@ -6,14 +6,10 @@ module Lite
|
|
6
6
|
module Decorator
|
7
7
|
class Base < SimpleDelegator
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
def decorate(object)
|
12
|
-
return new(object) unless object.respond_to?(:each)
|
13
|
-
|
14
|
-
object.map { |obj| new(obj) }
|
15
|
-
end
|
9
|
+
def self.decorate(object)
|
10
|
+
return new(object) unless object.respond_to?(:each)
|
16
11
|
|
12
|
+
object.map { |obj| new(obj) }
|
17
13
|
end
|
18
14
|
|
19
15
|
def class
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lite
|
4
|
+
module Decorator
|
5
|
+
module Infered
|
6
|
+
|
7
|
+
def decorator_class
|
8
|
+
return @decorator_class if defined?(@decorator_class)
|
9
|
+
|
10
|
+
@decorator_class = "#{self.class.name}Decorator".safe_constantize
|
11
|
+
end
|
12
|
+
|
13
|
+
def decorator
|
14
|
+
@decorator ||= decorator_class&.new(self)
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -4,12 +4,8 @@ module Lite
|
|
4
4
|
module Decorator
|
5
5
|
module Record
|
6
6
|
|
7
|
-
def
|
8
|
-
|
9
|
-
end
|
10
|
-
|
11
|
-
def decorator
|
12
|
-
@decorator ||= decorator_class&.new(self)
|
7
|
+
def self.included(base)
|
8
|
+
base.include Infered
|
13
9
|
end
|
14
10
|
|
15
11
|
private
|
data/lib/lite/decorator.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lite-decorator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juan Gomez
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-09-
|
11
|
+
date: 2024-09-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -204,6 +204,7 @@ files:
|
|
204
204
|
- lib/generators/rails/templates/decorator.rb.tt
|
205
205
|
- lib/lite/decorator.rb
|
206
206
|
- lib/lite/decorator/base.rb
|
207
|
+
- lib/lite/decorator/infered.rb
|
207
208
|
- lib/lite/decorator/record.rb
|
208
209
|
- lib/lite/decorator/version.rb
|
209
210
|
- lite-decorator.gemspec
|