mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
Cleanup indexer code
This commit is contained in:
parent
072055d947
commit
e79d8872ac
1 changed files with 22 additions and 15 deletions
|
@ -31,23 +31,30 @@ module Spectator
|
|||
getter example_count = 0
|
||||
|
||||
def [](index : Int) : Example
|
||||
offset = check_bounds(index)
|
||||
find_nested(offset)
|
||||
end
|
||||
|
||||
private def check_bounds(index)
|
||||
if index < 0
|
||||
raise IndexError.new if index < -example_count
|
||||
index + example_count
|
||||
else
|
||||
raise IndexError.new if index >= example_count
|
||||
index
|
||||
end
|
||||
end
|
||||
|
||||
private def find_nested(index)
|
||||
offset = index
|
||||
offset += example_count if offset < 0
|
||||
raise IndexError.new if offset < 0 || offset >= example_count
|
||||
found = children.find do |child|
|
||||
child = children.each do |child|
|
||||
count = child.example_count
|
||||
if offset < count
|
||||
true
|
||||
else
|
||||
break child if offset < count
|
||||
offset -= count
|
||||
false
|
||||
end
|
||||
end
|
||||
if found
|
||||
found[offset]
|
||||
else
|
||||
raise IndexError.new
|
||||
end
|
||||
# It should be impossible to get `nil` here,
|
||||
# provided the bounds check and example counts are correct.
|
||||
child.not_nil![offset]
|
||||
end
|
||||
|
||||
def finished? : Bool
|
||||
|
|
Loading…
Reference in a new issue