Source: boolean.js

/**
 * 本模块提供布尔值处理相关方法。
 * @module boolean
 */

/**
 * 布尔值转换为 Y 或者 N。
 * @author tanyuqin
 * @param {boolean} value 布尔值。
 * @return {string} Y 或者 N。
 */
export function boolToYN(value) {
  if (typeof value !== 'boolean') {
    throw new Error('The value argument must be a boolean type');
  }
  return value ? 'Y' : 'N';
}

/**
 * Y 或者 N 转换为布尔值。
 * @author tanyuqin
 * @param {string} value Y 或者 N。
 * @return {boolean} 布尔值。
 */
export function ynToBool(value) {
  value = String(value).toUpperCase();
  if (value !== 'Y' && value !== 'N') {
    throw new Error('The value argument must be "Y" or "N"');
  }
  return value === 'Y';
}

/**
 * 检查指定数组元素的值是否都为 Y。
 * @param {Array} values 指定数组。
 * @return {boolean} 指定数组元素的值是否都为 Y。
 */
export function allY(values) { return values.every(ynToBool); }

/**
 * 检查指定数组元素的值是否至少有一个为 Y。
 * @param {Array} values 指定数组。
 * @return {boolean} 指定数组元素的值是否至少有一个为 Y。
 */
export function someY(values) { return values.some(ynToBool); }

/**
 * 检查指定数组元素的值是否都为 N。
 * @param {Array} values 指定数组。
 * @return {boolean} 指定数组元素的值是否都为 N。
 */
export function allN(values) {
  return values.every(function(value) {
    return !ynToBool(value);
  });
}

/**
 * 检查指定数组元素的值是否至少有一个为 N。
 * @param {Array} values 指定数组。
 * @return {boolean} 指定数组元素的值是否至少有一个为 N。
 */
export function someN(values) {
  return values.some(function(value) {
    return !ynToBool(value);
  });
}