Browse Source

[slider] Renamed variables and made functions purer

master
Muthu Kumar 6 years ago
parent
commit
a8e451da0e
  1. 4
      structures/deck.js
  2. 42
      structures/slider.js

4
structures/window.js → structures/deck.js

@ -1,4 +1,4 @@
class Window extends Array { class Deck extends Array {
constructor (...args) { constructor (...args) {
if(args.length === 1) return args; if(args.length === 1) return args;
@ -33,4 +33,4 @@ class Window extends Array {
} }
}; };
module.exports = Window; module.exports = Deck;

42
structures/slider.js

@ -2,38 +2,42 @@
const isEq = require('@codefeathers/iseq/isEq'); const isEq = require('@codefeathers/iseq/isEq');
const Window = require('./window'); const Deck = require('./deck');
const wrap = (f, ...x) => (...y) => f(...x, ...y); const wrap = (f, ...x) => (...y) => f(...x, ...y);
class Slider { class Slider {
constructor (options) { constructor (options) {
this.windowSize = options.window; this.windowSize = options.size;
this.prefer = options.prefer; this.prefer = options.prefer;
this.accepting = options.accepting; this.accepting = options.accepting;
} }
slide (to, from) { slide (master, compare) {
const k = this.windowSize; const k = this.windowSize;
const host = new Window(...to);
const guest = new Window(...from); const host = new Deck(...master);
const recurse = (window, i) => { const guest = new Deck(...compare);
let x, y, z;
x = host.findIndex(wrap(isEq, window[0])); const startSliding = (window, i) => {
let switcher = true;
if(x !== -1) const firstMatch = host.findIndex(wrap(isEq, window[0]));
for (let j = 1; j < window.length; j++) if(firstMatch !== -1
if(host.findIndexAfter(x, wrap(isEq, window[j])) === -1) { && window.every((item, j) => host.findIndexAfter(
switcher = false; firstMatch,
break; wrap(isEq, window[j])
} )) !== -1
if(switcher) return [ x, i ]; ) return [ firstMatch, i ];
const newWindow = new Window(...guest.slice(++i, k));
const newWindow = new Deck(...guest.slice(++i, k));
if(newWindow.length !== 0 && newWindow.length === k) return recurse(newWindow, i); if(newWindow.length !== 0 && newWindow.length === k) return recurse(newWindow, i);
return [ -1, -1 ]; return [ -1, -1 ];
}; };
const window = new Window(...guest.slice(0, k)); const window = new Deck(...guest.slice(0, k));
const index = recurse(window, 0); const index = startSliding(window, 0);
return index; return index;
} }
}; };

Loading…
Cancel
Save