wrote:
print( config.color? ) --> should print false not nil
This is the big potential drawback I can see for my _SAFE approach. While the syntax is shared with CoffeeScript's existential operator, the semantics are different. As I'm defining it, ? is a utility for safe table navigation -- it shouldn't
be used to check for existence. "config.color?" is prettymuch guaranteed to never be nil or false, as it's just shorthand for "(config.color or _SAFE)".
You could have the patch do this:
function __check(expr)
if type(expr)=='boolean' then
return expr
else
return _SAFE
end
end
and convert:
expr? to (expr or __check(expr))
Or make the function this:
function __check(expr)
if expr == nil then return _SAFE else return expr end
end
Probably faster.
-hadriel
|