linear-gradient-parser
Version:
Parses a SVG linear gradient string / parsed JSON into css background image property
27 lines (21 loc) • 663 B
JavaScript
export const rgbRegExp = new RegExp(/\d+/g);
const formatNumber = (num) => Number(num);
const isValidRgb = (r, g, b, a) => {
return [r, g ,b].every((i) => i >= 0 && i <= 255) && (!a || (a >= 0 && a <= 1));
};
/**
* Parses a rba / rgba string, ensure it's validness
* @param {String} rgbString
* @returns {Object}
*/
const parseRgb = (rgbString) => {
const [r, g, b, ...a] = rgbString.match(rgbRegExp);
const opacity = a.join('.') || 1;
return isValidRgb(r, g, b, opacity) ? {
r: formatNumber(r),
g: formatNumber(g),
b: formatNumber(b),
a: formatNumber(opacity)
} : undefined;
};
export default parseRgb;