Small improvements ideas?

Hello, I would like to know how to shorten these two lines

  1. doit() if my_string && my_string.downcase == ‘hello’
  2. doit() if one_var && (my_string =~ /this_regexp/) == nil

Case 1) is a way to check for my_string beeing nil (would break on
downcase call). But it’s verbose, nothing better ??

Case 2) I want doit beeing call if regexp don’t match. would I use !
(my_string =~ /this_regexp/) but I don’t like using ! because it’s not
very readable and I can’t use not keyword in this case

Thanks

On Wed, Sep 8, 2010 at 5:08 PM, Chris [email protected]
wrote:

Hello, I would like to know how to shorten these two lines

  1. doit() if my_string && my_string.downcase == ‘hello’
  2. doit() if one_var && (my_string =~ /this_regexp/) == nil

Case 1) is a way to check for my_string beeing nil (would break on
downcase call). But it’s verbose, nothing better ??

  1. check out the andand library [http://andand.rubyforge.org/]

doit() if my_string.andand.downcase == “hello”

Case 2) I want doit beeing call if regexp don’t match. would I use !
(my_string =~ /this_regexp/) but I don’t like using ! because it’s not
very readable and I can’t use not keyword in this case

mystring !~ /this_regexp/

martin

On Wednesday 08 September 2010, Chris wrote:

|Hello, I would like to know how to shorten these two lines
|
|1) doit() if my_string && my_string.downcase == ‘hello’
|2) doit() if one_var && (my_string =~ /this_regexp/) == nil
|
|Case 1) is a way to check for my_string beeing nil (would break on
|downcase call). But it’s verbose, nothing better ??
You can do

if (my_string || ‘’).downcase == ‘hello’

This way, if my_string is nil, the parentheses will evaluate to ‘’ which
is a
string and will always be different from ‘hello’

|Case 2) I want doit beeing call if regexp don’t match. would I use !
|(my_string =~ /this_regexp/) but I don’t like using ! because it’s not
|very readable and I can’t use not keyword in this case

I think you can:

if one_var && (not(my_string =~ /this_regexp/))

|Thanks

I hope this helps

Stefano

Christophe G. wrote:

Hello, I would like to know how to shorten these two lines

  1. doit() if my_string && my_string.downcase == ‘hello’

doit if /\Ahello\z/i =~ my_string

  1. doit() if one_var && (my_string =~ /this_regexp/) == nil

Case 2) I want doit beeing call if regexp don’t match. would I use !
(my_string =~ /this_regexp/) but I don’t like using ! because it’s not
very readable and I can’t use not keyword in this case

I’m not sure what “one_var” is. If you meant “my_string”, then note that
you can use !~ as the inverse of =~

doit if /this_regexp/ !~ my_string

or simply:

doit unless /this_regexp/ =~ my_string

On Wed, Sep 8, 2010 at 5:50 PM, Robert K.
[email protected] wrote:

On Wed, Sep 8, 2010 at 1:38 PM, Chris [email protected] wrote:

Hello, I would like to know how to shorten these two lines

  1. doit() if my_string && my_string.downcase == ‘hello’

doit if /\Ahello\z/i =~ my_string

ruby-1.9.2-p0 > /hello/ =~ nil
=> nil

wow, learnt something today!

martin

On Wed, Sep 8, 2010 at 1:38 PM, Chris [email protected]
wrote:

Hello, I would like to know how to shorten these two lines

  1. doit() if my_string && my_string.downcase == ‘hello’

doit if /\Ahello\z/i =~ my_string

  1. doit() if one_var && (my_string =~ /this_regexp/) == nil

doit if one_var && /rx/ !~ my_string

Case 1) is a way to check for my_string beeing nil (would break on
downcase call). But it’s verbose, nothing better ??

Case 2) I want doit beeing call if regexp don’t match. would I use !
(my_string =~ /this_regexp/) but I don’t like using ! because it’s not
very readable and I can’t use not keyword in this case

Kind regards

robert

Thanks for your replies, I was totally unware of !~ !!!