Hi all
Is there an equivalent to the || thing?
var = nil || “blah”
=> “blah”
var = “” || “blah”
=> “”
I want something like that:
var = nil ||| “blah”
=> “blah”
var = “” ||| “blah”
=> “blah”
Is there something like that in Rails? 
Thanks
Josh
Hi all
Is there an equivalent to the || thing?
var = nil || “blah”
var = “” || “blah”
I want something like that:
var = nil ||| “blah”
var = “” ||| “blah”
Is there something like that in Rails? 
Thanks
Josh
To my knowledge, there is not.
var = “blah” if var.blank?
will however do what you want
On Thu, Aug 28, 2008 at 12:12 AM, Joshua M.
[email protected] wrote:
var = nil ||| “blah”
=> “blah”
var = “” ||| “blah”
=> “blah”
This is logically equivalent, though not as pretty
var = a.blank? ? b : a
On Thu, Aug 28, 2008 at 12:32 AM, Joshua M.
[email protected] wrote:
Thanks. But isn’t there a way to extend ruby so it can handle “|||”?
In Ruby some “operators” are syntactic sugar for methods, for example
“<<”, or “+”. But there’s no way to go in the other direction. That
is, you cannot define a method in Object named “|||” and tell Ruby it
should be parsed as an operator of such and such arity, etc.
Xavier N. wrote:
On Thu, Aug 28, 2008 at 12:12 AM, Joshua M.
[email protected] wrote:var = nil ||| “blah”
=> “blah”
var = “” ||| “blah”
=> “blah”
This is logically equivalent, though not as pretty
var = a.blank? ? b : a
Thanks. But isn’t there a way to extend ruby so it can handle “|||”?
Xavier N. wrote:
On Thu, Aug 28, 2008 at 12:32 AM, Joshua M.
[email protected] wrote:Thanks. But isn’t there a way to extend ruby so it can handle “|||”?
In Ruby some “operators” are syntactic sugar for methods, for example
“<<”, or “+”. But there’s no way to go in the other direction. That
is, you cannot define a method in Object named “|||” and tell Ruby it
should be parsed as an operator of such and such arity, etc.
What a pitty… Thanks though!
On Thu, Aug 28, 2008 at 12:57 AM, Joshua M.
[email protected] wrote:
What a pitty… Thanks though!
Of course if a method is good for you this is doable
class Object
def bor(other)
blank? ? other : self
end
end
nil.bor("blah") # => "blah"
''.bor({}).bor("blah") # => "blah"
[].bor("blah").bor(true) # => "blah"
Thanks guys, I just found the blank? method. 
On Aug 27, 2008, at 6:12 PM, Joshua M. wrote:
I want something like that:
Josh
Like the Numeric#nonzero? that is useful in chained comparisons, you
can define nonblank? to be similar and get this effect:
class String
def nonblank?
self unless blank?
end
end
class NilClass
def nonblank?
self
end
def nonzero?
self
end
end
Since you’re already Rails, you’re already ActiveSupport and blank?
will be well defined.
irb> nil.nonblank? || “blah”
=> “blah”
irb> “”.nonblank? || “blah”
=> “blah”
irb> “foo”.nonblank? || “blah”
=> “foo”
-Rob
In Rails you can now do this:
params[:state].presence || params[:country].presence || ‘US’
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs