Can you use macro and TypeNode # has_constant? :
FOO = 1 value = nil {% if @type.has_constant? "FOO" %} value = :foo {% else %} value = :bar {% end %} pp value
Or even better, you can write a short custom macro for this:
macro toplevel_constant_defined?(c) {{ @type.has_constant? c }} end pp toplevel_constant_defined? "FOO" # => true pp toplevel_constant_defined? "BAR" # => false
Note: as mentioned in Jonne Haß , you only need this in advanced macro programming, wherever there is a huge smell of code, regardless of the language used.
source share