Browse Source

[select] Cleanup and refactor

develop
Muthu Kumar 7 years ago
parent
commit
4c1c99b13f
  1. 34
      Select.js

34
Select.js

@ -5,9 +5,13 @@ class SelectValue {
this.value = value; this.value = value;
if (resolve) this.resolve = resolve; if (resolve) this.resolve = resolve;
} }
resolve() {
return null;
}
} }
SelectValue.prototype.resolve = () => null; // SelectValue.prototype.resolve = () => null;
class SelectIterable { class SelectIterable {
constructor(values, tests) { constructor(values, tests) {
@ -20,31 +24,25 @@ class SelectIterable {
} }
for(test, consequent) { for(test, consequent) {
const self = this;
return new SelectIterable( return new SelectIterable(
self.values, this.values,
[ ...self.tests, { test, consequent } ] [ ...this.tests, { test, consequent } ]
); );
} }
}
/* eslint-disable-next-line func-names */ resolve(...args) {
SelectIterable.prototype.resolve = function (...args) { return this.values.map(item => {
const self = this; const resolver = this
return self.values.map(item => {
const resolve = self
.tests .tests
/* eslint-disable-next-line */ .find(x => x.test(item.value)
.find(x => {
return x.test(item.value)
? x.consequent ? x.consequent
: null);
return resolver
? resolver.consequent(...args, this.value)
: null; : null;
}); });
return resolve }
? resolve.consequent(...args, self.value) }
: () => null;
});
};
class Select extends SelectValue { class Select extends SelectValue {
constructor(value, resolve) { constructor(value, resolve) {

Loading…
Cancel
Save