UNPKG

mezzanine

Version:

Fantasy land union types with pattern matching

80 lines (22 loc) 2.12 kB
'use strict';Object.defineProperty(exports, "__esModule", { value: true });exports. createPred = createPred;exports. createBuilder = createBuilder;exports. transformInput = transformInput;var _ramda = require('ramda');var _fixtures = require('./fixtures');require('./type-container'); //$FlowIssue var reducePred = _ramda.where;function createPred(val) {switch (true) {case isDirectlyEquals(val):return obj => obj === val;case isCheckByType(val):return (0, _ramda.is)(val);case (0, _fixtures.isMezzanine)(val):{//$FlowIssue var cast = val;return obj => cast.is(obj);}case typeof val === 'function':{var _cast = val;return _cast;}case (0, _ramda.isNil)(val):return _ramda.isNil;case typeof val === 'object':{var _cast2 = val;var mapped = (0, _ramda.map)(createPred, _cast2);return reducePred(mapped);}default:{var _cast3 = val;return _cast3;}}}function createBuilder(val, data) {switch (true) {case isDirectlyEquals(val):return data;case isCheckByType(val):return data;case (0, _fixtures.isMezzanine)(val):return val(data);case typeof val === 'function':return data;case (0, _ramda.isNil)(val):return data;case typeof val === 'object':return reduceBuilder(val, data);default:return data;}}function reduceBuilder(predMap, data) {var keys = Object.keys(predMap);var result = {};for (var i = 0, ln = keys.length; i < ln; ++i) {var _key = keys[i];var keyPred = predMap[_key];var nestedData = (0, _ramda.prop)(_key, data);result[_key] = createBuilder(keyPred, nestedData);}return result;}function transformInput(val, isMono) {switch (true) {case isMono === false:return val; case (0, _fixtures.isMezzanine)(val):return { value: val }; case !(0, _fixtures.isObject)(val):return { value: val }; case !(0, _ramda.has)('value', val):return { value: val }; default:return val;} } var isDirectlyEquals = val => typeof val === 'string' || typeof val === 'number' || typeof val === 'boolean'; var isCheckByType = val => val === String || val === Number || val === Boolean || val === Function || val === Array; //# sourceMappingURL=descriptor.js.map