fix sorting and linked list bugs
This commit is contained in:
parent
37736ab316
commit
6fb58200b1
@ -401,19 +401,16 @@ Index =
|
||||
return
|
||||
|
||||
sortOnTop: (match) ->
|
||||
offset = 0
|
||||
{sortedNodes} = Index
|
||||
threadRoot = sortedNodes.first
|
||||
threadRoot = target = sortedNodes.first
|
||||
while threadRoot
|
||||
{next} = threadRoot
|
||||
if match Get.threadFromRoot threadRoot.data
|
||||
target = sortedNodes.first
|
||||
j = 0
|
||||
while j++ < offset
|
||||
if threadRoot is target
|
||||
target = target.next
|
||||
unless threadRoot is target
|
||||
offset++
|
||||
else
|
||||
sortedNodes.before target, threadRoot
|
||||
threadRoot = threadRoot.next
|
||||
threadRoot = next
|
||||
return
|
||||
|
||||
buildIndex: ->
|
||||
|
||||
@ -29,7 +29,10 @@ class RandomAccessList
|
||||
root.prev = item
|
||||
item.next = root
|
||||
item.prev = prev
|
||||
prev.next = item if prev
|
||||
if prev
|
||||
prev.next = item
|
||||
else
|
||||
@first = item
|
||||
|
||||
after: (root, item) ->
|
||||
return if item.prev is root
|
||||
@ -40,14 +43,20 @@ class RandomAccessList
|
||||
root.next = item
|
||||
item.prev = root
|
||||
item.next = next
|
||||
next.prev = item if next
|
||||
if next
|
||||
next.prev = item
|
||||
else
|
||||
@last = item
|
||||
|
||||
prepend: (item) ->
|
||||
{first} = @
|
||||
return if item is first or not @[item.ID]
|
||||
@rmi item
|
||||
item.next = first
|
||||
first.prev = item
|
||||
if first
|
||||
first.prev = item
|
||||
else
|
||||
@last = item
|
||||
@first = item
|
||||
delete item.prev
|
||||
|
||||
@ -77,4 +86,4 @@ class RandomAccessList
|
||||
if next
|
||||
next.prev = prev
|
||||
else
|
||||
@last = prev
|
||||
@last = prev
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user