Class: Family
- Inherits:
-
Object
show all
- Extended by:
- Forwardable
- Includes:
- Enumerable
- Defined in:
- lib/family.rb,
lib/family/version.rb,
lib/family/singleton_class.rb
Overview
Note:
return self -> Array
-
#flatten is different
-
#flatten! is none
-
#product
Defined Under Namespace
Classes: MismatchedObject
Constant Summary
collapse
- VERSION =
'0.1.0'
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(pattern, values: []) ⇒ Family
Returns a new instance of Family.
46
47
48
49
50
|
# File 'lib/family.rb', line 46
def initialize(pattern, values: [])
@pattern, @values = pattern, values.to_ary
raise MismatchedObject unless valid?
end
|
Instance Attribute Details
#pattern ⇒ Object
Returns the value of attribute pattern.
44
45
46
|
# File 'lib/family.rb', line 44
def pattern
@pattern
end
|
Class Method Details
.__new__(pattern, values) ⇒ Object
12
13
14
|
# File 'lib/family/singleton_class.rb', line 12
def __new__(pattern, values)
new(pattern, values: values)
end
|
.define(values: [], &block) ⇒ Family
7
8
9
|
# File 'lib/family/singleton_class.rb', line 7
def define(values: [], &block)
__new__(Eqq.build(&block), values)
end
|
Instance Method Details
#*(times_or_delimiter) ⇒ Family
142
143
144
145
146
147
148
149
150
151
|
# File 'lib/family.rb', line 142
def *(times_or_delimiter)
case times_or_delimiter
when Integer
self.class.__new__(@pattern, @values * times_or_delimiter)
when String
join(times_or_delimiter)
else
raise ArgumentError
end
end
|
#<<(value) ⇒ self
Also known as:
push
80
81
82
83
84
85
|
# File 'lib/family.rb', line 80
def <<(value)
raise MismatchedObject unless family?(value)
@values << value
self
end
|
#clear ⇒ self
165
166
167
168
|
# File 'lib/family.rb', line 165
def clear
@values.clear
self
end
|
171
172
173
|
# File 'lib/family.rb', line 171
def compact
self.class.__new__(@pattern, @values.compact)
end
|
#compact! ⇒ self?
176
177
178
|
# File 'lib/family.rb', line 176
def compact!
@values.compact! && self
end
|
#concat(list) ⇒ self
99
100
101
102
103
104
|
# File 'lib/family.rb', line 99
def concat(list)
raise MismatchedObject unless similar?(list)
@values.concat(list)
self
end
|
#delete_if(&block) ⇒ self
198
199
200
201
202
203
|
# File 'lib/family.rb', line 198
def delete_if(&block)
return to_enum(__callee__) unless block
reject!(&block)
self
end
|
#eql?(other) ⇒ Boolean
185
186
187
188
|
# File 'lib/family.rb', line 185
def eql?(other)
other.kind_of?(::Family) &&
(_comparison_values == other._comparison_values)
end
|
#family?(value) ⇒ Boolean
106
107
108
|
# File 'lib/family.rb', line 106
def family?(value)
@pattern === value
end
|
#fill(*args, &block) ⇒ self
221
222
223
224
225
226
227
|
# File 'lib/family.rb', line 221
def fill(*args, &block)
filled = @values.dup.fill(*args, &block)
raise MismatchedObject unless similar?(filled)
@values = filled
self
end
|
#freeze ⇒ self
159
160
161
162
|
# File 'lib/family.rb', line 159
def freeze
@values.freeze
super
end
|
#hash ⇒ Number
181
182
183
|
# File 'lib/family.rb', line 181
def hash
_comparison_values.hash
end
|
#inspect ⇒ String
75
76
77
|
# File 'lib/family.rb', line 75
def inspect
"Family<#{@pattern.inspect}>: #{@values.inspect}"
end
|
#keep_if(&block) ⇒ Object
213
214
215
216
217
218
|
# File 'lib/family.rb', line 213
def keep_if(&block)
return to_enum(__callee__) unless block
select!(&block)
self
end
|
#map(&block) ⇒ Family
Also known as:
collect
120
121
122
123
124
|
# File 'lib/family.rb', line 120
def map(&block)
return to_enum(__callee__) { size } unless block
self.class.__new__(@pattern, @values.map(&block))
end
|
#map!(&block) ⇒ self
Also known as:
collect!
129
130
131
132
133
134
135
136
137
|
# File 'lib/family.rb', line 129
def map!(&block)
return to_enum(__callee__) { size } unless block
mapped = @values.map(&block)
raise InvalidOperation unless similar?(mapped)
@values = mapped
self
end
|
#reject!(&block) ⇒ self?
191
192
193
194
195
|
# File 'lib/family.rb', line 191
def reject!(&block)
return to_enum(__callee__) unless block
@values.reject!(&block) && self
end
|
#replace(list) ⇒ self
231
232
233
234
235
236
|
# File 'lib/family.rb', line 231
def replace(list)
raise MismatchedObject unless similar?(list)
@values = list.dup
self
end
|
239
240
241
|
# File 'lib/family.rb', line 239
def reverse
self.class.__new__(@pattern, @values.reverse)
end
|
#reverse! ⇒ self
244
245
246
247
|
# File 'lib/family.rb', line 244
def reverse!
@values.reverse!
self
end
|
#rotate(pos = 1) ⇒ Family
251
252
253
|
# File 'lib/family.rb', line 251
def rotate(pos=1)
self.class.__new__(@pattern, @values.rotate(pos))
end
|
#rotate!(pos = 1) ⇒ self
257
258
259
260
|
# File 'lib/family.rb', line 257
def rotate!(pos=1)
@values.rotate!(pos)
self
end
|
#select!(&block) ⇒ self?
Also known as:
filter!
206
207
208
209
210
|
# File 'lib/family.rb', line 206
def select!(&block)
return to_enum(__callee__) unless block
@values.select!(&block) && self
end
|
263
264
265
|
# File 'lib/family.rb', line 263
def shuffle(...)
self.class.__new__(@pattern, @values.shuffle(...))
end
|
#shuffle! ⇒ self
268
269
270
271
|
# File 'lib/family.rb', line 268
def shuffle!(...)
@values.shuffle!(...)
self
end
|
#similar?(list) ⇒ Boolean
111
112
113
|
# File 'lib/family.rb', line 111
def similar?(list)
list.all? { |v| family?(v) }
end
|
#sort(&block) ⇒ Family
274
275
276
|
# File 'lib/family.rb', line 274
def sort(&block)
self.class.__new__(@pattern, @values.sort(&block))
end
|
#sort!(&block) ⇒ self?
279
280
281
|
# File 'lib/family.rb', line 279
def sort!(&block)
@values.sort!(&block) && self
end
|
#sort_by(&block) ⇒ Family
284
285
286
|
# File 'lib/family.rb', line 284
def sort_by(&block)
self.class.__new__(@pattern, @values.sort_by(&block))
end
|
#sort_by!(&block) ⇒ self?
289
290
291
|
# File 'lib/family.rb', line 289
def sort_by!(&block)
@values.sort_by!(&block) && self
end
|
#to_family ⇒ self
154
155
156
|
# File 'lib/family.rb', line 154
def to_family
self
end
|
#uniq(&block) ⇒ Family
294
295
296
|
# File 'lib/family.rb', line 294
def uniq(&block)
self.class.__new__(@pattern, @values.uniq(&block))
end
|
#uniq!(&block) ⇒ self?
299
300
301
|
# File 'lib/family.rb', line 299
def uniq!(&block)
@values.uniq!(&block) && self
end
|
#unshift(value) ⇒ self
90
91
92
93
94
95
|
# File 'lib/family.rb', line 90
def unshift(value)
raise MismatchedObject unless family?(value)
@values.unshift(value)
self
end
|
#valid? ⇒ Boolean
115
116
117
|
# File 'lib/family.rb', line 115
def valid?
similar?(@values)
end
|
#values ⇒ Array
Also known as:
to_ary, to_a
67
68
69
|
# File 'lib/family.rb', line 67
def values
@values.dup
end
|
#values_at(*selectors) ⇒ Family
305
306
307
|
# File 'lib/family.rb', line 305
def values_at(*selectors)
self.class.__new__(@pattern, @values.values_at(*selectors))
end
|