Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | 20x 20x 54x 54x 54x 54x 54x 20x 20x 20424x 20424x 18475x 20424x 20x 20x 53501x 53501x 52946x 52946x 53501x 53501x 52946x 52946x 53501x 53501x 53501x 53501x 20x 20x 37221x 37221x 33944x 33944x 37221x 37221x 37221x 37221x 37221x 37221x 37221x 37221x 37221x 37221x 20x 892x 892x 892x 20x 20x 20x 20x 20x 20x 20x 20x | 'use strict'; function init(list) { list._idleNext = list; list._idlePrev = list; return list; } // Show the most idle item. function peek(list) { if (list._idlePrev === list) return null; return list._idlePrev; } // Remove an item from its list. function remove(item) { if (item._idleNext) { item._idleNext._idlePrev = item._idlePrev; } if (item._idlePrev) { item._idlePrev._idleNext = item._idleNext; } item._idleNext = null; item._idlePrev = null; } // Remove an item from its list and place at the end. function append(list, item) { if (item._idleNext || item._idlePrev) { remove(item); } // Items are linked with _idleNext -> (older) and _idlePrev -> (newer). // Note: This linkage (next being older) may seem counter-intuitive at first. item._idleNext = list._idleNext; item._idlePrev = list; // The list _idleNext points to tail (newest) and _idlePrev to head (oldest). list._idleNext._idlePrev = item; list._idleNext = item; } function isEmpty(list) { return list._idleNext === list; } module.exports = { init, peek, remove, append, isEmpty }; |