selfies 0.2.0 → 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/README.md +28 -9
- data/lib/kernel.rb +12 -1
- data/lib/selfies/self_init.rb +14 -8
- data/lib/selfies/selfie.rb +1 -0
- data/lib/selfies/version.rb +1 -1
- data/lib/selfies.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47550e2d9e6da031803c5ba23ef7d4336f0e3076
|
4
|
+
data.tar.gz: c05c0beae48f5d515d65d41c1fab06752cbcf5fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26ecd3374676bb10adc4e4c0e2f01dcd5cb1201fcd2212b0f7fa8dc3b48ab9ea753a3371642eb88c5961996a9fab593a82cc64daa1838f94143887e95e0def4b
|
7
|
+
data.tar.gz: c1516a43e5384a7809a99e13d4ced86091034afbd01f52fd5bb2b36bb2faf851e3d8e71c290402db569f1f774130a291340849ced93818686638394b7584f81f
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
[](https://circleci.com/gh/mariodarco/selfies/tree/master)
|
1
|
+
[](https://badge.fury.io/rb/selfies) [](https://circleci.com/gh/mariodarco/selfies/tree/master)
|
2
2
|
|
3
3
|
# Selfies
|
4
4
|
**A collection of macros for quicker development**
|
@@ -38,12 +38,12 @@ $ gem install selfies
|
|
38
38
|
|
39
39
|
## Usage
|
40
40
|
|
41
|
-
***
|
41
|
+
***attr_reader_init***: can be used to automatically generate an initialiser for your class
|
42
42
|
|
43
43
|
This code:
|
44
44
|
```ruby
|
45
45
|
class Search
|
46
|
-
|
46
|
+
attr_reader_init :term, :page, :limit
|
47
47
|
end
|
48
48
|
```
|
49
49
|
|
@@ -60,6 +60,28 @@ class Search
|
|
60
60
|
end
|
61
61
|
```
|
62
62
|
|
63
|
+
***attr_accessor_init***: same as ```attr_reader_init```, but generates accessors for the given attributes
|
64
|
+
|
65
|
+
This code:
|
66
|
+
```ruby
|
67
|
+
class Search
|
68
|
+
attr_accessor_init :term, :page, :limit
|
69
|
+
end
|
70
|
+
```
|
71
|
+
|
72
|
+
Is equivalent to:
|
73
|
+
```ruby
|
74
|
+
class Search
|
75
|
+
attr_accessor :term, :page, :limit
|
76
|
+
|
77
|
+
def initialize(term, page, limit)
|
78
|
+
@term = term
|
79
|
+
@page = page
|
80
|
+
@limit = limit
|
81
|
+
end
|
82
|
+
end
|
83
|
+
```
|
84
|
+
|
63
85
|
***selfie***: can be used to automatically create a class method that reference to the instance method of the same class
|
64
86
|
|
65
87
|
This code:
|
@@ -94,7 +116,7 @@ end
|
|
94
116
|
Can be written as:
|
95
117
|
```ruby
|
96
118
|
class Search
|
97
|
-
|
119
|
+
attr_reader_init :term, :page, :limit
|
98
120
|
|
99
121
|
def execute!
|
100
122
|
# does something
|
@@ -130,7 +152,7 @@ end
|
|
130
152
|
You write this:
|
131
153
|
```ruby
|
132
154
|
class Rectangle
|
133
|
-
|
155
|
+
attr_accessor_init :width, :height
|
134
156
|
selfie :area, :perimeter
|
135
157
|
|
136
158
|
def area
|
@@ -153,13 +175,10 @@ You get this:
|
|
153
175
|
|
154
176
|
## Next Steps
|
155
177
|
|
156
|
-
***
|
178
|
+
***attr_reader_init*** and ***attr_accessor_init:***
|
157
179
|
- Implement the possibility to pass defaults;
|
158
|
-
- Specify which parameters will get an attr_reader, attr_accessor or none;
|
159
|
-
- Specify wich parameters on attr_reader are to consider private;
|
160
180
|
|
161
181
|
***selfie:***
|
162
|
-
- Allow the possibility to declare all selfies at the top (if possible);
|
163
182
|
- Find a suitable syntax that would allow to 'selfie' an instance method that has arguments;
|
164
183
|
|
165
184
|
***more?:***
|
data/lib/kernel.rb
CHANGED
@@ -1,8 +1,19 @@
|
|
1
1
|
# Open the Kernel modul to define methods for any class.
|
2
2
|
module Kernel
|
3
|
+
extend Gem::Deprecate
|
4
|
+
|
5
|
+
def attr_accessor_init(*variable_names)
|
6
|
+
Selfies.generate_initializer(self, true, *variable_names)
|
7
|
+
end
|
8
|
+
|
9
|
+
def attr_reader_init(*variable_names)
|
10
|
+
Selfies.generate_initializer(self, false, *variable_names)
|
11
|
+
end
|
12
|
+
|
3
13
|
def self_init(*variable_names)
|
4
|
-
|
14
|
+
attr_reader_init(*variable_names)
|
5
15
|
end
|
16
|
+
deprecate :self_init, :attr_reader_init, 2017, 7
|
6
17
|
|
7
18
|
def selfie(*method_names)
|
8
19
|
Selfies.generate_class_methods(self, *method_names)
|
data/lib/selfies/self_init.rb
CHANGED
@@ -1,23 +1,29 @@
|
|
1
1
|
module Selfies
|
2
2
|
class SelfInit
|
3
|
-
def self.generate(class_name, *variable_names)
|
3
|
+
def self.generate(class_name, accessor, *variable_names)
|
4
4
|
return false unless variable_names.any?
|
5
5
|
|
6
|
-
class_name.class_eval do
|
7
|
-
|
6
|
+
class_name.class_eval do
|
7
|
+
if accessor
|
8
|
+
attr_accessor *variable_names
|
9
|
+
else
|
10
|
+
attr_reader *variable_names
|
11
|
+
end
|
8
12
|
|
9
13
|
define_method(:initialize) do |*args|
|
10
|
-
argument_check(variable_names.count, args.count)
|
14
|
+
SelfInit.argument_check(variable_names.count, args.count)
|
11
15
|
|
12
16
|
variable_names.each_with_index do |variable, index|
|
13
17
|
instance_variable_set("@#{variable}", args[index])
|
14
18
|
end
|
15
19
|
end
|
16
|
-
|
17
|
-
def argument_check(expected, given)
|
18
|
-
raise ArgumentError, "wrong number of arguments (given #{given}, expected #{expected})" unless given == expected
|
19
|
-
end
|
20
20
|
end
|
21
21
|
end
|
22
|
+
|
23
|
+
private_class_method
|
24
|
+
|
25
|
+
def self.argument_check(expected, given)
|
26
|
+
raise ArgumentError, "wrong number of arguments (given #{given}, expected #{expected})" unless given == expected
|
27
|
+
end
|
22
28
|
end
|
23
29
|
end
|
data/lib/selfies/selfie.rb
CHANGED
data/lib/selfies/version.rb
CHANGED
data/lib/selfies.rb
CHANGED
@@ -5,8 +5,8 @@ require 'selfies/version'
|
|
5
5
|
|
6
6
|
# Index of the Selfies utilities
|
7
7
|
module Selfies
|
8
|
-
def self.generate_initializer(class_name, *variable_names)
|
9
|
-
SelfInit.generate(class_name, *variable_names)
|
8
|
+
def self.generate_initializer(class_name, accessor, *variable_names)
|
9
|
+
SelfInit.generate(class_name, accessor, *variable_names)
|
10
10
|
end
|
11
11
|
|
12
12
|
def self.generate_class_methods(class_name, *method_names)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: selfies
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mario D’Arco
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-06-
|
11
|
+
date: 2017-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|