Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
import { convertRgbaToHex } from '../../../bin/frameworks/string/convertRgbaToHex'; | ||
|
||
describe('Failure cases', () => { | ||
test('It should throw an error if no argument is provided', () => { | ||
expect(() => { | ||
// @ts-ignore | ||
convertRgbaToHex(); | ||
}).toThrow(); | ||
}); | ||
}); | ||
|
||
describe('Success cases', () => { | ||
test('It should correctly return a hexadecimal color value from an RGBA color value', () => { | ||
expect(convertRgbaToHex('rgba(7,75,114,1)')).toBe('#074b72'); | ||
}); | ||
|
||
test('It should correctly return a hexadecimal color value from an RGB color value, defaulting to alpha 1', () => { | ||
expect(convertRgbaToHex('rgba(7,75,114)')).toBe('#074b72'); | ||
}); | ||
}); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
import { ErrorConvertRgbaToHex } from '../../frameworks/errors/errors'; | ||
|
||
// @see https://stackoverflow.com/questions/15898740/how-to-convert-rgba-to-a-transparency-adjusted-hex | ||
|
||
export function convertRgbaToHex(color: string): string { | ||
if (!color) throw new Error(ErrorConvertRgbaToHex); | ||
|
||
const VALUES: any = color | ||
.replace(/rgba?\(/, '') | ||
.replace(/\)/, '') | ||
.replace(/[\s+]/g, '') | ||
.split(','); | ||
|
||
const A: number = parseFloat(VALUES[3] || 1), | ||
R = Math.floor(A * parseInt(VALUES[0]) + (1 - A) * 255), | ||
G = Math.floor(A * parseInt(VALUES[1]) + (1 - A) * 255), | ||
B = Math.floor(A * parseInt(VALUES[2]) + (1 - A) * 255); | ||
|
||
return ( | ||
'#' + | ||
('0' + R.toString(16)).slice(-2) + | ||
('0' + G.toString(16)).slice(-2) + | ||
('0' + B.toString(16)).slice(-2) | ||
); | ||
} |
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.