table-resolver
Version:
Table resolution utilities
65 lines (46 loc) • 1.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _isFunction2 = require('lodash/isFunction');
var _isFunction3 = _interopRequireDefault(_isFunction2);
var _has2 = require('lodash/has');
var _has3 = _interopRequireDefault(_has2);
var _get2 = require('lodash/get');
var _get3 = _interopRequireDefault(_get2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var reIsPlainProp = /^\w*$/;
function nested(_ref) {
var column = _ref.column;
/* eslint no-param-reassign: "off" */
var property = column.property;
if (!property) {
return function (rowData) {
return rowData;
};
}
// if users provide a custom getter instead of a
// path for _.get, use that getter ...
if ((0, _isFunction3.default)(property)) {
// TODO: Function as key can't be right?
return function (rowData) {
rowData[property] = property(rowData);
return rowData;
};
}
// Make things simple if the property is simple. No copy needed.
if (typeof property === 'string' && reIsPlainProp.test(property)) {
return function (rowData) {
return rowData;
};
}
return function (rowData) {
// ... otherwise, make sure property exists, then _.get it
if (!(0, _has3.default)(rowData, property)) {
return rowData;
}
rowData[property] = (0, _get3.default)(rowData, property);
return rowData;
};
}
exports.default = nested;