Untitled

mail@pastecode.io avatar
unknown
javascript
a year ago
979 B
2
Indexable
Never
//Задача: не змінюючи логіки, змінити структуру коду, щоби вона відповідала принципу DRY:
const METHODS = {
  SET: 'set',
  APPLY: 'apply',
  GET: 'get',
};

ctx.prototype.__applyStyleState = styleLoop(METHODS.APPLY, styleState);

ctx.prototype.__setDefaultStyles = styleLoop(METHODS.SET);

ctx.prototype.__getStyleState = styleLoop(METHODS.GET);

let styleLoop = function (method, styleState = {}) {
  let keys = Object.keys(styleState).length ? Object.keys(styleState) : Object.keys(STYLES);
  for (let i = 0; i < keys.length; i++) {
    let key = keys[i];

    switch (method) {
      case METHODS.GET:
        styleState[key] = this[key];
        break;
      case METHODS.SET:
        this[key] = STYLES[key].canvas;
        break;
      case METHODS.APPLY:
        this[key] = styleState[key];
        break;
    }
  }

  if (method == METHODS.GET) return styleState;
};