singleton_attr 1.0.0 → 1.0.2
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.
- data/README.md +3 -3
- data/lib/singleton_attr.rb +35 -0
- data/spec/singleton_attr_spec.rb +12 -0
- metadata +2 -2
data/README.md
CHANGED
@@ -4,11 +4,11 @@ http://rubygems.org/gems/singleton_attr
|
|
4
4
|
|
5
5
|
# Summary #
|
6
6
|
|
7
|
-
Adds methods to declare attribute accessor/reader/writer on singleton instance.
|
7
|
+
Adds methods to declare attribute accessor/reader/writer on singleton instance and methods to alias singleton methods.
|
8
8
|
|
9
9
|
# Description #
|
10
10
|
|
11
|
-
Provides :singleton_attr_accessor, :singleton_attr_reader, :singleton_attr_writer, :module_attr_accessor, :module_attr_reader, :module_attr_writer, :class_attr_accessor, :class_attr_reader, :class_attr_writer.
|
11
|
+
Provides :singleton_attr_accessor, :singleton_attr_reader, :singleton_attr_writer, :module_attr_accessor, :module_attr_reader, :module_attr_writer, :class_attr_accessor, :class_attr_reader, :class_attr_writer as well as :alias_singleton_method, :alias_module_method, and :alias_class_method.
|
12
12
|
|
13
13
|
# Install #
|
14
14
|
|
@@ -16,7 +16,7 @@ Provides :singleton_attr_accessor, :singleton_attr_reader, :singleton_attr_write
|
|
16
16
|
|
17
17
|
# Usage #
|
18
18
|
|
19
|
-
Just like :attr_accessor, :attr_reader, :attr_writer but instead of defining an instance method it defines a class/module method.
|
19
|
+
Just like :attr_accessor, :attr_reader, :attr_writer, :alias_method but instead of defining an instance method it defines a class/module method.
|
20
20
|
|
21
21
|
# License #
|
22
22
|
|
data/lib/singleton_attr.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
|
2
3
|
###
|
3
4
|
# Adds methods to declare attribute accessors/readers/writers on singletons.
|
@@ -26,6 +27,12 @@ module ::SingletonAttr
|
|
26
27
|
return self
|
27
28
|
|
28
29
|
end
|
30
|
+
|
31
|
+
#############################
|
32
|
+
# attr_singleton_accessor #
|
33
|
+
#############################
|
34
|
+
|
35
|
+
alias_method :attr_singleton_accessor, :singleton_attr_accessor
|
29
36
|
|
30
37
|
###########################
|
31
38
|
# singleton_attr_reader #
|
@@ -50,6 +57,12 @@ module ::SingletonAttr
|
|
50
57
|
|
51
58
|
end
|
52
59
|
|
60
|
+
###########################
|
61
|
+
# attr_singleton_reader #
|
62
|
+
###########################
|
63
|
+
|
64
|
+
alias_method :attr_singleton_reader, :singleton_attr_reader
|
65
|
+
|
53
66
|
###########################
|
54
67
|
# singleton_attr_writer #
|
55
68
|
###########################
|
@@ -73,6 +86,24 @@ module ::SingletonAttr
|
|
73
86
|
|
74
87
|
end
|
75
88
|
|
89
|
+
###########################
|
90
|
+
# attr_singleton_writer #
|
91
|
+
###########################
|
92
|
+
|
93
|
+
alias_method :attr_singleton_writer, :singleton_attr_writer
|
94
|
+
|
95
|
+
############################
|
96
|
+
# alias_singleton_method #
|
97
|
+
############################
|
98
|
+
|
99
|
+
def alias_singleton_method( alias_name, method_name )
|
100
|
+
|
101
|
+
singleton_class.instance_eval { alias_method alias_name, method_name }
|
102
|
+
|
103
|
+
return self
|
104
|
+
|
105
|
+
end
|
106
|
+
|
76
107
|
end
|
77
108
|
|
78
109
|
###
|
@@ -85,6 +116,8 @@ module ::SingletonAttr::Module
|
|
85
116
|
alias_method :module_attr_accessor, :singleton_attr_accessor
|
86
117
|
alias_method :module_attr_reader, :singleton_attr_reader
|
87
118
|
alias_method :module_attr_writer, :singleton_attr_writer
|
119
|
+
|
120
|
+
alias_method :alias_module_method, :alias_singleton_method
|
88
121
|
|
89
122
|
end
|
90
123
|
|
@@ -99,6 +132,8 @@ module ::SingletonAttr::Class
|
|
99
132
|
alias_method :class_attr_reader, :singleton_attr_reader
|
100
133
|
alias_method :class_attr_writer, :singleton_attr_writer
|
101
134
|
|
135
|
+
alias_method :alias_class_method, :alias_singleton_method
|
136
|
+
|
102
137
|
end
|
103
138
|
|
104
139
|
class ::Module
|
data/spec/singleton_attr_spec.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
|
2
3
|
require_relative '../lib/singleton_attr.rb'
|
3
4
|
|
@@ -24,6 +25,11 @@ describe ::SingletonAttr do
|
|
24
25
|
instance.instance_variable_get( :@writer ).should be :value
|
25
26
|
instance.respond_to?( :writer ).should be false
|
26
27
|
end
|
28
|
+
it '#alias_singleton_method aliases a method defined for singleton' do
|
29
|
+
instance.define_singleton_method( :some_method ) { puts 'method body' }
|
30
|
+
instance.alias_singleton_method( :other_method_name, :some_method )
|
31
|
+
instance.respond_to?( :other_method_name ).should be true
|
32
|
+
end
|
27
33
|
end
|
28
34
|
|
29
35
|
context 'Module' do
|
@@ -38,6 +44,9 @@ describe ::SingletonAttr do
|
|
38
44
|
it 'aliases #singleton_attr_writer to #module_attr_writer' do
|
39
45
|
instance.method( :module_attr_writer ).should == instance.method( :singleton_attr_writer )
|
40
46
|
end
|
47
|
+
it 'aliases #alias_singleton_method to #alias_module_method' do
|
48
|
+
instance.method( :alias_module_method ).should == instance.method( :alias_singleton_method )
|
49
|
+
end
|
41
50
|
end
|
42
51
|
|
43
52
|
context 'Class' do
|
@@ -52,6 +61,9 @@ describe ::SingletonAttr do
|
|
52
61
|
it 'aliases #singleton_attr_writer to #class_attr_writer' do
|
53
62
|
instance.method( :class_attr_writer ).should == instance.method( :singleton_attr_writer )
|
54
63
|
end
|
64
|
+
it 'aliases #alias_singleton_method to #alias_class_method' do
|
65
|
+
instance.method( :alias_class_method ).should == instance.method( :alias_singleton_method )
|
66
|
+
end
|
55
67
|
end
|
56
68
|
|
57
69
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: singleton_attr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-03-11 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Provides :singleton_attr_accessor, :singleton_attr_reader, :singleton_attr_writer,
|
15
15
|
:module_attr_accessor, :module_attr_reader, :module_attr_writer, :class_attr_accessor,
|