/**
 * Created by jiachenpan on 16/11/18.
 */
/**
 * @param {string} path
 * @returns {Boolean}
 */
export function isExternal(path) {
  return /^(https?:|mailto:|tel:)/.test(path)
}

/**
 * @param {string} str
 * @returns {Boolean}
 */
export function validUsername(str) {
  return !!str
}


export function isValidateUsername(str) {
  return !!(str && str.length > 3 && str.length < 64);

}

/* 合法uri*/
export function validateURL(textval) {
  const urlRegex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/;
  return urlRegex.test(textval)
}

/* 小写字母*/
export function validateLowerCase(str) {
  const reg = /^[a-z]+$/;
  return reg.test(str)
}

// 大写字母
export function validateUpperCase(str) {
  const reg = /^[A-Z]+$/;
  return reg.test(str)
}

// 大小写字母
export function validateAlphabets(str) {
  const reg = /^[A-Za-z]+$/;
  return reg.test(str)
}
/*
  value : 要验证的值
  content: 规则限定的值的最大长度(包含最大长度)
 */
export function validateIncludeMaxLength(value, ruleValue) {
  let flag = true;
  let message = '';
  if (value === '' || value === undefined || value === null) {
    return { status: flag, message: message };
  }
  if ((value.trim()).length > ruleValue) {
    flag = false;
    message = "最多可填写" + (ruleValue) + "位"
  }
  return { status: flag, message: message };
}
/*
  value : 要验证的值
  content: 规则限定的值的最大长度(不包含最大长度)
 */
export function validateMaxLength(value, ruleValue) {
  let flag = true;
  let message = '';
  if ((value.trim()).length >= ruleValue) {
    flag = false;
    message = "最多可填写" + (ruleValue - 1) + "位";
  }
  return { status: flag, message: message };
}
/*
  value : 要验证的值
  content: 规则限定的值的最小长度(包含最小长度)
 */
export function validateIncludeMinLength(value, ruleValue) {
  let flag = true;
  let message = '';
  if (value.trim().length < ruleValue) {
    flag = false;
    message = "最少需填写" + ruleValue + "位";
  }
  return { status: flag, message: message };
}
/*
  value : 要验证的值
  content: 规则限定的值的最小长度(包含最小长度)
 */
export function validateMinLength(value, ruleValue) {
  let flag = true;
  let message = '';
  if (value.trim().length <= ruleValue) {
    flag = false;
    message = "最少需填写" + (ruleValue + 1) + "位";
  }
  return { status: flag, message: message };
}
/*
  value : 要验证的值
  content: 规则限定的最大值(包含最大值)
 */
export function validateIncludeMaxValue(value, ruleValue) {
  let flag = true;
  let message = '';
  if (Number(value.trim()) > Number(ruleValue)) {
    flag = false;
    message = "最大值为" + Number(ruleValue);
  }
  return { status: flag, message: message };
}
/*
  value : 要验证的值
  content: 规则限定的最大值(不包含最大值)
 */
export function validateMaxValue(value, ruleValue) {
  let flag = true;
  let message = '';
  if (Number(value.trim()) >= Number(ruleValue)) {
    flag = false;
    message = "最大值为" + Number(ruleValue + 1);
  }
  return { status: flag, message: message };
}
/*
  value : 要验证的值
  content: 规则限定的最小值(包含最小值)
 */
export function validateIncludeMinValue(value, ruleValue) {
  let flag = true;
  let message = '';
  if (Number(value.trim()) < Number(ruleValue)) {
    flag = false;
    message = "最小值为" + Number(ruleValue);
  }
  return { status: flag, message: message };
}
/*
  value : 要验证的值
  content: 规则限定的最小值(不包含最小值)
 */
export function validateMinValue(value, ruleValue) {
  let flag = true;
  let message = '';
  if (Number(value.trim()) <= Number(ruleValue)) {
    flag = false;
    message = "最小值为" + Number(rule.ruleValue - 1);
  }
  return { status: flag, message: message };
}
/*
  value :要验证的值
  content: 规则限定的多选或多复杂类型最多能选的个数(包含最大值)
 */
export function validateIncludeMaxInputNumRule(value, ruleValue) {
  let flag = true;
  let message = '';
  if (Number(value) > Number(ruleValue)) {
    flag = false;
    message = "最多可选" + ruleValue + "个";
  }
  return { status: flag, message: message };
}
/*
  value :要验证的值
  从content: 规则限定的多选或多复杂类型最多能选的个数（不包含最大值）
 */
export function validateMaxInputNumRule(value, ruleValue) {
  let flag = true;
  let message = '';
  if (Number(value) >= Number(ruleValue)) {
    flag = false;
    message = "最多可选" + (ruleValue - 1) + "个";
  }
  return { status: flag, message: message };
}
/*
  value :要验证的值
  content: 规则限定的多选或多复杂类型最少能选的个数(包含最小值)
 */
export function validateIncludeMinInputNumRule(value, ruleValue) {
  let flag = true;
  let message = '';
  if (Number(value) < Number(ruleValue)) {
    flag = false;
    message = "最少可选" + ruleValue + "个";
  }
  return { status: flag, message: message };
}
/*
  value :要验证的值
  content: 规则限定的多选或多复杂类型最少能选的个数(不包含最小值)
 */
export function validateMinInputNumRule(value, ruleValue) {
  let flag = true;
  let message = '';
  if (Number(value) <= Number(ruleValue)) {
    flag = false;
    message = "最少可选" + (ruleValue + 1) + "个";
  }
  return { status: flag, message: message };
}
/*
  value : 要验证的值
  content: 值类型是否符合规则标准
 */
export function validateValueType(value, ruleValue) {
  let flag = true;
  let message = '';
  if (ruleValue === 'text') {

  } else if (ruleValue === 'decimal') {
    var reg = new RegExp('[1-9]\d*\.\d*|0\.\d*[1-9]\d*');
    if (!reg.test(value.trim())) {
      flag = false;
      message = "要求必须是小数";
    }
  } else if (ruleValue === 'url') {
    var reg = new RegExp('http://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?');
    if (!reg.test(value.trim())) {
      flag = false;
      message = "要求必须是url";
    }
  }
  return { status: flag, message: message };
}
/*
  value :要验证的值
  content: 规则中的正则表达式
 */
export function validateRegex(value, ruleValue) {
  let reg = new RegExp(ruleValue);
  let flag = true;
  let message = '';
  if (!reg.test(value.trim())) {
    flag = false;
    message = '不符合规范';
  }
  return { status: flag, message: message };
}
/*
  value :要验证的值
  content: 规则中的小数点最多几位
 */
export function validateMaxDecimalDigitsRule(value, ruleValue) {

}
/*
   value :要验证的值
   content: 规则中的小数点最少几位
 */
export function validateMinDecimalDigitsRule(value, ruleValue) {

}
/*
   value :要验证的值
   content ：级联类型的值
 */
export function validateCascadeRule(value, ruleValue) {

}

