A somewhat painful triple-nested ternary operator
if-statement, javascript, ternary-operator
Solution
I think you can have this to avoid the deep nesting:
var H
if(C == 0){
H = null;
}
else if(V == r){
H = (g - b) / C;
}
else if (V == g){
H = (b - r) / C + 2;
}
else {
H = (r - g) / C + 4;
}
Problem
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 of converting it to Python when I bumped into this nice triple-nested ternary operator: ``` H = (C == 0 ? null : V == r ? (g - b) / C : V == g ? (b - r) / C + 2 : (r - g) / C + 4 ); ``` It threw me for a loop because Python doesn't have the same kind of ternary operator that Javascript does. I spent a while looking over it and eventually hashed this somewhat saner code (using only if/else) out of it: ``` if (C == 0) { H = null; } else { if(V == r) { H = (g - b) / C; } else { if(V == g) { H = (b - r) / C + 2; } else { H = (r - g) / C + 4; } } } ``` Was my interpretation correct? I'm only asking this because if it isn't correct, I'm faced with a lot of debugging. So. Did I "get it"?