UNPKG

929 BJavaScriptView Raw
1import { pick, omit, isObject } from './lib';
2
3export default class Controller {
4
5 filterMode = 'omit';
6 filter;
7
8 bindMethods(array) {
9 array.map(method => {
10 this[method] = this['can'].bind(this);
11 });
12 }
13
14 filtrate(target) {
15 if (!target) return false;
16 if (!isObject(target)) {
17 throw new Error(`method "filtrate" in "BaseController" gets only object`);
18 }
19 let {filter, filterMode} = this;
20 if (!filter) return target;
21
22 switch (filterMode) {
23
24 case 'omit':
25 if (target.length > 0) {
26 return target.map(target => {
27 return omit(target, filter);
28 });
29 } else {
30 return omit(target, filter);
31 }
32
33 case 'pick':
34 if (target.length > 0) {
35 return target.map(target => {
36 return pick(target, filter);
37 });
38 } else {
39 return pick(target, filter);
40 }
41
42 }
43 }
44
45}