bootinq 2.0 → 2.0.1
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/lib/bootinq/component.rb +253 -37
- data/lib/bootinq/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e377cd962a0467e2e6ea056674bae230612b823f667d780c9982d76ff4bbf0c
|
4
|
+
data.tar.gz: 402aef98700c975d26ef975c8e21fef639138dc03b5adb93c54f8e85e3b5a44f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 78dffcca879fd25017dc6d09fdd33f5bfdbd5878922a7c705d10f0ccd07cd703bede9e2d5e2e06ccc8c18bcdc21e091fc9efb7611e8f7d0b69193bfe4f951676
|
7
|
+
data.tar.gz: e6aeda4ed1293fb720a9998d79dd877bc36cff136fc78b9bcf420b8dd2f9a322fe573014303c4572c0bde882c327d6d66d7c127ec0983403fa0693ab43047d0e
|
data/lib/bootinq/component.rb
CHANGED
@@ -2,90 +2,306 @@
|
|
2
2
|
|
3
3
|
class Bootinq
|
4
4
|
class Component
|
5
|
-
|
5
|
+
# @!attribute [r] intern
|
6
|
+
# @return [Symbol]
|
6
7
|
|
7
|
-
|
8
|
-
alias :to_s :id2name
|
9
|
-
alias :gem_name :id2name
|
10
|
-
alias :name :id2name
|
8
|
+
attr_reader :intern
|
11
9
|
|
10
|
+
# @!attribute [r] id2name
|
11
|
+
# @return [Symbol]
|
12
|
+
|
13
|
+
attr_reader :id2name
|
14
|
+
|
15
|
+
# @!attribute [r] group
|
16
|
+
# @return [Symbol] Bundle group name
|
17
|
+
|
18
|
+
attr_reader :group
|
19
|
+
|
20
|
+
alias_method :to_sym, :intern
|
21
|
+
alias_method :to_s, :id2name
|
22
|
+
alias_method :gem_name, :id2name
|
23
|
+
alias_method :name, :id2name
|
24
|
+
|
25
|
+
# @see #initialize
|
26
|
+
# @param intern [String, Symbol]
|
27
|
+
# @return [Bootinq::Component] frozen
|
28
|
+
def self.new(intern)
|
29
|
+
super.freeze
|
30
|
+
end
|
31
|
+
|
32
|
+
# @param intern [String, Symbol]
|
33
|
+
# @return [self]
|
12
34
|
def initialize(intern)
|
13
|
-
@intern
|
35
|
+
@intern = intern.to_sym
|
14
36
|
@id2name = intern.to_s.freeze
|
15
|
-
@group
|
16
|
-
freeze
|
37
|
+
@group = :"#{@id2name}_boot"
|
17
38
|
end
|
18
39
|
|
40
|
+
# @return [Boolean]
|
19
41
|
def mountable?
|
20
42
|
false
|
21
43
|
end
|
22
44
|
|
45
|
+
# @return [Symbol]
|
23
46
|
def module_name
|
24
47
|
@id2name.camelcase.to_sym
|
25
48
|
end
|
26
49
|
|
50
|
+
# @return [Module]
|
51
|
+
def namespace
|
52
|
+
Object.const_get(module_name)
|
53
|
+
end
|
54
|
+
|
55
|
+
# @return [void]
|
27
56
|
def engine
|
28
57
|
end
|
29
58
|
|
59
|
+
# @param klass [Class]
|
60
|
+
# @return [Boolean]
|
30
61
|
def kind_of?(klass)
|
31
62
|
super || @intern.kind_of?(klass)
|
32
63
|
end
|
33
64
|
|
34
|
-
|
65
|
+
##
|
66
|
+
# @!group Coercing methods
|
67
|
+
|
68
|
+
# Coerces self to other value klass.
|
69
|
+
# @overload coerce_to(string)
|
70
|
+
# @param string [String]
|
71
|
+
# @return [String] {#id2name}
|
72
|
+
# @overload coerce_to(symbol)
|
73
|
+
# @param symbol [Symbol]
|
74
|
+
# @return [Symbol] {#intern}
|
75
|
+
# @overload coerce_to(other)
|
76
|
+
# @param other [Any]
|
77
|
+
# @return [self]
|
78
|
+
def coerce_to(other)
|
35
79
|
case other
|
36
|
-
when String
|
37
|
-
when Symbol
|
38
|
-
|
80
|
+
when String; @id2name
|
81
|
+
when Symbol; @intern
|
82
|
+
else self
|
39
83
|
end
|
40
84
|
end
|
41
85
|
|
42
|
-
|
86
|
+
# Coerces other value
|
87
|
+
# @overload coerce(symbol)
|
88
|
+
# @param symbol [Symbol]
|
89
|
+
# @return [Symbol] symbol
|
90
|
+
# @overload coerce(other)
|
91
|
+
# @param other [String, Any]
|
92
|
+
# @return [String] other
|
93
|
+
def coerce(other)
|
43
94
|
case other
|
44
|
-
when String
|
45
|
-
|
46
|
-
else super
|
95
|
+
when String, Symbol; other
|
96
|
+
else other.to_s
|
47
97
|
end
|
48
98
|
end
|
49
99
|
|
100
|
+
# @!endgroup
|
101
|
+
##
|
102
|
+
|
103
|
+
##
|
104
|
+
# @!group Comparation methods
|
105
|
+
|
106
|
+
# @param other [Any]
|
107
|
+
# @return [Boolean]
|
108
|
+
def ==(other)
|
109
|
+
other = coerce(other)
|
110
|
+
other == coerce_to(other)
|
111
|
+
end
|
112
|
+
|
113
|
+
# @param other [Any]
|
114
|
+
# @return [Boolean]
|
115
|
+
def ===(other)
|
116
|
+
other = coerce(other)
|
117
|
+
other === coerce_to(other)
|
118
|
+
end
|
119
|
+
|
120
|
+
# @param other [Any]
|
121
|
+
# @return [Boolean]
|
50
122
|
def casecmp(other)
|
51
|
-
|
52
|
-
|
53
|
-
when Symbol then @intern.casecmp(other)
|
54
|
-
when self.class then casecmp(other.to_s)
|
55
|
-
end
|
123
|
+
other = coerce(other)
|
124
|
+
coerce_to(other).casecmp(other)
|
56
125
|
end
|
57
126
|
|
127
|
+
# @param other [Any]
|
128
|
+
# @return [Boolean]
|
58
129
|
def casecmp?(other)
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
130
|
+
other = coerce(other)
|
131
|
+
coerce_to(other).casecmp?(other)
|
132
|
+
end
|
133
|
+
|
134
|
+
# @!endgroup
|
135
|
+
##
|
136
|
+
|
137
|
+
##
|
138
|
+
# @!group Symbol-delegated methods
|
139
|
+
|
140
|
+
# @return [String] representation of {#intern} as a symbol literal.
|
141
|
+
def inspect
|
142
|
+
@intern.inspect
|
143
|
+
end
|
144
|
+
|
145
|
+
# @return [Proc] responded to the given method by {#intern}
|
146
|
+
def to_proc
|
147
|
+
@intern.to_proc
|
64
148
|
end
|
65
149
|
|
66
|
-
|
67
|
-
|
150
|
+
# @return [Integer] identifier for {#intern}
|
151
|
+
def __id__
|
152
|
+
@intern.__id__
|
153
|
+
end
|
68
154
|
|
69
|
-
|
70
|
-
|
155
|
+
# @return [Integer] {#intern}'s hash
|
156
|
+
def hash
|
157
|
+
@intern.hash
|
158
|
+
end
|
71
159
|
|
72
|
-
|
73
|
-
|
160
|
+
# @!endgroup
|
161
|
+
##
|
74
162
|
|
75
|
-
|
76
|
-
|
163
|
+
##
|
164
|
+
# @!group String-delegated methods
|
77
165
|
|
78
|
-
|
79
|
-
|
166
|
+
# @return [Encoding] of {#id2name}
|
167
|
+
def encoding
|
168
|
+
@id2name.encoding
|
169
|
+
end
|
170
|
+
|
171
|
+
# @return [Boolean]
|
172
|
+
def empty?
|
173
|
+
@id2name.empty?
|
174
|
+
end
|
175
|
+
|
176
|
+
# @return [Integer] length of {#id2name}
|
177
|
+
def length
|
178
|
+
@id2name.length
|
179
|
+
end
|
180
|
+
|
181
|
+
# @param pattern [Regexp, String]
|
182
|
+
# @param start_from [Integer] position in {#id2name} to begin the search
|
183
|
+
# @yield [MatchData] if match succeed
|
184
|
+
# @yieldreturn [Any]
|
185
|
+
# @return [MatchData] unless block given
|
186
|
+
# @return [Any] returned by the given block
|
187
|
+
def match(*args, &block)
|
188
|
+
@id2name.match(*args, &block)
|
189
|
+
end
|
190
|
+
|
191
|
+
# @param pattern [Regexp, String]
|
192
|
+
# @param start_from [Integer] position in {#id2name} to begin the search
|
193
|
+
# @return [Boolean] indicates whether the regexp is matched or not
|
194
|
+
def match?(*args)
|
195
|
+
@id2name.match?(*args)
|
196
|
+
end
|
197
|
+
|
198
|
+
# @overload =~(pattern)
|
199
|
+
# @param pattern [Regexp]
|
200
|
+
# @return [Integer] if matched, the position the match starts
|
201
|
+
# @return [nil] if there is no match
|
202
|
+
# @overload =~(arg)
|
203
|
+
# @param arg [Object]
|
204
|
+
# @see Object#=~
|
205
|
+
def =~(arg)
|
206
|
+
@id2name =~ arg
|
207
|
+
end
|
208
|
+
|
209
|
+
# Element reference
|
210
|
+
# @see String#slice
|
211
|
+
def slice(*args)
|
212
|
+
@id2name[*args]
|
213
|
+
end
|
214
|
+
|
215
|
+
alias_method :[], :slice
|
216
|
+
|
217
|
+
# @!endgroup
|
218
|
+
##
|
219
|
+
|
220
|
+
##
|
221
|
+
# @!group Symbol-delegated mutation methods
|
222
|
+
|
223
|
+
# @see Symbol#upcase
|
224
|
+
# @return [Bootinq::Component] new instance with upcased {#intern}
|
225
|
+
def upcase
|
226
|
+
self.class.new(@intern.upcase)
|
227
|
+
end
|
228
|
+
|
229
|
+
# @see Symbol#downcase
|
230
|
+
# @return [Bootinq::Component] new instance with downcased {#intern}
|
231
|
+
def downcase
|
232
|
+
self.class.new(@intern.downcase)
|
233
|
+
end
|
234
|
+
|
235
|
+
# @see Symbol#capitalize
|
236
|
+
# @return [Bootinq::Component] new instance with capitalized {#intern}
|
237
|
+
def capitalize
|
238
|
+
self.class.new(@intern.capitalize)
|
239
|
+
end
|
240
|
+
|
241
|
+
# @see Symbol#swapcase
|
242
|
+
# @return [Bootinq::Component] new instance with swapcased {#intern}
|
243
|
+
def swapcase
|
244
|
+
self.class.new(@intern.swapcase)
|
245
|
+
end
|
246
|
+
|
247
|
+
# @see Symbol#succ
|
248
|
+
# @return [Bootinq::Component] new instance with the successor {#intern}
|
249
|
+
def succ
|
250
|
+
self.class.new(@intern.succ)
|
251
|
+
end
|
252
|
+
|
253
|
+
# @see Symbol#next
|
254
|
+
# @return [Bootinq::Component] new instance with the next {#intern}
|
255
|
+
def next
|
256
|
+
self.class.new(@intern.next)
|
257
|
+
end
|
258
|
+
|
259
|
+
# @endgroup
|
260
|
+
##
|
80
261
|
end
|
81
262
|
|
82
263
|
class Mountable < Component
|
264
|
+
# @!attribute [r] module_name
|
265
|
+
# @return [Symbol]
|
266
|
+
|
267
|
+
# @!attribute [r] namespace
|
268
|
+
# @return [Module]
|
269
|
+
|
270
|
+
def initialize(intern)
|
271
|
+
super
|
272
|
+
@module_name = module_name()
|
273
|
+
@namespace = namespace()
|
274
|
+
end
|
275
|
+
|
83
276
|
def mountable?
|
84
277
|
true
|
85
278
|
end
|
86
279
|
|
280
|
+
def module_name
|
281
|
+
return @module_name if frozen? || defined?(@module_name)
|
282
|
+
super
|
283
|
+
end
|
284
|
+
|
285
|
+
def namespace
|
286
|
+
if frozen? || defined?(@namespace)
|
287
|
+
@namespace.is_a?(Proc) ? @namespace.call : @namespace
|
288
|
+
elsif namespace_defined?
|
289
|
+
super
|
290
|
+
else
|
291
|
+
proc { super }
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
295
|
+
# @return [Class]
|
87
296
|
def engine
|
88
|
-
|
297
|
+
namespace::Engine
|
298
|
+
end
|
299
|
+
|
300
|
+
private
|
301
|
+
|
302
|
+
# @api private
|
303
|
+
def namespace_defined?
|
304
|
+
Object.const_defined?(module_name)
|
89
305
|
end
|
90
306
|
end
|
91
307
|
end
|
data/lib/bootinq/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootinq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anton
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-10-
|
11
|
+
date: 2022-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|