1
0
mirror of https://github.com/ascribe/onion.git synced 2024-12-23 01:39:36 +01:00

Cherry pick changes to excludePropFromObject()

This commit is contained in:
Brett Sun 2015-11-02 18:31:01 +01:00
parent 8540e3de36
commit e890cf5bb1
2 changed files with 37 additions and 10 deletions

View File

@ -196,14 +196,41 @@ export function escapeHTML(s) {
return document.createElement('div').appendChild(document.createTextNode(s)).parentNode.innerHTML; return document.createElement('div').appendChild(document.createTextNode(s)).parentNode.innerHTML;
} }
export function excludePropFromObject(obj, propList){ /**
let clonedObj = mergeOptions({}, obj); * Returns a copy of the given object's own and inherited enumerable
for (let item in propList){ * properties, omitting any keys that pass the given filter function.
if (clonedObj[propList[item]]){ */
delete clonedObj[propList[item]]; function filterObjOnFn(obj, filterFn) {
const filteredObj = {};
for (let key in obj) {
const val = obj[key];
if (filterFn == null || !filterFn(val, key)) {
filteredObj[key] = val;
} }
} }
return clonedObj;
return filteredObj;
}
/**
* Similar to lodash's _.omit(), this returns a copy of the given object's
* own and inherited enumerable properties, omitting any keys that are
* in the given array or whose value pass the given filter function.
* @param {object} obj Source object
* @param {array|function} filter Array of key names to omit or function to invoke per iteration
* @return {object} The new object
*/
export function omitFromObject(obj, filter) {
if (filter && filter.constructor === Array) {
return filterObjOnFn(obj, (_, key) => {
return filter.indexOf(key) >= 0;
});
} else if (filter && typeof filter === 'function') {
return filterObjOnFn(obj, filter);
} else {
throw new Error('The given filter is not an array or function. Exclude aborted');
}
} }
/** /**

View File

@ -6,7 +6,7 @@ import { argsToQueryParams, getCookie } from '../utils/fetch_api_utils';
import AppConstants from '../constants/application_constants'; import AppConstants from '../constants/application_constants';
import {excludePropFromObject} from '../utils/general_utils'; import { omitFromObject } from '../utils/general_utils';
class Requests { class Requests {
_merge(defaults, options) { _merge(defaults, options) {
@ -138,9 +138,9 @@ class Requests {
return this.request('delete', newUrl); return this.request('delete', newUrl);
} }
_putOrPost(url, paramsAndBody, method){ _putOrPost(url, paramsAndBody, method) {
let paramsCopy = this._merge(paramsAndBody); let paramsCopy = Object.assign({}, paramsAndBody);
let params = excludePropFromObject(paramsAndBody, ['body']); let params = omitFromObject(paramsAndBody, ['body']);
let newUrl = this.prepareUrl(url, params); let newUrl = this.prepareUrl(url, params);
let body = null; let body = null;
if (paramsCopy && paramsCopy.body) { if (paramsCopy && paramsCopy.body) {