wadjet
Version:
The your birth date is based on statistical psychology and will expose your personality. This package as a mocule does its calculations.
62 lines (54 loc) • 1.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createComparator = undefined;
require('../type');
/**
* Evaluation function used for sorting in affinity order.
* @param {Wadjet.NatureVector} a Personality type.
* @param {Wadjet.NatureVector} b Personality type.
* @return {-1|1} Comparison result.
*/
var cmpA = function cmpA(a, b) {
return a === 'E' && b === 'A' || a === 'A' && b === 'H' || a === 'E' && b === 'H' ? 1 : -1;
};
/**
* Evaluation function used for sorting in affinity order.
* @param {Wadjet.NatureVector} a Personality type.
* @param {Wadjet.NatureVector} b Personality type.
* @return {-1|1} Comparison result.
*/
var cmpE = function cmpE(a, b) {
return a === 'H' && b === 'E' || a === 'E' && b === 'A' || a === 'H' && b === 'A' ? 1 : -1;
};
/**
* Evaluation function used for sorting in affinity order.
* @param {Wadjet.NatureVector} a Personality type.
* @param {Wadjet.NatureVector} b Personality type.
* @return {-1|1} Comparison result.
*/
var cmpH = function cmpH(a, b) {
return a === 'A' && b === 'H' || a === 'H' && b === 'E' || a === 'A' && b === 'E' ? 1 : -1;
};
/** Collection of comparator. */
var cmp = { A: cmpA, E: cmpE, H: cmpH };
/**
* Create evaluation function used for sorting in affinity order.
* @param {string} type Personality type.
*/
var createComparator = exports.createComparator = function createComparator(type) {
return (
/**
* @param {string} a Personality type.
* @param {string} b Personality type.
* @returns {-1|0|1}
*/
function (a, b) {
return function (x, y, t, p) {
return x === y || p.test(x) || p.test(y) || p.test(t) ? 0 : cmp[t](x, y);
}(a.charAt().toUpperCase(), b.charAt().toUpperCase(), type.charAt().toUpperCase(), /[^EAH]/);
}
);
};
exports.default = createComparator;