Module: RedBlocks::SetUtils
- Included in:
- Set
- Defined in:
- lib/red_blocks/set_utils.rb
Defined Under Namespace
Modules: ClassMethods
Classes: InvalidEntriesError
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.included(base) ⇒ Object
3
4
5
|
# File 'lib/red_blocks/set_utils.rb', line 3
def self.included(base)
base.extend(ClassMethods)
end
|
Instance Method Details
#joined_key(array, **args) ⇒ Object
25
26
27
|
# File 'lib/red_blocks/set_utils.rb', line 25
def joined_key(array, **args)
self.class.joined_key(array, **args)
end
|
#normalize_entries(entries) ⇒ Object
29
30
31
32
33
34
35
36
|
# File 'lib/red_blocks/set_utils.rb', line 29
def normalize_entries(entries)
blank_entry = [-RedBlocks.config.infinity, RedBlocks.config.blank_id]
if entries.first.is_a?(Array)
entries.map{ |id, score| [score, id] } + [blank_entry]
else
entries.map {|id| [0, id] } + [blank_entry]
end
end
|
#validate_array_entry(entry) ⇒ Object
61
62
63
64
65
|
# File 'lib/red_blocks/set_utils.rb', line 61
def validate_array_entry(entry)
is_pair = entry.size == 2
id, score = entry
is_pair && id.is_a?(Integer) && (score.is_a?(Numeric) && !score.to_f.nan?)
end
|
#validate_entries!(entries) ⇒ Object
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/red_blocks/set_utils.rb', line 38
def validate_entries!(entries)
case entries
when Array
entry = entries[0]
case entry
when Integer
entries
when Array
if !validate_array_entry(entry)
raise InvalidEntriesError.new(entries, key)
else
entries
end
when NilClass
entries
else
raise InvalidEntriesError.new(entries, key)
end
else
raise InvalidEntriesError.new(entries, key)
end
end
|