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 | 25x 25x 52x 52x 52x 52x 52x 25x 25x 22157x 22157x 20439x 22157x 25x 25x 54263x 54263x 53708x 53708x 54263x 54263x 53708x 53708x 54263x 54263x 54263x 54263x 25x 25x 38299x 38299x 33935x 33935x 38299x 38299x 38299x 38299x 38299x 38299x 38299x 38299x 38299x 38299x 25x 874x 874x 874x 25x 25x 25x 25x 25x 25x 25x 25x | '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 }; |