valirator
Version:
Powerful javascript by schema validation tool
26 lines (20 loc) • 625 B
JavaScript
import { isDefined, toString } from '../utils';
/**
*
* @param value
* @param divisibleBy
* @returns {boolean}
*/
export default function divisibleByRule(value, divisibleBy) {
if (!isDefined(value)) {
return true;
}
let multiplier = Math.max(
toString(value - Math.floor(value)).length - 2,
toString(divisibleBy - Math.floor(divisibleBy)).length - 2,
);
multiplier = multiplier > 0 ? Math.pow(10, multiplier) : 1;
return (value * multiplier) % (divisibleBy * multiplier) === 0;
}
divisibleByRule.ruleName = 'divisibleBy';
divisibleByRule.defaultMessage = 'must be divisible by %{expected}';