I went looking through Raphael.js
\'s source code to find out how he converted RGB values to HSB. I found out the function he did it in and I was in the process
If your JavaScript codebase contains nested ternary statements like the one in question, consider converting the formatting to daisy chained ternary statements instead.
H = (C == 0) // Is C zero?
? null // Then return `null`, else ...
: (V == r) // Is V equal to r?
? (g - b) / C // Then return this value, else ...
: (V == g) // Is V equal to g?
? (b - r) / C + 2 // Then return this value
: (r - g) / C + 4; // Otherwise fall back to this default value
They simply read top to bottom in a straight line, returning a value as soon as they hit a truthy condition or the fallback.
–Nested Ternaries are Great, Eric Elliot